Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
debian:server-install-d8 [2016/08/07 17:14] – [Установка] mirocowdebian:server-install-d8 [2018/06/17 20:33] (текущий) – ↷ Операцией перемещения обновлены ссылки 5.9.158.195
Строка 3: Строка 3:
 ====== Скрипт установки для Debian 8 ====== ====== Скрипт установки для Debian 8 ======
  
 +<code bash>
 +$ 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
 +</code>
 +
 +  * [[develop:php:php|Установка различных версий PHP]]
 ===== Описание ===== ===== Описание =====
  
-  * Автоатическая установка и обновление зависимых пакетов+  * Автоматическая установка и обновление зависимых пакетов
   * Автоматическая устанока и настройка серверов GIT, PHP 5.6, PHP-FPM, Nginx, Redis, MySQL (mariadb), RabbitMQ, Exim4   * Автоматическая устанока и настройка серверов GIT, PHP 5.6, PHP-FPM, Nginx, Redis, MySQL (mariadb), RabbitMQ, Exim4
   * Автоматическое конфигурирование пакетов   * Автоматическое конфигурирование пакетов
   * Установка автоматического бекапа БД MySQL (https://github.com/Mirocow/mysql_utils.git)   * Установка автоматического бекапа БД MySQL (https://github.com/Mirocow/mysql_utils.git)
   * Устанока скрипта для создания сайта (https://github.com/Mirocow/site-create)   * Устанока скрипта для создания сайта (https://github.com/Mirocow/site-create)
 +  * [[system:exim4]]
  
 ===== Установка ===== ===== Установка =====
Строка 25: Строка 31:
 distrib="jessie" distrib="jessie"
 hostname="" hostname=""
 +default_pass=""
 +
 +check_result() {
 +    if [ $1 -ne 0 ]; then
 +        echo "Error: $2"
 +        exit $1
 +    fi
 +}
  
 promptyn ()  promptyn () 
Строка 36: Строка 50:
      esac      esac
  done  done
 +}
 +
 +prompt () 
 +{
 + while read -p "$1" variable && [[ -z "$variable" ]] ; do
 + echo "$1"
 + done
 +
 + echo $variable;
 } }
  
Строка 44: Строка 67:
   if [ $(dpkg-query -W -f='${Status}' $pkg 2>/dev/null | grep -c "ok installed") -eq 0 ];   if [ $(dpkg-query -W -f='${Status}' $pkg 2>/dev/null | grep -c "ok installed") -eq 0 ];
   then   then
- echo "Install $pkg ..."+    echo "Install $pkg ..."
     apt-get install -y $pkg;     apt-get install -y $pkg;
   fi   fi
Строка 50: Строка 73:
 } }
  
-replacetext() +set_default_value() { 
-+    eval variable=\$$1 
- sed -ie "s/$1/$2/" $3+    if [ -"$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 apt-get update && apt-get upgrade -y
-installpkg apt apt-utils wget chkconfig sudo nano rename debconf-utils+installpkg apt apt-utils wget chkconfig sudo nano rename debconf-utils pwgen 
 + 
 +default_pass=$(pwgen -s 7 1)
  
-while read -p 'Enter the Internet domain name (e.g. nixcraft.com) : ' hostname && [[ -z "$hostname" ]] do +hostname=$(prompt "Enter the Internet domain name (e.g. nixcraft.com) : ");
- echo "No, please, no blank hostname!" +
-done+
  
-if promptyn "Do you wish to install default programs? " ; then+if promptyn "Do you wish to install default programs? [mc, git, etc] " ; then
   
  echo -e "Install default programs";  echo -e "Install default programs";
- installpkg mc git mercurial bash-completion bzip2 numactl -y+ installpkg mc git mercurial bash-completion bzip2 numactl dnsutils -y
  
 fi fi
  
-if promptyn "Do you wish to install developers programs? "; then+if promptyn "Do you wish to install developers programs? [gcc, g++, etc] "; then
   
  echo -e "Install development soft";  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+ installpkg checkinstall gcc build-essential g++ libboost-dev libboost-program-options-dev libboost-all-dev libevent-dev uuid-dev clang cmake -y
  
 fi fi
  
-if promptyn "Do you wish to install system monitors? "; then+if promptyn "Do you wish to install system monitors? [htop, iptraf] "; then
   
  echo -e "Install system monitors";  echo -e "Install system monitors";
Строка 88: Строка 120:
  cp /usr/share/sysvinit/inittab /etc/inittab  cp /usr/share/sysvinit/inittab /etc/inittab
   
 +fi
 +
 +if promptyn "Do you wish to install FTP Server (PRO-Ftpd)? "; then
 + installpkg proftpd
 fi   fi  
  
 if promptyn "Do you wish to install MySql? "; then 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  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  apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
  
Строка 101: Строка 138:
  #deb http://repo.percona.com/apt ${distrib} testing  #deb http://repo.percona.com/apt ${distrib} testing
  #deb-src http://repo.percona.com/apt ${distrib} testing  #deb-src http://repo.percona.com/apt ${distrib} testing
- " > etc/apt/sources.list.d/mysql.list+ " > /etc/apt/sources.list.d/mysql.list
  apt-get update  apt-get update
   
- echo -e "Install MySQL (Percona)" 
  installpkg percona-server-server-5.7 percona-server-client-5.7 percona-server-common-5.7 percona-toolkit -y  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  chkconfig mysql on
 + set_default_value 'mysql' 'true'
   
  else  else
-  + # for sid  
- installpkg software-properties-common+ apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8 
 + # for jessie
  apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db  apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
  
Строка 118: Строка 169:
  deb [arch=amd64,i386] http://mirror.timeweb.ru/mariadb/repo/10.1/debian ${distrib} main  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  deb-src http://mirror.timeweb.ru/mariadb/repo/10.1/debian ${distrib} main
- " > etc/apt/sources.list.d/mysql.list+ " > /etc/apt/sources.list.d/mysql.list
  apt-get update  apt-get update
   
- echo -e "Install MySQL (Mariadb)" 
  installpkg mariadb-server mariadb-client mariadb-common mytop -y  installpkg mariadb-server mariadb-client mariadb-common mytop -y
- chkconfig mysql on + 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>&
 + 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
Строка 137: Строка 201:
  deb http://nginx.org/packages/debian ${distrib} nginx  deb http://nginx.org/packages/debian ${distrib} nginx
  deb-src http://nginx.org/packages/debian ${distrib} nginx  deb-src http://nginx.org/packages/debian ${distrib} nginx
- " > etc/apt/sources.list.d/nginx.list+ " > /etc/apt/sources.list.d/nginx.list
  apt-get update  apt-get update
   
- echo -e "Install Nginx"+ service nginx stop > /dev/null 2>&1
  installpkg nginx -y  installpkg nginx -y
- chkconfig nginx on + service nginx start 
 + check_result $? "nginx start failed" 
 + 
 + echo -e "Install Nginx" 
 + chkconfig nginx on 
 + set_default_value 'nginx' 'true'
  
 fi fi
Строка 149: Строка 218:
   
  wget -q http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add -  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 "  echo "
Строка 154: Строка 225:
  deb http://packages.dotdeb.org ${distrib} all  deb http://packages.dotdeb.org ${distrib} all
  deb-src http://packages.dotdeb.org ${distrib} all  deb-src http://packages.dotdeb.org ${distrib} all
- " > etc/apt/sources.list.d/php-fpm.list+ " > /etc/apt/sources.list.d/php-fpm.list
  apt-get update  apt-get update
   
- echo -e "+ Install PHP-FPM" + service php${php_ver}-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 \ + 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 \ 
-         php5-cgi php-pear php5-curl php5-xcache php5-redis -y +         php${php_ver}-cgi php-pear php${php_ver}-curl php${php_ver}-xcache php5-redis -y 
- echo "cgi.fix_pathinfo = 0" >> /etc/php5/fpm/php.ini + echo "cgi.fix_pathinfo = 0" >> /etc/php${php_ver}/fpm/php.ini 
- chkconfig php5-fpm on+ 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 fi
Строка 176: Строка 252:
  # RabbitMq  # RabbitMq
  deb http://www.rabbitmq.com/debian/ testing main  deb http://www.rabbitmq.com/debian/ testing main
- " > etc/apt/sources.list.d/rabbitmq.list+ " > /etc/apt/sources.list.d/rabbitmq.list
  apt-get update  apt-get update
   
- echo -e "Install RabbitMQ"+ service rabbitmq-server start
  installpkg rabbitmq-server -y  installpkg rabbitmq-server -y
 + check_result $? "rabbitmq-server start failed"
 +
 + echo -e "Install RabbitMQ"
  chkconfig rabbitmq-server on  chkconfig rabbitmq-server on
 + set_default_value 'rabbitmq-server' 'true'
  
 fi fi
Строка 187: Строка 267:
 if promptyn "Do you wish to install Redis server? "; then if promptyn "Do you wish to install Redis server? "; then
   
- echo -e "## Install Redis ##" 
  installpkg redis-server -y  installpkg redis-server -y
- chkconfig redis-server on  + 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  fi
  
 if promptyn "Do you wish to install DNS server? "; then if promptyn "Do you wish to install DNS server? "; then
-  
- echo -e "Install DNS Server" 
   
  if promptyn "Do you wish to install bind (y) or pdns (n) server?"; then  if promptyn "Do you wish to install bind (y) or pdns (n) server?"; then
  installpkg bind9 bind9utils bind9-libs -y  installpkg bind9 bind9utils bind9-libs -y
 + service bind9 start
 + echo -e "Install DNS Server"
 + set_default_value 'bind' 'true'
  else  else
  installpkg pdns-server pdns-backend-mysql pdns-recursor -y  installpkg pdns-server pdns-backend-mysql pdns-recursor -y
 + echo -e "Install DNS Server"
 + set_default_value 'pdns' 'true'
  fi  fi
   
Строка 209: Строка 296:
  installpkg shorewall -y  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>&
 + 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 fi
  
Строка 214: Строка 341:
   
  installpkg fail2ban -y  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 fi
Строка 236: Строка 373:
   
  echo -e "Install create site scriptm";  echo -e "Install create site scriptm";
-  
  wget https://raw.githubusercontent.com/Mirocow/site-create/master/site-create.sh -O /root/site-create.sh  wget https://raw.githubusercontent.com/Mirocow/site-create/master/site-create.sh -O /root/site-create.sh
  
Строка 245: Строка 381:
 if promptyn "Do you wish to set default shell settings? "; then if promptyn "Do you wish to set default shell settings? "; then
  
 +echo -e "Base system configure"
 +echo '
  
- #echo -e "## Install DNS Server ##" +
- #apt-get install bind9 bind9utils bind9-libs -y +My config 
- #apt-get install pdns-server pdns-backend-mysql pdns-recursor -y+#
  
- #echo *Clearing downloaded packages after install!*" +#search in history with arrows 
- #rm /var/cache/apt/archives/*.deb -f+bind '"\e[A": history-search-backward' 2>/dev/null 
 +bind '"\e[B": history-search-forward' 2>/dev/null
  
- echo -"Base system configure+alias nano="nano -u -w " 
- echo '+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
  
- +
-My config +Functions 
- # +#
- 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 "$@"; 
- #-----------------------------------+}
  
- function h(){ +# Включение магии bash 
-         history| grep "$@"+if [ -f /etc/bash_completion ]then 
- }+  . /etc/bash_completion 
 +fi
  
- # Включение магии bash +' >> ~/.bashrc 
- if [ -f /etc/bash_completion ]; then +source ~/.bashrc
- /etc/bash_completion +
- fi+
  
- ' >> ~/.bashrc +echo ' 
- source ~/.bashrc +set tabsize "2" 
-  +' >> ~/.nanorc  
- echo ' +fi
- set tabsize "2" +
- ' >> ~/.nanorc +
-  +
-  +
-fi +
  
 apt-get update apt-get update
 apt-get upgrade apt-get upgrade
 +apt-get autoremove -y
 </code> </code>