debian:server-install-d8

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

$ apt install php5-cgi php5-cli php5-common php5-curl php5-dev php5-fpm php5-gd php5-intl php5-json php5-mcrypt php5-memcache php5-memcached php5-mongo php5-mysql php5-readline php5-redis php5-sqlite php5-xsl php5-geoip php5-ssh2
# nano debian-install.sh
# bash ./debian-install.sh

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

#!/bin/sh
distrib="jessie"
hostname=""
default_pass=""
 
check_result() {
    if [ $1 -ne 0 ]; then
        echo "Error: $2"
        exit $1
    fi
}
 
promptyn () 
{
	while true; do
	    read -p "$1" yn
	    case $yn in
	        [Yy]* ) return 0;;
	        [Nn]* ) return 1;;
	        * ) echo "Please answer yes or no.";;
	    esac
	done
}
 
prompt () 
{
	while read -p "$1" variable && [[ -z "$variable" ]] ; do
		echo "$1"
	done
 
	echo $variable;
}
 
installpkg()
{
 for pkg in $@
 do
  if [ $(dpkg-query -W -f='${Status}' $pkg 2>/dev/null | grep -c "ok installed") -eq 0 ];
  then
    echo "Install $pkg ..."
    apt-get install -y $pkg;
  fi
  done
}
 
set_default_value() {
    eval variable=\$$1
    if [ -z "$variable" ]; then
        eval $1=$2
    fi
    if [ "$variable" != 'yes' ] && [ "$variable" != 'no' ]; then
        eval $1=$2
    fi
}
 
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 sudo nano rename debconf-utils pwgen
 
default_pass=$(pwgen -s 7 1)
 
hostname=$(prompt "Enter the Internet domain name (e.g. nixcraft.com) : ");
 
if promptyn "Do you wish to install default programs? [mc, git, etc] " ; then
 
	echo -e "Install default programs";
	installpkg mc git mercurial bash-completion bzip2 numactl dnsutils -y
 
fi
 
if promptyn "Do you wish to install developers programs? [gcc, g++, etc] "; 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 clang cmake -y
 
fi
 
if promptyn "Do you wish to install system monitors? [htop, iptraf] "; 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 -y
	cp /usr/share/sysvinit/inittab /etc/inittab
 
fi
 
if promptyn "Do you wish to install FTP Server (PRO-Ftpd)? "; then
	installpkg proftpd
fi	 
 
if promptyn "Do you wish to install MySql? "; then
 
	installpkg software-properties-common
 
	if promptyn "Do you wish to install MySql (Percona) (y) or Mariadb (n)?"; then
 
		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_pass
		echo -e "[client]\npassword='$f'\n" > /root/.my.cnf
		chmod 600 /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
		# for sid		
		apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
		# for jessie
		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
		service mysql start
		check_result $? "mysql start failed"
 
		mysqladmin -u root password $default_pass
		echo -e "[client]\npassword='$default_pass'\n" > /root/.my.cnf
		chmod 600 /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 -
 
	php_ver=$(prompt "Please select php version like 5, 6.0, 7.0, 7.1: ")
 
	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 php${php_ver}-fpm stop >/dev/null 2>&1
	installpkg -u -t stable php${php_ver} php${php_ver}-dev php${php_ver}-sqlite php${php_ver}-mcrypt php${php_ver}-xsl php${php_ver}-cli php${php_ver}-common php${php_ver}-mysql php${php_ver}-gd php${php_ver}-fpm \
	        php${php_ver}-cgi php-pear php${php_ver}-curl php${php_ver}-xcache php5-redis -y
	echo "cgi.fix_pathinfo = 0" >> /etc/php${php_ver}/fpm/php.ini
	service php${php_ver}-fpm start
	check_result $? "php${php_ver}-fpm start failed"
 
	echo -e "Install PHP-FPM"
	chkconfig php${php_ver}-fpm on
	set_default_value "php${php_ver}-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 -y
		echo -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
	chmod 640 /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' ]; then
		fline=$(cat /etc/fail2ban/jail.local |grep -n exim-iptables -A 2)
		fline=$(echo "$fline" |grep enabled |tail -n1 |cut -f 1 -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 -y
	git 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
#
 
#search in history with arrows
bind '"\e[A": history-search-backward' 2>/dev/null
bind '"\e[B": history-search-forward' 2>/dev/null
 
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 update
apt-get upgrade
apt-get autoremove -y
  • debian/server-install-d8.txt
  • Последнее изменение: 2018/06/17 23:33
  • 5.9.158.195