Last active
August 1, 2017 08:14
-
-
Save stenin-nikita/069e653666be5612aec509011c2af498 to your computer and use it in GitHub Desktop.
Install packages for Debian 8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# run command: | |
# wget -qO- https://gist.githubusercontent.com/stenin-nikita/069e653666be5612aec509011c2af498/raw/install-packages.sh | DB_ROOT_PASSWORD="secret" DB_USER_PASSWORD="secret" bash | |
export DEBIAN_FRONTEND=noninteractive | |
function print_green { | |
echo -e "\e[32m${1}\e[0m" | |
} | |
function reload-env { | |
source /etc/profile | |
source ~/.profile | |
} | |
function apt-update { | |
print_green "Update Package List" | |
sudo aptitude update | |
} | |
function apt-upgrade { | |
print_green "Update System Packages" | |
sudo aptitude -y upgrade | |
} | |
function init-environment { | |
print_green "Init Environment" | |
sudo sed -i 's/PATH=".*"/PATH="\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/usr\/games:\/usr\/local\/games"/' /etc/profile | |
reload-env | |
} | |
function init-base-package { | |
print_green "Install curl, git, unzip, supervisor" | |
sudo aptitude -y install curl git unzip supervisor | |
sudo systemctl enable supervisor.service | |
sudo service supervisor start | |
} | |
function init-centrifugo { | |
print_green "Install centrifugo" | |
curl -s https://packagecloud.io/install/repositories/FZambia/centrifugo/script.deb.sh | sudo bash | |
sudo aptitude -y install centrifugo | |
} | |
function init-node { | |
print_green "Install node" | |
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - | |
sudo aptitude install -y nodejs | |
} | |
function init-nginx-redis { | |
print_green "Install nginx & redis" | |
sudo sh -c 'echo "deb http://ftp.ru.debian.org/debian/ jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list' | |
sudo sh -c 'echo "deb-src http://ftp.ru.debian.org/debian/ jessie-backports main" >> /etc/apt/sources.list.d/jessie-backports.list' | |
sudo aptitude update | |
sudo aptitude -y install -t jessie-backports nginx redis-server | |
sudo rm /etc/nginx/sites-enabled/default | |
sudo rm /etc/nginx/sites-available/default | |
sudo service nginx restart | |
print_green "Copy fastcgi_params to Nginx because they broke it on the PPA" | |
sudo sh -c 'cat > /etc/nginx/fastcgi_params << EOF | |
fastcgi_param QUERY_STRING \$query_string; | |
fastcgi_param REQUEST_METHOD \$request_method; | |
fastcgi_param CONTENT_TYPE \$content_type; | |
fastcgi_param CONTENT_LENGTH \$content_length; | |
fastcgi_param SCRIPT_FILENAME \$request_filename; | |
fastcgi_param SCRIPT_NAME \$fastcgi_script_name; | |
fastcgi_param REQUEST_URI \$request_uri; | |
fastcgi_param DOCUMENT_URI \$document_uri; | |
fastcgi_param DOCUMENT_ROOT \$document_root; | |
fastcgi_param SERVER_PROTOCOL \$server_protocol; | |
fastcgi_param GATEWAY_INTERFACE CGI/1.1; | |
fastcgi_param SERVER_SOFTWARE nginx/\$nginx_version; | |
fastcgi_param REMOTE_ADDR \$remote_addr; | |
fastcgi_param REMOTE_PORT \$remote_port; | |
fastcgi_param SERVER_ADDR \$server_addr; | |
fastcgi_param SERVER_PORT \$server_port; | |
fastcgi_param SERVER_NAME \$server_name; | |
fastcgi_param HTTPS \$https if_not_empty; | |
fastcgi_param REDIRECT_STATUS 200; | |
EOF' | |
} | |
function init-php { | |
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg | |
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' | |
sudo aptitude update | |
print_green "Install PHP 7.1" | |
sudo aptitude -y install php7.1-fpm php7.1-cli php7.1-dev \ | |
php7.1-bz2 php7.1-mcrypt php7.1-json \ | |
php7.1-pgsql php7.1-sqlite3 php7.1-gd \ | |
php7.1-curl php7.1-imap php7.1-mysql php7.1-mbstring \ | |
php7.1-xml php7.1-zip php7.1-bcmath php7.1-soap \ | |
php7.1-intl php7.1-readline \ | |
php7.1-common php-redis php-ssh2 php-imagick php-geoip php-memcached | |
print_green "Install PHP 7.0" | |
sudo aptitude -y install php7.0-fpm php7.0-cli php7.0-dev \ | |
php7.0-bz2 php7.0-mcrypt php7.0-json \ | |
php7.0-pgsql php7.0-sqlite3 php7.0-gd \ | |
php7.0-curl php7.0-imap php7.0-mysql php7.0-mbstring \ | |
php7.0-xml php7.0-zip php7.0-bcmath php7.0-soap \ | |
php7.0-intl php7.0-readline | |
print_green "Install PHP 5.6" | |
sudo aptitude -y install php5.6-fpm php5.6-cli php5.6-dev \ | |
php5.6-bz2 php5.6-mcrypt php5.6-json \ | |
php5.6-pgsql php5.6-sqlite3 php5.6-gd \ | |
php5.6-curl php5.6-imap php5.6-mysql php5.6-mbstring \ | |
php5.6-xml php5.6-zip php5.6-bcmath php5.6-soap \ | |
php5.6-intl php5.6-readline | |
print_green "Set Some PHP CLI Settings" | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = Asia\/Yekaterinburg/" /etc/php/7.1/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = Asia\/Yekaterinburg/" /etc/php/7.0/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/5.6/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = Asia\/Yekaterinburg/" /etc/php/5.6/cli/php.ini | |
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.1/fpm/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/fpm/php.ini | |
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.1/fpm/php.ini | |
sudo sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.1/fpm/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = Asia\/Yekaterinburg/" /etc/php/7.1/fpm/php.ini | |
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/fpm/php.ini | |
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.0/fpm/php.ini | |
sudo sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.0/fpm/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = Asia\/Yekaterinburg/" /etc/php/7.0/fpm/php.ini | |
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/5.6/fpm/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/5.6/fpm/php.ini | |
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/5.6/fpm/php.ini | |
sudo sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/5.6/fpm/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = Asia\/Yekaterinburg/" /etc/php/5.6/fpm/php.ini | |
} | |
function init-composer { | |
print_green "Install composer" | |
EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) | |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" | |
ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") | |
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] | |
then | |
echo 'ERROR: Invalid installer signature' | |
rm composer-setup.php | |
fi | |
php composer-setup.php --quiet | |
rm composer-setup.php | |
sudo mv composer.phar /usr/local/bin/composer | |
LINE="PATH=\"$(sudo su - $USER -c 'composer config -g home 2>/dev/null')/vendor/bin:\$PATH\"" | |
grep -q -F "$LINE" /home/$USER/.profile || echo "\n$LINE\n" >> /home/$USER/.profile | |
printf "\n$LINE\n" | |
} | |
function configure-nginx-php { | |
print_green "Set The Nginx & PHP-FPM User" | |
sudo sed -i "s/user www-data;/user $USER;/" /etc/nginx/nginx.conf | |
sudo sed -i "s/# server_names_hash_bucket_size.*/server_names_hash_bucket_size 64;/" /etc/nginx/nginx.conf | |
sudo sed -i "s/user = www-data/user = $USER/" /etc/php/7.1/fpm/pool.d/www.conf | |
sudo sed -i "s/group = www-data/group = $USER/" /etc/php/7.1/fpm/pool.d/www.conf | |
sudo sed -i "s/listen\.owner.*/listen.owner = $USER/" /etc/php/7.1/fpm/pool.d/www.conf | |
sudo sed -i "s/listen\.group.*/listen.group = $USER/" /etc/php/7.1/fpm/pool.d/www.conf | |
sudo sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.1/fpm/pool.d/www.conf | |
sudo sed -i "s/user = www-data/user = $USER/" /etc/php/7.0/fpm/pool.d/www.conf | |
sudo sed -i "s/group = www-data/group = $USER/" /etc/php/7.0/fpm/pool.d/www.conf | |
sudo sed -i "s/listen\.owner.*/listen.owner = $USER/" /etc/php/7.0/fpm/pool.d/www.conf | |
sudo sed -i "s/listen\.group.*/listen.group = $USER/" /etc/php/7.0/fpm/pool.d/www.conf | |
sudo sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.0/fpm/pool.d/www.conf | |
sudo sed -i "s/user = www-data/user = $USER/" /etc/php/5.6/fpm/pool.d/www.conf | |
sudo sed -i "s/group = www-data/group = $USER/" /etc/php/5.6/fpm/pool.d/www.conf | |
sudo sed -i "s/listen\.owner.*/listen.owner = $USER/" /etc/php/5.6/fpm/pool.d/www.conf | |
sudo sed -i "s/listen\.group.*/listen.group = $USER/" /etc/php/5.6/fpm/pool.d/www.conf | |
sudo sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/5.6/fpm/pool.d/www.conf | |
sudo service nginx restart | |
sudo service php7.1-fpm restart | |
sudo service php7.0-fpm restart | |
sudo service php5.6-fpm restart | |
print_green "Add User To WWW-Data" | |
sudo usermod -a -G www-data $USER | |
id $USER | |
groups $USER | |
} | |
function init-database { | |
print_green "Install SQLite" | |
sudo aptitude install -y sqlite3 libsqlite3-dev | |
print_green "Install MySQL" | |
MYSQL_RELEASE_PACKAGE_VERSION=mysql-apt-config_0.8.7-1_all.deb | |
cd /tmp | |
wget http://dev.mysql.com/get/${MYSQL_RELEASE_PACKAGE_VERSION} | |
sudo debconf-set-selections <<< "mysql-apt-config mysql-apt-config/select-product select Ok" | |
sudo debconf-set-selections <<< "mysql-apt-config mysql-apt-config/select-server select mysql-5.7" | |
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $DB_ROOT_PASSWORD" | |
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $DB_ROOT_PASSWORD" | |
sudo debconf-set-selections <<< "mysql-community-server mysql-community-server/root-pass password $DB_ROOT_PASSWORD" | |
sudo debconf-set-selections <<< "mysql-community-server mysql-community-server/re-root-pass password $DB_ROOT_PASSWORD" | |
sudo DEBIAN_FRONTEND=noninteractive dpkg -i $MYSQL_RELEASE_PACKAGE_VERSION | |
sudo apt-get update | |
sudo apt-get -y install mysql-client mysql-server | |
print_green "Configure MySQL Password Lifetime" | |
sudo sh -c 'echo "default_password_lifetime = 0" >> /etc/mysql/mysql.conf.d/mysqld.cnf' | |
print_green "Configure MySQL Remote Access" | |
sudo sed -i '/^bind-address/s/bind-address.*=.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf | |
mysql --user="root" --password="$DB_ROOT_PASSWORD" -e "GRANT ALL ON *.* TO root@'0.0.0.0' IDENTIFIED BY '$DB_ROOT_PASSWORD' WITH GRANT OPTION;" | |
sudo service mysql restart | |
mysql --user="root" --password="$DB_ROOT_PASSWORD" -e "CREATE USER '$DB_USER'@'0.0.0.0' IDENTIFIED BY '$DB_USER_PASSWORD';" | |
mysql --user="root" --password="$DB_ROOT_PASSWORD" -e "GRANT ALL ON *.* TO '$DB_USER'@'0.0.0.0' IDENTIFIED BY '$DB_USER_PASSWORD' WITH GRANT OPTION;" | |
mysql --user="root" --password="$DB_ROOT_PASSWORD" -e "GRANT ALL ON *.* TO '$DB_USER'@'%' IDENTIFIED BY '$DB_USER_PASSWORD' WITH GRANT OPTION;" | |
mysql --user="root" --password="$DB_ROOT_PASSWORD" -e "FLUSH PRIVILEGES;" | |
mysql --user="root" --password="$DB_ROOT_PASSWORD" -e "CREATE DATABASE $DB_USER character set UTF8mb4 collate utf8mb4_bin;" | |
sudo service mysql restart | |
print_green "Add Timezone Support To MySQL" | |
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql --user=root --password=$DB_ROOT_PASSWORD mysql | |
print_green "Install Postgres" | |
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - | |
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' | |
sudo aptitude update | |
sudo aptitude -y install postgresql-9.5 | |
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/9.5/main/postgresql.conf | |
sudo sh -c 'echo "host all all 0.0.0.0/0 md5" | tee -a /etc/postgresql/9.5/main/pg_hba.conf' | |
sudo -u postgres psql -c "CREATE ROLE $DB_USER LOGIN UNENCRYPTED PASSWORD '$DB_USER_PASSWORD' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;" | |
sudo -u postgres /usr/bin/createdb --echo --owner=$DB_USER $DB_USER | |
sudo service postgresql restart | |
} | |
if [ -z "${DB_ROOT_PASSWORD-}" ]; then | |
DB_ROOT_PASSWORD="secret" | |
fi | |
if [ -z "${DB_USER-}" ]; then | |
DB_USER=$USER | |
fi | |
if [ -z "${DB_USER_PASSWORD-}" ]; then | |
DB_USER_PASSWORD="secret" | |
fi | |
print_green "db root password: $DB_ROOT_PASSWORD" | |
print_green "db user name: $DB_USER" | |
print_green "db user password: $DB_USER_PASSWORD" | |
init-environment | |
apt-update | |
apt-upgrade | |
init-base-package | |
init-centrifugo | |
init-node | |
init-nginx-redis | |
init-php | |
init-composer | |
configure-nginx-php | |
init-database | |
sudo apt-get -y autoremove | |
sudo apt-get -y clean |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment