Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
debian:server-install-d8 [2015/10/15 11:34] mirocowdebian:server-install-d8 [2018/06/17 20:33] (текущий) – ↷ Операцией перемещения обновлены ссылки 5.9.158.195
Строка 1: Строка 1:
 {{tag>script linux install}} {{tag>script linux install}}
  
-====== Скипт инсталяции для Debian 8 ======+====== Скрипт установки для Debian 8 ======
  
 <code bash> <code bash>
-#!/bin/sh +$ 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 
-echo -e "## Automatic installation servers apps ##"+</code>
  
-distrib="jessie"+  * [[develop:php:php|Установка различных версий PHP]] 
 +===== Описание =====
  
-echo " +  * Автоматическая установка и обновление зависимых пакетов 
-deb http://ftp.pl.debian.org/debian ${distrib} main contrib +  * Автоматическая устанока и настройка серверов GIT, PHP 5.6, PHP-FPM, Nginx, Redis, MySQL (mariadb), RabbitMQ, Exim4 
-deb-src http://ftp.pl.debian.org/debian ${distrib} main contrib+  * Автоматическое конфигурирование пакетов 
 +  * Установка автоматического бекапа БД MySQL (https://github.com/Mirocow/mysql_utils.git) 
 +  * Устанока скрипта для создания сайта (https://github.com/Mirocow/site-create) 
 +  * [[system:exim4]]
  
-deb http://ftp.debian.org/debian/  ${distrib}-updates main contrib +===== Установка =====
-deb-src http://ftp.debian.org/debian/  ${distrib}-updates main contrib+
  
-deb http://security.debian.org/  ${distrib}/updates main contrib +<note tip><code sh> 
-deb-src http://security.debian.org ${distrib}/updates main contrib+# nano debian-install.sh 
 +# bash ./debian-install.sh 
 +</code></note>
  
-# erlyvideo.org +В debian-install.sh вставляем ниже следующий текст и нащимаем Ctrl-x, затем y (сохраняем и выходим)
-#deb http://debian.erlyvideo.org binary/+
  
-# php-fpm dotdeb 
-deb http://packages.dotdeb.org ${distrib} all 
-deb-src http://packages.dotdeb.org ${distrib} all 
  
-# nginx +<code bash> 
-deb http://nginx.org/packages/debian ${distrib} nginx +#!/bin/sh 
-deb-src http://nginx.org/packages/debian ${distribnginx +distrib="jessie" 
-" > /etc/apt/sources.list+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 
 +}
  
-wget -q http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add +if [ "x$(id -u)" != 'x0' ]; then 
-wget -q http://nginx.org/keys/nginx_signing.key -O- | apt-key add -+    check_result 1 "Script can be run executed only by root" 
 +fi
  
-echo -e "## Update OS ##" 
-sleep 1 
 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 pwgen
  
-echo -e "## Install my app list ##" +default_pass=$(pwgen -s 7 1)
-sleep 1 +
-apt-get install apt apt-utils chkconfig mc htop git mercurial checkinstall iptraf jnettop iftop -y +
-apt-get install nano -y+
  
-echo -"## Install PHP-FPM ##" +hostname=$(prompt "Enter the Internet domain name (e.g. nixcraft.com) : ");
-sleep 1 +
-apt-get install -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 -y +
-echo "cgi.fix_pathinfo = 0>> /etc/php5/fpm/php.ini+
  
-echo -e "## Install Nginx ##+if promptyn "Do you wish to install default programs? [mc, git, etc] " ; then 
-sleep 1 +  
-apt-get install nginx -y+ echo -e "Install default programs"; 
 + installpkg mc git mercurial bash-completion bzip2 numactl dnsutils -y
  
-echo -e "## Install Redis ##" +fi
-sleep 1 +
-apt-get install redis-server -y+
  
-echo -e "## Install MySQL ##+if promptyn "Do you wish to install developers programs? [gcc, g++, etc] "; then 
-sleep 1 +  
-apt-get install mariadb-server mariadb-client mariadb-common -+ echo -e "Install development soft"; 
-chkconfig --levels 235 mysql on+ installpkg checkinstall gcc build-essential g++ libboost-dev libboost-program-options-dev libboost-all-dev libevent-dev uuid-dev clang cmake -y
  
-echo -e "## Install development soft ##" +fi
-apt-get install gcc build-essential g++ libboost-dev libboost-program-options-dev libboost-all-dev libevent-dev uuid-dev -y+
  
-service php5-fpm restart+if promptyn "Do you wish to install system monitors? [htop, iptraf] "; then 
 +  
 + echo -e "Install system monitors"; 
 + installpkg htop iptraf jnettop iftop -y
  
-#echo -e "## Install DNS Server ##" +fi
-# apt-get install bind9 bind9utils bind9-libs -y +
-#apt-get install pdns-server pdns-backend-mysql pdns-recursor -y+
  
-echo -e "## Install SMTP Server ##+if promptyn "Do you wish to uninstall systemd and install systemv? "; then 
-apt-get install exim4 +  
-dpkg-reconfigure exim4-config+ installpkg sysvinit-core sysvinit-utils -y 
 + cp /usr/share/sysvinit/inittab /etc/inittab 
 +  
 +fi
  
-echo -e  "## Start APPs ##+if promptyn "Do you wish to install FTP Server (PRO-Ftpd)? "; then 
-service nginx restart + installpkg proftpd 
-service php5-fpm restart +fi  
-service mysql restart +
-service redis-server restart+
  
-#echo *Clearing downloaded packages after install!*" +if promptyn "Do you wish to install MySql? "; then
-#rm /var/cache/apt/archives/*.deb -f+
  
-echo -e "## Base system configure ##"+ 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>&
 + 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>&
 + 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>&
 + 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>&
 + 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>&
 + 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>&
 + 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>&
 + 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 ' echo '
  
Строка 90: Строка 387:
 # My config # 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 nano="nano -u -w "
 alias ls="ls --color=always" alias ls="ls --color=always"
Строка 113: Строка 415:
  
 function h(){ function h(){
-        history| grep "$@";+  history| grep "$@";
 } }
  
-#----------------------------------- +Включение магии bash 
-# Функции для работы с файлами и строками: +if [ -f /etc/bash_completion ]; then 
-#----------------------------------- +  . /etc/bash_completion 
- +fi
-# Поиск файла по шаблону: +
-function ff() { find . -type f -iname '*'$*'*' -ls ; } +
-# Поиск файла по шаблону в $1 и запуск команды в $2 с ним: +
-function fe() { find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \;  ; } +
-# поиск строки по файлам: +
-function fstr() +
-+
-    OPTIND=1 +
-    local case="" +
-    local usage="fstr: поиск строки в файлах. +
-        Порядок использования: fstr [-i] \"шаблон\" [\"шаблон_имени_файла\"] " +
-    while getopts :it opt +
-    do +
-        case "$opt" in +
-        i) case="-i " ;; +
-        *) echo "$usage"; return;; +
-        esac +
-    done +
-    shift $(( $OPTIND - 1 )) +
-    if [ "$#" -lt 1 ]; then +
-        echo "$usage" +
-        return; +
-    fi +
-    local SMSO=$(tput smso) +
-    local RMSO=$(tput rmso) +
-    find -type f -name "${2:-*}" -print0 | xargs -0 grep -sn ${case} "$1" 2>&- | \ +
-        sed "s/$1/${SMSO}\0${RMSO}/gI" | more +
-}+
  
 ' >> ~/.bashrc ' >> ~/.bashrc
Строка 154: Строка 428:
 echo ' echo '
 set tabsize "2" set tabsize "2"
-' >> ~/.nanorc+' >> ~/.nanorc  
 +fi
  
 +apt-get update
 +apt-get upgrade
 +apt-get autoremove -y
 </code> </code>