Skip to content

Instantly share code, notes, and snippets.

@CarterZhou
Last active January 5, 2018 23:12
Show Gist options
  • Save CarterZhou/4f517534833a549b2d4ffe3c7c894f01 to your computer and use it in GitHub Desktop.
Save CarterZhou/4f517534833a549b2d4ffe3c7c894f01 to your computer and use it in GitHub Desktop.
Laravel on fresh Ubuntu
# Ubuntu 16.10
# Laravel 5.4
# Step 1
adduser webdev
# Step 2
usermod -aG sudo webdev
# Step 3 generate an SSH key pair on local machine
# Step 4 copy public key into server
su - webdev
mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# Step 5 disable root login, password authentication
# open the SSH daemon configuration
sudo nano /etc/ssh/sshd_config
# uncomment "PasswordAuthentication yes", set it to no
# find PermitRootLogin, set it to no
# restart SSH daemon
sudo systemctl reload sshd
# Step 6, configure iptables rules
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP
# Step 7 persist current iptables rules
# install iptables-persistent
sudo apt-get install -y iptables-persistent
# during installation, iptables-persistent will save existing rules
# Step 8 install fail2ban
sudo apt-get install -y fail2ban
# fail2ban will add its rules automatically whenever server restarts,
# so we don't have to update /etc/iptables/rules.v4 manually
# Step 9 set timezone
sudo dpkg-reconfigure tzdata
sudo apt-get install -y ntp
# Step 10 install software
# install nginx
sudo apt-get install -y nginx
# install mysql
sudo apt-get install -y mysql-server
# after installation, run sudo mysql_secure_installation to complete setup
# install PHP
sudo apt-get install php-fpm php-mysql
# after installation, open /etc/php/7.0/fpm/php.ini, uncomment "cgi.fix_pathinfo=1" and set it to 0
# open /etc/nginx/sites-available/default, edit server_name, enable php-fpm, then reload nginx service
# install git
sudo apt-get install -y git
# install composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { 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
# install packages Laravel need
# php-zip and php-xml is needed during composer install
# php-curl is needed for running Laravel Dusk tests
sudo apt-get install -y php-mbstring php-mcrypt php-zip php-xml php-curl
# grap Laravel
composer global require "laravel/installer"
# install nodejs
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
# Step 11 install software for testing
# Reference: https://github.com/laravel/dusk/issues/50
sudo apt-get -y install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4
sudo apt-get -y install chromium-browser
sudo apt-get -y install xvfb gtk2-engines-pixbuf
sudo apt-get -y install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable
sudo apt-get -y install imagemagick x11-apps
# Don't forget to make chrome driver executable
sudo chmod 774 ./vendor/laravel/dusk/bin/chromedriver-linux # relative path to your project root
# Start Xvfb
Xvfb :0 -screen 0 1280x960x24 &
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment