Install LEMPP (Linux, Nginx, MySQL, Php, PhpMyAdmin) di Fedora

Oke kali ini saya akan coba menjelaskan cara penginstalan web server seperti judul di atas di Fedora 17 saya. Langsung saja kita mulai caranya:
Penginstalan Nginx

  1. Buka terminal lalu ketik ini:

    $ su
    # yum install nginx

    Lalu tunggu sampai selesai setelah itu kita akan coba build nginx dari source code. Tujuannya adalah untuk membuat nginx ini lebih powerfull dan lebih mantap lagi dengan cara mengaktifkan beberapa modulenya.. ūüėÄ

  2. Download dulu nginx source codenya.

    # cd /opt/
    # wget http://nginx.org/download/nginx-1.2.6.tar.gz

    Lalu ekstrak nginxnya dengan perintah:

    # tar -xvf nginx-1.2.6.tar.gz

  3. Selanjutnya adalah mengompile dan build nginxnya dari source code.

    # cd /opt/nginx-1.2.6/

  4. Lalu selanjutnya adalah pembuatan makefilenya.


    # ./configure –prefix=/opt/nginx –user=nginx –group=nginx –with-http_addition_module –with-http_degradation_module –with-http_flv_module –with-http_gzip_static_module –with-http_mp4_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with-http_ssl_module –with-http_stub_status_module –with-http_sub_module –with-http_dav_module –with-http_xslt_module –with-mail –with-mail_ssl_module

    Perintah di atas adalah untuk mengaktifkan semua module dari nginxnya. Info lebih lanjut lihat di sini http://wiki.nginx.org/Modules
    Lalu apabila muncul error. Misal seperti ini:

    ./configure: error: the HTTP image filter module requires the GD library.
    You can either do not enable the module or install the libraries.

    Maka yang perlu dilakukan adalah dengan menginstall librari gdnya dulu dengan perintah yum. Dan apabila librarynya tidak ada, maka mapir ke sini pkgs.org

  5. Selanjutnya setelah selesai, saatnya compile dan install sourcenya dengan perintah:

    # make
    # makefile

  6. Lalu setelah selesai, sekarang saatnya membuat si nginx berjalan otomatis saat booting fedoranya dan menjalannkan nginxnya.

    # systemctl enable nginx.service
    # systemctl start nginx.service

  7. Lalu sekarang buka browsernya dan coba ketik localhost atau 127.0.0.1. Apabila tampilannya sudah seperti di bawah ini, maka nginx berhasil terinstall.

Penginstalan MySQL

  1. Pertama yang harus dilakukan adalah dengan menginstall MySQL servernya.

    # yum install mysql-server

  2. Lalu selanjutnya adalah mengaktifkan mysql agan supaya selalu startup saat restart fedoranya.

    # systemctl enable mysqld.service

    Tetapi kalau saya, tidak mengaktifkan itu, karena mysql jarang di pakai dan di pakai kalau di perlukan saja. Jadi bila yg tak ingin mysqlnya langsung start saat booting, maka perintah itu tidak usah di tulis.

  3. Dan sekarang selanjutnya adalah menjalankan service mysqlnya.

    # systemctl start mysqld.service

  4. Selanjutnya adalah untuk pembuatan password mysql.

    # mysql_secure_installation

  5. Lalu pasti akan muncul seperti ini (ikuti intruksinya):

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
          SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


    In¬†order¬†to¬†log¬†into¬†MySQL¬†to¬†secure¬†it,¬†we’ll¬†need¬†the¬†current
    password¬†for¬†the¬†root¬†user.¬†¬†If¬†you’ve¬†just¬†installed¬†MySQL,¬†and
    you¬†haven’t¬†set¬†the¬†root¬†password¬†yet,¬†the¬†password¬†will¬†be¬†blank,
    so you should just press enter here.

    Enter current password for root (enter for none):
    ¬†<–¬†ENTER OK,¬†successfully¬†used¬†password,¬†moving¬†on…

    Setting the root password ensures that nobody can log into the MySQL
    root user without the proper authorisation.

    Set root password? [Y/n]
    ¬†<–¬†ENTER New¬†password:¬†<–¬†yourrootsqlpassword Re-enter¬†new¬†password:¬†<–¬†yourrootsqlpassword Password¬†updated¬†successfully!
    Reloading privilege tables..
    ¬†…¬†Success!


    By default, a MySQL installation has an anonymous user, allowing anyone
    to log into MySQL without having to have a user account created for
    them.  This is intended only for testing, and to make the installation
    go a bit smoother.  You should remove them before moving into a
    production environment.

    Remove anonymous users? [Y/n]
    ¬†<–¬†ENTER ¬†…¬†Success!

    Normally,¬†root¬†should¬†only¬†be¬†allowed¬†to¬†connect¬†from¬†‘localhost’.¬†¬†This
    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n]
    ¬†<–¬†ENTER ¬†…¬†Success!

    By¬†default,¬†MySQL¬†comes¬†with¬†a¬†database¬†named¬†‘test’¬†that¬†anyone¬†can
    access.  This is also intended only for testing, and should be removed
    before moving into a production environment.

    Remove test database and access to it? [Y/n]
    ¬†<–¬†ENTER ¬†–¬†Dropping¬†test¬†database…
    ¬†…¬†Success!
    ¬†–¬†Removing¬†privileges¬†on¬†test¬†database…
    ¬†…¬†Success!

    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.

    Reload privilege tables now? [Y/n]
    ¬†<–¬†ENTER ¬†…¬†Success!

    Cleaning¬†up…



    All¬†done!¬†¬†If¬†you’ve¬†completed¬†all¬†of¬†the¬†above¬†steps,¬†your¬†MySQL
    installation should now be secure.

    Thanks for using MySQL!

  6. Lalu sekarang saatnya mencoba menjalankan mysql.

    # mysql -u root -p

    Apabila muncul permintaan password, masukan password yang sudah kamu buat sebelumnya di no 4 sampai muncul seperti ini:

