Last active
June 14, 2018 09:53
-
-
Save txreplay/3c14d2b9d71e10163643895fdfe8327a to your computer and use it in GitHub Desktop.
Install PHP, Nginx & Mysql for Symfony
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
#!/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 | |
} |
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
#!/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 |
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
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