Last active
January 5, 2018 23:12
-
-
Save CarterZhou/4f517534833a549b2d4ffe3c7c894f01 to your computer and use it in GitHub Desktop.
Laravel on fresh Ubuntu
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
# 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