Penginstalan PHP dan PhpMyAdmin

  1. Selanjutnya adalah penginstalan php.

    # yum install php
    # yum install spawn-fcgi

    Kenapa disitu saya menggunakan spawn-fcgi. Penjelasannya bisa dilihat di sini http://imron02.blogspot.com/2012/02/pengamanan-pada-nginx.html. Dan selain itu juga apabila menggunakan php-fpm, saya selalu mendapatkan error saat meload phpmyadmin.

  2. Penginstalan php sudah selesai, sekarang saatnya menginstal phpmyadmin. Pertama download dulu phpmyadminnya langsung dari website resminya.

    Download di sini http://www.phpmyadmin.net/home_page/downloads.php

  3. Selanjutnya adalah memindahkan source code phpmyadminya ke doc nginx. Misal downloadan phpmyadmin tadi ada di /home/usernamekamu/Downloads.

    # cd /home/usernamekamu/Downloads/
    # tar -xvf phpMyAdmin-3.5.4-english.tar.gz -C /usr/share/nginx/html/

    Versi phpmyadmin di atas adalah 3.5.4, jadi sesuaikan dengan punya anda.

  4. Lalu sekarang adalah mengedit config si php phpmyadmin.

    # cd /usr/share/nginx/html/phpMyAdmin-3.5.4-english/
    # cp config.sample.inc.php config.inc.php

    Lalu buka config.inc.php itu.

    # nano config.inc.php

    Lalu ubah bagian ini:

    /* Storage database and tables */
    // $cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
    // $cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma_bookmark’;
    // $cfg[‘Servers’][$i][‘relation’] = ‘pma_relation’;
    // $cfg[‘Servers’][$i][‘table_info’] = ‘pma_table_info’;
    // $cfg[‘Servers’][$i][‘table_coords’] = ‘pma_table_coords’;
    // $cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma_pdf_pages’;
    // $cfg[‘Servers’][$i][‘column_info’] = ‘pma_column_info’;
    // $cfg[‘Servers’][$i][‘history’] = ‘pma_history’;
    // $cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma_table_uiprefs’;
    // $cfg[‘Servers’][$i][‘tracking’] = ‘pma_tracking’;
    // $cfg[‘Servers’][$i][‘designer_coords’] = ‘pma_designer_coords’;

    Menjadi seperti ini:

    /* Storage database and tables */
    ¬†$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
    ¬†$cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma_bookmark’;
    ¬†$cfg[‘Servers’][$i][‘relation’] = ‘pma_relation’;
    ¬†$cfg[‘Servers’][$i][‘table_info’] = ‘pma_table_info’;
    ¬†$cfg[‘Servers’][$i][‘table_coords’] = ‘pma_table_coords’;
    ¬†$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma_pdf_pages’;
    ¬†$cfg[‘Servers’][$i][‘column_info’] = ‘pma_column_info’;
    ¬†$cfg[‘Servers’][$i][‘history’] = ‘pma_history’;
    ¬†$cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma_table_uiprefs’;
    ¬†$cfg[‘Servers’][$i][‘tracking’] = ‘pma_tracking’;
    ¬†$cfg[‘Servers’][$i][‘designer_coords’] = ‘pma_designer_coords’;

