Skip to content

Instantly share code, notes, and snippets.

@txreplay
Last active June 14, 2018 09:53
Show Gist options
  • Save txreplay/3c14d2b9d71e10163643895fdfe8327a to your computer and use it in GitHub Desktop.
Save txreplay/3c14d2b9d71e10163643895fdfe8327a to your computer and use it in GitHub Desktop.
Install PHP, Nginx & Mysql for Symfony
#!/bin/bash
check_connexion ()
{
echo " > START: sudo wget -q --timeout=20 --spider http://google.com"
sudo wget -q --timeout=20 --spider http://google.com
echo " > END: sudo wget -q --timeout=20 --spider http://google.com"
if [[ $? -ne 0 ]]; then
echo "Connexion internet inexistante. Veuillez réessayer."
exit 2
fi
}
update_packages ()
{
echo ' > START: sudo apt-get update -y'
sudo apt-get update -y 2> /dev/null
echo ' > END: sudo apt-get update -y'
}
nginx_install ()
{
echo ' > START: sudo apt-get install -y nginx'
sudo apt-get install -y nginx 2> /dev/null
echo ' > END: sudo apt-get install -y nginx'
}
nginx_check ()
{
sudo nginx -v
if [[ $? -ne 0 ]]; then
nginx_install
sudo nginx -v
if [[ $? -ne 0 ]]; then
echo "nginx n'a pas été installé correctement."
exit 1
fi
fi
}
mysql_install ()
{
echo ' > START: sudo apt-get -y install mysql-server'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root'
sudo apt-get -y install mysql-server
echo ' > END: sudo apt-get -y install mysql-server'
}
mysql_check ()
{
sudo mysql -V
if [[ $? -ne 0 ]]; then
mysql_install
sudo mysql -V
if [[ $? -ne 0 ]]; then
echo "mysql n'a pas été installé correctement."
exit 1
fi
fi
}
php_install ()
{
echo ' > START: sudo apt-add-repository -y ppa:ondrej/php'
sudo add-apt-repository -y ppa:ondrej/php 2> /dev/null
sudo apt-get -y update 2> /dev/null
echo ' > END: sudo apt-add-repository -y ppa:ondrej/php'
echo ' > START: sudo apt-get install -y php php-cli php-common php-json php-opcache php-mysql php-xml php-mbstring php-mcrypt php-zip php-fpm'
sudo apt-get install -y php php-cli php-common php-json php-opcache php-mysql php-xml php-mbstring php-mcrypt php-zip php-fpm 2> /dev/null
echo ' > START: sudo apt-get install -y php php-cli php-common php-json php-opcache php-mysql php-xml php-mbstring php-mcrypt php-zip php-fpm'
}
php_check ()
{
sudo php -v
if [[ $? -ne 0 ]]; then
php_install
sudo php -v
if [[ $? -ne 0 ]]; then
echo "php71 n'a pas été installé correctement."
exit 1
fi
fi
}
php_config()
{
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/7.1/fpm/php.ini
sudo systemctl restart php7.1-fpm
}
git_install () {
echo ' > START: sudo apt-get install -y git'
sudo apt-get install -y git
echo ' > END: sudo apt-get install -y git'
}
git_check ()
{
sudo git --version
if [[ $? -ne 0 ]]; then
git_install
sudo git --version
if [[ $? -ne 0 ]]; then
echo "git n'a pas été installé correctement."
exit 1
fi
fi
}
clone_project ()
{
echo ' > START: sudo git clone https://github.com/symfony/symfony-standard.git -b 3.4 /var/www/symfony-standard'
sudo git clone https://github.com/symfony/symfony-standard.git -b 3.4 /var/www/symfony-standard
echo ' > END: sudo git clone https://github.com/symfony/symfony-standard.git -b 3.4 /var/www/symfony-standard'
}
nginx_config ()
{
sudo mkdir -p /var/log/nginx/symfony-standard/ 2> /dev/null
sudo unlink /etc/nginx/sites-enabled/default 2> /dev/null
sudo rm /etc/nginx/sites-available/default 2> /dev/null
sudo sudo rm -rf /var/www/html/ 2> /dev/null
if [[ ! -f ./symfony-standard.nginx ]]; then
echo "Le fichier symfony-standard.nginx n'existe pas."
exit 1
fi
sudo cp symfony-standard.nginx /etc/nginx/sites-available/symfony-standard 2> /dev/null
sudo ln -s /etc/nginx/sites-available/symfony-standard /etc/nginx/sites-enabled/symfony-standard 2> /dev/null
sudo nginx -t
if [[ $? -ne 0 ]]; then
echo "Le fichier symfony-standard.nginx a été corrompu."
exit 1
fi
sudo systemctl reload nginx
}
composer_install ()
{
php_check
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
}
init_project ()
{
sudo chown -R `whoami`: /var/www/symfony-standard/
cd /var/www/symfony-standard && composer install -n
sudo chmod 777 -R var/
}
complete_script ()
{
echo 'Installation terminée !'
sensible-browser http://127.0.0.1/app_dev.php 2> /dev/null
exit 0
}
#!/bin/bash
if [[ ! -f ./functions.sh ]]; then
echo "Le fichier functions.sh n'existe pas."
exit 1
fi
source ./functions.sh
check_connexion
update_packages
nginx_check
mysql_check
php_check
git_check
clone_project
nginx_config
composer_install
init_project
complete_script
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/symfony-standard/web;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/symfony-standard/error.log;
access_log /var/log/nginx/symfony-standard/access.log;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment