Install NGINX dan PHP5 pada Ubuntu

Karena dikerjaan memakai NGINX (Engine X) sebagai web servernya, maka sayapun harus mengikutinya dan itung-itung sebagai bahan pembelajaran dan mencoba web server lain. Hehe
Kita langsung saja bagaimana cara menginstall NGINX ini pada Ubuntu (misal Ubuntu 13.04).
Oke langsung saja kecara penginstalannya:
$ sudo apt-get install php5 php5-cgi php5-cli php5-common php5-curl php5-ffmpeg php5-fpm php5-gd php5-imagick php5-mcrypt php5-memcache php5-mysql php5-pgsql mysql-server-5.5 postgresql nginx-full


Tunggu sampai penginstalan selesai, dan setelah itu, kita akan melakukan konfigurasi pada NGINX ini. Pada Ubuntu file konfigurasi dari nginx ini dibedakan kebeberapa file, berbeda pada distribusi Slackware atau Fedora contohnya. Maka untuk Ubuntu, apabila ingin melakukan konfigurasi pada NGINX, maka kita harus membuka file /etc/nginx/sites-available/default:

$ sudo vim /etc/nginx/sites-available/default

Tampilan awalnya adalah sebagai berikut:

# You may add here your
# server {
#    …
# }
# statements for each of your virtual hosts to this file

##
# You should look at the following URL’s in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    root /var/www;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }

    # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
    #location /RequestDenied {
    #    proxy_pass http://127.0.0.1:8080;  
    #}

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #    root /usr/share/nginx/html;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #    # NOTE: You should have “cgi.fix_pathinfo = 0;” in php.ini
    #
    #    # With php5-cgi alone:
    #    fastcgi_pass 127.0.0.1:9000;
    #    # With php5-fpm:
    #    fastcgi_pass unix:/var/run/php-fcgi.sock;
    #    fastcgi_index index.php;
    #    include fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache’s document root
    # concurs with nginx’s one
    #
    #location ~ /\.ht {
    #    deny all;
    #}
}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen 8000;
#    listen somename:8080;
#    server_name somename alias another.alias;
#    root html;
#    index index.html index.htm;
#
#    location / {
#        try_files $uri $uri/ =404;
#    }
#}

# HTTPS server
#
#server {
#    listen 443;
#    server_name localhost;
#
#    root html;
#    index index.html index.htm;
#
#    ssl on;
#    ssl_certificate cert.pem;
#    ssl_certificate_key cert.key;
#
#    ssl_session_timeout 5m;
#
#    ssl_protocols SSLv3 TLSv1;
#    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
#    ssl_prefer_server_ciphers on;
#
#    location / {
#        try_files $uri $uri/ =404;
#    }
#}

Dan rubahlah isinya menjadi seperti ini:

# You may add here your
# server {
#    …
# }
# statements for each of your virtual hosts to this file

##
# You should look at the following URL’s in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
server {
    listen   80;
    server_name  localhost;
    access_log  /var/log/nginx/localhost.access.log;

## Default location
    location / {
       autoindex on;    
        root   /var/www;
        index  index.html index.htm index.php;

    }

location /images {
                root   /usr/share;
                autoindex on;
        }

location ~ \.php {
                fastcgi_index  index.php;

                set  $script     $uri;
                set  $path_info  “”;
                if ($uri ~ “^(.+\.php)(/.*)”) {
                        set  $script     $1;
                        set  $path_info  $2;
                }
                fastcgi_pass   unix:/var/run/php5-fpm.sock;
       
                include /etc/nginx/fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME  /var/www$script;
                fastcgi_param  PATH_INFO        $path_info;
                fastcgi_param  SCRIPT_NAME $script;
        }

}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen 8000;
#    listen somename:8080;
#    server_name somename alias another.alias;
#    root html;
#    index index.html index.htm;
#
#    location / {
#        try_files $uri $uri/ =404;
#    }
#}

# HTTPS server
#
#server {
#    listen 443;
#    server_name localhost;
#
#    root html;
#    index index.html index.htm;
#
#    ssl on;
#    ssl_certificate cert.pem;
#    ssl_certificate_key cert.key;
#
#    ssl_session_timeout 5m;
#
#    ssl_protocols SSLv3 TLSv1;
#    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
#    ssl_prefer_server_ciphers on;
#
#    location / {
#        try_files $uri $uri/ =404;
#    }
#}

Lalu setelah itu rubahlah konfigurasi fastcgi-params dari nginx, agar nginx tidak melakukan redirect ke alamat HTTP (opsi ini bersifat opsional saja):

$ sudo nano /etc/nginx/fastcgi_params

Lalu rubahlah bagian:

fastcgi_param HTTPS $https;
Menjadi:
#fastcgi_param HTTPS $https;

Lalu terakhir, jalankanlah nginx dan php5-fpmnya:

$ sudo service php5-fpm restart
$ sudo service nginx restart

Lalu buatlah file phpinfo:

<?php
phpinfo();
?>

Dan simpan di folder /var/www/ dengan nama info.php. Lalu buka browser anda dan jalankanlah alamat: localhost/info.php. Apabila benar, maka hasilnya seperti ini:

Nah dari beberapa perubahan di atas, contohnya kita menambahkan opsi seperti:

  1. auto index on –> yaitu fungsinya untuk melist beberapa file atau
  2. root /var/www –> Maksudnya adalah mengarahkan ke folder kerja webnya yaitu di /var/www/
  3. location location ~ \.php –> didalam sana terdapat konfigurasi untuk menjalankan skrip php dengan menggunakan socket dari bantuan php-fpm (fastcgi_pass unix:/var/run/php5-fpm.sock;)

Terimakasih kepada Farid Hidayat dan Bang Chalid atas bantuan setting nginx-nya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s