Nginx, MySQL, Php, dan PhpMyadmin sudah selesai terinstall. Sekarang saatnya mengkonfigurasi si nginx agan bisa meload php.

  1. Pertama buka nginx.confnya dulu.

    # nano /etc/nginx.conf

    Lalu ubah isinya menjadi seperti ini:

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/

    user              nginx;
    worker_processes  1;

    error_log  /var/log/nginx/error.log;
    #error_log  /var/log/nginx/error.log  notice;
    #error_log  /var/log/nginx/error.log  info;

    pid        /run/nginx.pid;

    events {
        worker_connections  1024;
    }

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

    ¬† ¬† log_format ¬†main ¬†‘$remote_addr – $remote_user [$time_local] “$request” ‘
    ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ‘$status $body_bytes_sent “$http_referer” ‘
    ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ¬† ‘”$http_user_agent” “$http_x_forwarded_for”‘;

        access_log  /var/log/nginx/access.log  main;

        sendfile        on;
        #tcp_nopush     on;

        #keepalive_timeout  0;
        keepalive_timeout  65;

        #gzip  on;

        server {
        listen 127.0.0.1:80;
        server_name localhost;
        autoindex on;

        location / {
        root /usr/share/nginx/html;
        index index.php index.html index.htm;
        }

        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
               access_log        off;
               expires           360d;
           }
        location ~ /\.ht {
               deny  all;
           }
        location ~ /(libraries|setup/frames|setup/libs) {
               deny all;
               return 404;
           }
        location ~ \.php$ {
              root /usr/share/nginx/html;
               fastcgi_pass unix:/var/run/php-fcgi.sock;
      #127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME script$fastcgi_script_name;
      include fastcgi_params;
          fastcgi_intercept_errors on;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           }
        }

        # Load config files from the /etc/nginx/conf.d directory
        # The default server is in conf.d/default.conf
        include /etc/nginx/conf.d/*.conf;

    }

  2. Lalu sekarang bagian mengedit spawn-fcginya agan bisa di load otomatis saat booting fedoranya dan si nginx bisa membaca php.

    # nano /etc/sysconfig/spawn-fcgi

    Lalu ubah isinya menjadi seperti ini:

    # You must set some working options before the “spawn-fcgi” service will work.
    # If SOCKET points to a file, then this file is cleaned up by the init script.
    #
    # See spawn-fcgi(1) for all possible options.
    #
    # Example :
    #SOCKET=/var/run/php-fcgi.sock
    #OPTIONS=”-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid — /usr/bin/php-cgi”
    FASTCGI_USER=nginx
    FASTCGI_GROUP=nginx
    SOCKET=/var/run/spawn-fcgi.sock
    PIDFILE=/var/run/spawn-fcgi.pid
    PHP5_SOCKET=/var/run/php-fcgi.sock
    CHILDREN=6
    PHP5=/usr/bin/php-cgi
    MODE=0600
    OPTIONS=”-s $PHP5_SOCKET -S -M $MODE -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5″

  3. Lalu sekarang saatnya membuat agan si spawn-fcgi itu load otomatis saat startup linuxnya.

    # chkconfig –levels 235 spawn-fcgi on

  4. Terus sekarang adalah saatnya mencoba menjalankan spawn-fcginya.

    # /etc/init.d/spawn-fcgi start

  5. Lalu sekarang coba buka browsernya n buat file info.php yg di simpan di /usr/share/nginx/html. Sehingga hasilnya seperti ini saat mengakses localhost/info.php:

Dan ini adalah sedikit penjelasan tentang nginx.conf dan hubungannya dengan spawn-fcgi.

  1. user nginx; di nginx.conf itu harus sama dengan isi di /etc/sysconfig/spawn-fcgi yang ada tulisan FASTCGI_USER=nginx & FASTCGI_GROUP=nginx. Karena apabila tidak sama, maka nginx tidak akan bisa membaca file phpnya.
  2. Lalu yang ini:

    server {
    listen 127.0.0.1:80;
    server_name localhost;
    autoindex on;

    Yg server listen 127.0.0.1:80 maksudnya adalah server webnya berjalan di alamat 127.0.0.1 atau yang di berinama localhost dan berjalan di port 80.
    Terus yang autoindex on; itu dimaksudkan agan list file bisa ditampilkan. Berbeda dengan apache yang autoindexnya sudah aktif otomatis. Maksud autoindex adalah seperti pada halaman ini: http://kambing.ui.ac.id/iso/

  3. Lalu yang ini:

    location / {
    root /usr/share/nginx/html;
    index index.php index.html index.htm;
    }

    Maksudnya adalah locasi folder utama (root) untuk documen htmlnya adalah di /usr/share/nginx/html. Locasi itu bisa diganti menjadi /var/www seperti pada apache biasanya /var/www. Lalu index index.php index.html index.htm; adalah file index pertama kali yang dibaca dimulai dari index.php, index.html dan seterusnya.

  4. Lalu ini:

    location ~ \.php$ {
    root /usr/share/nginx/html;
    fastcgi_pass unix:/var/run/php-fcgi.sock;
    #127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME script$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_intercept_errors on;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    Maksud dari location ~ \.php$ { root /usr/share/nginx/html; adalah lokasi file phpnya ada di /user/share/nginx/html. Lalu untuk fastcgi_pass unix:/var/run/php-fcgi.sock; itu maksudnya adalah menjalankan php yang di buat dari spawn-fcgi tadi yang bernama php-fcgi.sock (memanfaatkan socket) tanpa membuka port untuk menjalankan phpnya. Fungsi ini biasanya digunakan untuk alasan keamanan. Maka dari itu ada tanda komentar di #127.0.0.1:9000;. Dan inilah salah satu mengapa memakai spawn-fcgi tadi.

Berikut adalah cara penginsatalan LEMPP di Fedora beserta beberapa penjelasan dari saya. Semoga artikel ini bermanfaat.. ūüôā

Advertisements

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