Skip to content

Instantly share code, notes, and snippets.

@ienugr
Last active November 10, 2016 16:18
Show Gist options
  • Save ienugr/d0a5c65d4a15c29ef78a7d505dd62ffa to your computer and use it in GitHub Desktop.
Save ienugr/d0a5c65d4a15c29ef78a7d505dd62ffa to your computer and use it in GitHub Desktop.

Revisions

  1. ienugr revised this gist Oct 26, 2016. 1 changed file with 19 additions and 0 deletions.
    19 changes: 19 additions & 0 deletions Install Laravel on LEMP Ubuntu 14.04.md
    Original file line number Diff line number Diff line change
    @@ -12,6 +12,25 @@ sudo apt-get install -y php7.0 php7.0-fpm php7.0-mysql
    sudo apt-get install nginx git
    ```

    ```
    sudo ufw app list
    sudo ufw allow 'Nginx HTTP'
    sudo ufw enable
    sudo ufw status
    ```

    ```
    Output
    Status: active
    To Action From
    -- ------ ----
    OpenSSH ALLOW Anywhere
    Nginx HTTP ALLOW Anywhere
    OpenSSH (v6) ALLOW Anywhere (v6)
    Nginx HTTP (v6) ALLOW Anywhere (v6)
    ```

    Important packages for Laravel
    ```
    sudo apt-get install mcrypt php7.0-mcrypt
  2. ienugr created this gist Oct 26, 2016.
    180 changes: 180 additions & 0 deletions Install Laravel on LEMP Ubuntu 14.04.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,180 @@
    #Steps to install latest Laravel, LEMP on AWS Ubuntu 14.4 version.
    This tutorial is the improvised verision of this [tutorial on Digitalocean](https://www.digitalocean.com/community/tutorials/how-to-install-laravel-with-an-nginx-web-server-on-ubuntu-14-04) based on my experience.

    ## Install PHP 7 on Ubuntu
    Run the following commands in sequence.
    ```
    sudo apt-get install -y language-pack-en-base
    sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
    sudo apt-get update
    sudo apt-get install zip unzip
    sudo apt-get install -y php7.0 php7.0-fpm php7.0-mysql
    sudo apt-get install nginx git
    ```

    Important packages for Laravel
    ```
    sudo apt-get install mcrypt php7.0-mcrypt
    sudo apt-get install -y php7.0-mbstring php7.0-xml --force-yes
    ```

    Some Optional ones
    ```
    sudo apt-get install php7.0-curl php7.0-json
    ```

    **NOTE:** You can use the following command to list available PHP 7.0 packages:
    ```
    sudo apt-cache search php7-*
    ```
    ## Modify the PHP Configuration
    Run the following command to go to php.ini
    ```
    sudo nano /etc/php/7.0/fpm/php.ini
    ```
    And uncomment and fix `cgi.fix_pathinfo` to
    ```
    cgi.fix_pathinfo=0
    ```
    Restart PHP 7.0 FPM
    ```
    sudo service php7.0-fpm restart
    ```

    ## Configure Nginx for Laravel
    I am going to setup using a blank latest version of Laravel. This would installed in `/var/www/laravel` folder.

    Run the following in terminal:
    ```
    sudo mkdir -p /var/www/laravel
    ```

    Next, we are going to modify the nginx's default configuration file: `/etc/nginx/sites-available/default`. But before that, just make a backup of the file:
    ```
    sudo mkdir ~/Backups
    sudo cp /etc/nginx/sites-available/default ~/Backups/default
    ```

    Use the following command to edit the file
    ```
    sudo nano /etc/nginx/sites-available/default
    ```

    Next modify `default` from this:
    ```
    server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /usr/share/nginx/html;
    index index.html index.htm;
    server_name localhost;
    location / {
    try_files $uri $uri/ =404;
    }
    }
    ```
    to this:
    ```
    server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /var/www/laravel/public;
    index index.php index.html index.htm;
    # Make site accessible from http://localhost/
    server_name <Your Domain name / Public IP Address>;
    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.php?$query_string;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
    }
    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    ```
    Notice the difference:
    - `try_files $uri $uri/ =404;` has been changed to `try_files $uri $uri/ /index.php?$query_string;`
    - and ` location ~ \.php$ { ... }` block has been added.

    Restart nginx.
    ```
    sudo service nginx restart
    ```

    If all was configured well, you'd see no error.

    ## SWAP file (Optional)
    Swap files would help in cases where your server might run out of memory.

    ```
    sudo fallocate -l 1G /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    ```
    ## Install Composer and Laravel

    Use the following commands to install composer and make it available across all folders.

    ```
    cd ~
    curl -sS https://getcomposer.org/installer | php
    sudo mv composer.phar /usr/local/bin/composer
    ```
    Test by `composer` command to see if it was installed correctly.

    Install laravel by using the following command.
    ```
    sudo composer create-project laravel/laravel /var/www/laravel
    ```
    In case it throws out errors due to missing packages, find the package name using
    ```
    sudo service php7.0-fpm restart
    ```
    and then remove and create the folder before running the composer create-project again.
    ```
    sudo rm -rf /var/www/laravel
    sudo mkdir /var/www/laravel
    ```

    ## Setting the permissions right for the Laravel folders.
    ```
    sudo chown -R :www-data /var/www/laravel
    sudo chmod -R 775 /var/www/laravel/storage
    ```

    ### Finish
    Check your site by `http://server_domain_or_IP` and it should show you "Laravel" homepage.

    ### Other commands of use.

    Installed a package that you don't need? Use the following commands to remove the package.
    ```
    sudo apt-get purge <package name>
    sudo apt-get autoremove --purge
    ```

    Use following command to remove a folder and it's contents
    ```
    sudo rm -rfv <folder_name>
    ```

    Test PHP version
    ```
    php -v
    ```

    ### Setup additional hosts
    This is covered in [this gist](https://gist.github.com/santoshachari/8238a7a4e7132d3c86a8720a81cd9fa1). Both gists were written in continuation.