Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Скрипт установки для Debian 8

$
0
0

Скрипт установки для Debian 8

Описание

  • Автоматическая установка и обновление зависимых пакетов
  • Автоматическая устанока и настройка серверов GIT, PHP 5.6, PHP-FPM, Nginx, Redis, MySQL (mariadb), RabbitMQ, Exim4
  • Автоматическое конфигурирование пакетов
  • Установка автоматического бекапа БД MySQL (https://github.com/Mirocow/mysql_utils.git)
  • Устанока скрипта для создания сайта (https://github.com/Mirocow/site-create)

Установка

# nano debian-install.sh
# bash ./debian-install.sh

В debian-install.sh вставляем ниже следующий текст и нащимаем Ctrl-x, затем y (сохраняем и выходим)

#!/bin/shdistrib="jessie"hostname=""default_pass="" 
check_result(){if[$1-ne0]; thenecho"Error: $2"exit$1fi} 
promptyn (){whiletrue; doread-p"$1" yn
	    case$ynin[Yy]*)return0;;[Nn]*)return1;;*)echo"Please answer yes or no.";;esacdone} 
installpkg(){for pkg in $@doif[ $(dpkg-query -W-f='${Status}'$pkg2>/dev/null |grep-c"ok installed")-eq0];
  thenecho"Install $pkg ..."apt-get install-y$pkg;
  fidone} 
set_default_value(){evalvariable=\$$1if[-z"$variable"]; theneval$1=$2fiif["$variable"!= 'yes']&&["$variable"!= 'no']; theneval$1=$2fi} 
if["x$(id -u)"!= 'x0']; then
    check_result 1"Script can be run executed only by root"fi 
apt-get update&&apt-get upgrade-y
installpkg apt apt-utils wget chkconfig sudonano rename debconf-utils pwgen
 
default_pass=$(pwgen -s71) 
whileread-p'Enter the Internet domain name (e.g. nixcraft.com) : 'hostname&&[[-z"$hostname"]] ; doecho"No, please, no blank hostname!"done 
if promptyn "Do you wish to install default programs? " ; then 
	echo-e"Install default programs";
	installpkg mc git mercurial bash-completion bzip2 numactl -y 
fi 
if promptyn "Do you wish to install developers programs? "; then 
	echo-e"Install development soft";
	installpkg checkinstall gcc build-essential g++ libboost-dev libboost-program-options-dev libboost-all-dev libevent-dev uuid-dev -y 
fi 
if promptyn "Do you wish to install system monitors? "; then 
	echo-e"Install system monitors";
	installpkg htop iptraf jnettop iftop -y 
fi 
if promptyn "Do you wish to uninstall systemd and install systemv? "; then 
	installpkg sysvinit-core sysvinit-utils -ycp/usr/share/sysvinit/inittab /etc/inittab
 
fi 
if promptyn "Do you wish to install MySql? "; then 
	if promptyn "Do you wish to install MySql (Percona) (y) or Mariadb (n)?"; then 
		installpkg software-properties-common
		apt-key adv--recv-keys--keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
 
		echo"
		# Percona
		#deb http://repo.percona.com/apt ${distrib} testing
		#deb-src http://repo.percona.com/apt ${distrib} testing
		"> etc/apt/sources.list.d/mysql.list
		apt-get update 
		installpkg percona-server-server-5.7 percona-server-client-5.7 percona-server-common-5.7 percona-toolkit -y
		sevice mysql start
		check_result $?"mysql start failed" 
		mysqladmin -u root password $default_passecho-e"[client]\npassword='$f'\n">/root/.my.cnf
		chmod600/root/.my.cnf
                mysql -e"DELETE FROM mysql.user WHERE User=''"
                mysql -e"DROP DATABASE test">/dev/null 2>&1
                mysql -e"DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
                mysql -e"DELETE FROM mysql.user WHERE user='' or password='';"
                mysql -e"FLUSH PRIVILEGES" 
		echo-e"Install MySQL (Percona)"
		chkconfig mysql on
		set_default_value 'mysql''true' 
	else 
		installpkg software-properties-common
		apt-key adv--recv-keys--keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
 
		echo"
		# MariaDB 10.1 repository list - created 2016-08-05 19:23 UTC
		# http://downloads.mariadb.org/mariadb/repositories/
		deb [arch=amd64,i386] http://mirror.timeweb.ru/mariadb/repo/10.1/debian ${distrib} main
		deb-src http://mirror.timeweb.ru/mariadb/repo/10.1/debian ${distrib} main
		"> etc/apt/sources.list.d/mysql.list
		apt-get update 
		installpkg mariadb-server mariadb-client mariadb-common mytop -y
		sevice mysql start
		check_result $?"mysql start failed" 
		mysqladmin -u root password $default_passecho-e"[client]\npassword='$default_pass'\n">/root/.my.cnf
		chmod600/root/.my.cnf
                mysql -e"DELETE FROM mysql.user WHERE User=''"
                mysql -e"DROP DATABASE test">/dev/null 2>&1
                mysql -e"DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
                mysql -e"DELETE FROM mysql.user WHERE user='' or password='';"
                mysql -e"FLUSH PRIVILEGES" 
		echo-e"Install MySQL (Mariadb)"
		chkconfig mysql on
		set_default_value 'mysql''true' 
  fi 
