Skip to content

Instantly share code, notes, and snippets.

@aindong
Last active June 13, 2019 12:57
Show Gist options
  • Save aindong/39bce80e1171a85243588581e3948026 to your computer and use it in GitHub Desktop.
Save aindong/39bce80e1171a85243588581e3948026 to your computer and use it in GitHub Desktop.
provision laravel server with nginx, php, awscli, composer, node, ruby, python
#!/bin/bash
# Add Ruby2.0 respository
add-apt-repository -y ppa:brightbox/ruby-ng-experimental
# Add PHP 7.* ppa
sudo add-apt-repository ppa:ondrej/php
# Add node source respository
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
# Update APT
apt update
# Install dependencies
apt install -y php7.2 php7.2-mbstring php7.2-xml php7.2-zip php7.2-mysql php7.2-cli php7.2-mcrypt php7.2-fpm git nginx software-properties-common python-software-properties python-pip wget nodejs ruby2.0
# Upgrade dependencies
apt upgrade -y
# Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php -- --install-dir=/usr/bin --filename=composer
rm composer-setup.php
# Install AWS CLI
pip install awscli
# Set cgi.fix_pathinfo=0 in php.ini
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.2/fpm/php.ini
# Create nginx default config
echo "server {" > /etc/nginx/sites-available/default
echo " listen 80 default_server;" >> /etc/nginx/sites-available/default
echo " listen [::]:80 default_server;" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " root /var/www/public;" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " index index.php index.html;" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " server_name _;" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " location / {" >> /etc/nginx/sites-available/default
echo " try_files \$uri \$uri/ /index.php\$is_args\$args;" >> /etc/nginx/sites-available/default
echo " }" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " location ~* (index)\.php\$ {" >> /etc/nginx/sites-available/default
echo " include snippets/fastcgi-php.conf;" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " fastcgi_pass unix:/run/php/php7.2-fpm.sock;" >> /etc/nginx/sites-available/default
echo " }" >> /etc/nginx/sites-available/default
echo "" >> /etc/nginx/sites-available/default
echo " location ~ /\.ht {" >> /etc/nginx/sites-available/default
echo " deny all;" >> /etc/nginx/sites-available/default
echo " }" >> /etc/nginx/sites-available/default
echo "}" >> /etc/nginx/sites-available/default
# Restart php and nginx
service php7.2-fpm reload
service nginx reload
# Remove default web directory
rm -rf /var/www/html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment