Tuesday, June 7, 2016

Setting up Ubuntu 15.04 + PHP5.6 + Nginx + MySQL + Laravel 5 + npm + Bower + Gulp

  1. install a brand new Ubuntu 15.04 amd64 version
  2. uname -a

     Linux jasler 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  3. Setting root password

     sudo passwd root
     >> root
  1. check if apache2 is installed and port 80 is being used

     ps -A | grep apache
     sudo netstat -nlp  | grep 80

remove if installed:

    sudo killall apache2
    sudo apt-get remove apache2
  1. Install Nginx

     sudo apt-get install nginx
     nginx -v
         nginx version: nginx/1.6.2 (Ubuntu)
  2. Install MySQL

     sudo apt-get install mysql-server

It will also install mysql-client and other dependencies in the meantime.

Press Enter on seeing a blank terminal to proceed.

Set the root password root for this time.

  1. Install PHP5 and its extensions

     sudo apt-get install php5 php5-mcrypt php5-gd php5-mysql php5-fpm php5-curl

It also installs apache2 automatically, if it conflicts with nginx, we recommend to remove it.

Check the php and mysql version:

    php -v
    PHP 5.6.4-4ubuntu6.4 (cli) (built: Oct 28 2015 01:21:29) 
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
        with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
 
 
    mysql -p -uroot -v
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 4
    Server version: 5.6.28-0ubuntu0.15.04.1 (Ubuntu)
  1. Install npm

    sudo apt-get install npm
    npm -v
    1.4.21

update within it self:

    sudo npm install -g npm
    /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
    npm@3.8.3 /usr/local/lib/node_modules/npm

Or install this way:

    sudo apt-get install curl
    curl -sL https://deb.nodesource.com/setup > install.sh
    sudo chmod +x install.sh
    sudo ./install.sh
    sudo apt-get install nodejs
    sudo npm install -g npm
  1. Install git

    sudo apt-get install git
  2. Creating dev folder:

change usr to your account

    sudo mkdir /home/wwwroot/
    sudo chown -R [usr].[usr] /home/wwwroot
  • Cloning repo:

    cd /home/wwwroot/
    git clone ssh://git@yourrepo.com:/home/git/yourrepo.git
  • npm install (within vpn)

    sudo npm install
  • Install composer

    cd ~
    php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php
    php composer-setup.php
    sudo mv composer.phar /etc/php5/composer.phar
    sudo chmod +x /etc/php5/composer.phar
    sudo ln -s /etc/php5/composer.phar /usr/bin/composer
  • Install dependencies (vpn):

    cd /home/wwwroot/wwwroot
    composer install
  • Create Database and user, privileges:

    mysql -p -u root
     
    > create database yourdb;
    > create user 'you'@'localhost';
    > set password for you@localhost = PASSWORD('yourpasswd');
    > grant all privileges on yourdb.* to you@localhost;
    > show grants for you@localhost;
    > flush privileges;
  • reset config for environment

    cp .env.example .env
     
    vi .env
     
    DB_HOST=127.0.0.1
    DB_DATABASE=yourdb
    DB_USERNAME=yourame
    DB_PASSWORD=yourpasswd
  • Database migration

    php artisan key:generate
        Application key [s1ZYF0BZydwbRRcrNc58crIC20uwBRzT] set successfully.
    php artisan migrate
    php artisan db:seed
  • Install bower, gulp

    sudo npm install bower -g
    sudo npm install gulp -g
  • Bower install dependencies (no-VPN prefered)

    bower install
  • Generate css, js etc. frontend files

    gulp
     
    gulp watch
  • Make a directory for log files,

    sudo mkdir /home/wwwlogs
    sudo chown www-data.www-data /home/wwwlogs
    1. Reload Nginx

      sudo nginx -s reload

    Check the status:

        sudo service nginx status
    1. Restart Nginx

      sudo service nginx restart

    sudo mv yoursite.conf sites-available/

    C: char* conversion to LPCWSTR

    #include <string.h>
    #include <strlib.h>
    
    LPCWSTR c2ws(const char* s){
     int len;
     int slength = strlen(s)+1;
     len = MultiByteToWideChar(CP_ACP, 0, s, slength, 0, 0);
     wchar_t* buf = new wchar_t[len];
     MultiByteToWideChar(CP_ACP, 0, s, slength, buf, len);
     LPCWSTR r(buf);
     delete[] buf;
     return r;
    }