fi 
if promptyn "Do you wish to install Nginx? "; then 
	wget-q http://nginx.org/keys/nginx_signing.key -O-|apt-key add -
 
	echo"
	# nginx
	deb http://nginx.org/packages/debian ${distrib} nginx
	deb-src http://nginx.org/packages/debian ${distrib} nginx
	"> etc/apt/sources.list.d/nginx.list
	apt-get update 
	service nginx stop >/dev/null 2>&1
	installpkg nginx -y
	service nginx start
	check_result $?"nginx start failed" 
	echo-e"Install Nginx"
	chkconfig nginx on
	set_default_value 'nginx''true' 
fi 
if promptyn "Do you wish to install PHP-FPM? "; then 
	wget-q http://www.dotdeb.org/dotdeb.gpg -O-|apt-key add -
 
	echo"
	# php-fpm dotdeb
	deb http://packages.dotdeb.org ${distrib} all
	deb-src http://packages.dotdeb.org ${distrib} all
	"> etc/apt/sources.list.d/php-fpm.list
	apt-get update 
	service php5-fpm stop >/dev/null 2>&1
	installpkg -u-t stable php5 php5-dev php5-sqlite php5-mcrypt php5-xsl php5-cli php5-common php5-mysql php5-gd php5-fpm \
	        php5-cgi php-pear php5-curl php5-xcache php5-redis -yecho"cgi.fix_pathinfo = 0">>/etc/php5/fpm/php.ini
	service php5-fpm start
	check_result $?"php5-fpm start failed" 
	echo-e"Install PHP-FPM"
	chkconfig php5-fpm on
	set_default_value 'php5-fpm''true' 
fi 
if promptyn "Do you wish to install RabbitMQ? "; then 
	wget-q http://packages.erlang-solutions.com/debian/erlang_solutions.asc -O-|apt-key add -
	wget-q https://www.rabbitmq.com/rabbitmq-signing-key-public.asc -O-|apt-key add -
 
	echo"
	# Erlang
	deb http://packages.erlang-solutions.com/debian ${distrib} contrib
 
	# RabbitMq
	deb http://www.rabbitmq.com/debian/ testing main
	"> etc/apt/sources.list.d/rabbitmq.list
	apt-get update 
	service rabbitmq-server start
	installpkg rabbitmq-server -y
	check_result $?"rabbitmq-server start failed" 
	echo-e"Install RabbitMQ"
	chkconfig rabbitmq-server on
	set_default_value 'rabbitmq-server''true' 
fi 
if promptyn "Do you wish to install Redis server? "; then 
	installpkg redis-server -y
	service redis-server start
	check_result $?"redis-server start failed" 
	echo-e"Install Redis"
	chkconfig redis-server on
	set_default_value 'redis-server''true' 
fi 
if promptyn "Do you wish to install DNS server? "; then 
	if promptyn "Do you wish to install bind (y) or pdns (n) server?"; then
		installpkg bind9 bind9utils bind9-libs -y
		service bind9 start
		echo-e"Install DNS Server"
		set_default_value 'bind''true'else
		installpkg pdns-server pdns-backend-mysql pdns-recursor -yecho-e"Install DNS Server"
		set_default_value 'pdns''true'fi 
fi 
if promptyn "Do you wish to install Shorewall? "; then 
	installpkg shorewall -y 
fi 
if promptyn "Do you wish to install Postfix/Exim4? "; then 
	installpkg exim4-daemon-heavy mailutils postfix -y
	service exim4 stop >/dev/null 2>&1
	gpasswd -a Debian-exim mail
 
	touch/etc/exim4/exim4.conf.template
	touch/etc/exim4/dnsbl.conf
	touch/etc/exim4/spam-blocks.conf
	touch/etc/exim4/white-blocks.conf
	chmod640/etc/exim4/exim4.conf.template
	rm-rf/etc/exim4/domains
        mkdir-p/etc/exim4/domains
 
        rm-f/etc/alternatives/mta
        ln-s/usr/sbin/exim4 /etc/alternatives/mta
        service sendmail stop >/dev/null 2>&1 
        service postfix stop >/dev/null 2>&1
        service exim4 start
 
        check_result $?"exim4 start failed"
        chkconfig exim4 on
	set_default_value 'exim''true' 
fi 
if promptyn "Do you wish to install Dovecot? "; then 
        gpasswd -a dovecot mail
        chown-R root:root /etc/dovecot*
	service dovecot stop >/dev/null 2>&1
	installpkg dovecot-imapd dovecot-pop3d dovecot-common -y
	service dovecot start
 
	check_result $?"dovecot start failed"
        chkconfig dovecot on
	set_default_value 'dovecot''true' 
fi 
if promptyn "Do you wish to install fail2ban? "; then 
	installpkg fail2ban -y 
        if["$exim" = 'no']; thenfline=$(cat/etc/fail2ban/jail.local |grep-n exim-iptables -A2)fline=$(echo"$fline"|grep enabled |tail-n1|cut-f1-d -)sed-i"${fline}s/true/false/"/etc/fail2ban/jail.local
        fi 
        chkconfig fail2ban on
        service fail2ban start
        check_result $?"fail2ban start failed" 
fi 
if promptyn "Do you wish to install Mysql backup system? "; then 
	echo-e"Install MySql backup system";
 
	apt-get update
	installpkg git-ygit clone https://github.com/Mirocow/mysql_utils.git /root/mysql_utils
 
	echo'
 
	# Run MySql backup system
	25 6    * * * root /bin/bash  ~/mysql_utils/backup.sh --dir="/var/backups/mysql" --compress=bzip2 --exclude="mysql" --lifetime="3 day ago"
	'>>/etc/crontab	
 
fi 
if promptyn "Do you wish to install create site script? "; then 
	echo-e"Install create site scriptm";
	wget https://raw.githubusercontent.com/Mirocow/site-create/master/site-create.sh -O/root/site-create.sh
 
fi 
rm/var/cache/apt/archives/*.deb -f 
if promptyn "Do you wish to set default shell settings? "; then 
	echo-e"Base system configure"echo'
 
	#
	# My config
	#
	alias nano="nano -u -w "
	alias ls="ls --color=always"
	alias grep='grep--color=auto'
	alias fgrep='fgrep--color=auto'
	alias egrep='egrep--color=auto'
	HISTSIZE=50000
	HISTFILESIZE=50000
	export HISTCONTROL=ignoreboth
	shopt -s cmdhist
	shopt -s histappend
	shopt -s checkwinsize
	shopt -s extglob
	ulimit -c 0
 
	#
	# Functions
	#
 
	#-----------------------------------
	# Функции работы с историей комманд
	#-----------------------------------
 
	function h(){
	        history| grep "$@";
	}
 
	# Включение магии bash
	if [ -f /etc/bash_completion ]; then
	. /etc/bash_completion
	fi
 
	'>> ~/.bashrc
	source ~/.bashrc
 
	echo'
	set tabsize "2"
	'>> ~/.nanorc		
fi 
apt-get updateapt-get upgrade

Viewing all articles
Browse latest Browse all 1318