Instalasi Nginx dari source

Nama Nginx sudah mulai dikenal bagi yang ingin menghosting website di VPSnya, ini dikarenakan reputasinya sebagai web server yang ringan tapi memiliki performa maksimal. Sebenarnya cara installnya sendiri di Linux cukup mudah – tidak ada perbedaan signifikan antar distro – dan versi yang disediakan dari repository bisa dikatakan baru tapi dari stable bukan yang terbaru dari mainline. Kalau kita benar – benar ingin memanfaatkan nginx dengan fitur – fitur baru dan perbaikannya maka bisa mencoba mengcompilenya sendiri dari source code.

Keunggulan instalasi dari Nginx adalah kita bisa benar – benar menyetel konfigurasi dan fitur web servernya dari awal, karena default yang disediakan dari repository seingat saya dulu tidak ada fitur IPv6, SPDY (sekarang menjadi HTTP/2) dan PageSpeed Module. Sekarang mungkin sudah berubah, setidaknya harapan saya minimal bisa IPv6 karena sudah mulai populer digunakan.

Kekurangannya juga terletak pada compilenya ini, karena setiap kali ada update kita tidak bisa melakukan apt-get upgrade atau yum update, harus diulangi lagi prosesnya dari awal. Bisa merepotkan dan ada resiko downtime.

Nah… dalam tutorial saya sebelumnya hanya mengkonfigurasikan Nginx dengan PageSpeed Module dan ini sangatlah tidak ideal untuk penggunaannya sebagai web server. Sehingga ini saya gunakan untuk mencatat konfigurasi Nginx saat kompilasi source codenya. Biar tidak lupa pas saya ingin tahu dulu menambahkan parameter apa saja. Singkatnya: Ini cara install Nginx dari source yang lengkap. Menurut saya setidaknya. πŸ™‚

Persiapan sebelum kompilasi Nginx

Biasanya pada template OS default VPS sudah ada Apache, perlu kita hapus dulu atau ganti Nginx aktif di port selain 80 agar tidak konflik. Disini saya menghapusnya:

  • CentOS/RHEL/Fedora
    yum remove httpd
  • Debian/Ubuntu/Mint
    apt-get purge httpd

Seperti biasa turuti dulu syarat – syaratnya:

  • CentOS/RHEL/Fedora
    yum install gcc-c++ pcre-devel zlib-devel make unzip
  • Debian/Ubuntu/Mint
    apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

Karena ini versi yang lebih lengkap maka kita mempersiapkan dulu PageSpeed Module:

cd
NPS_VERSION=1.9.32.10
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz

Lakukan secara berurutan. Versi PageSpeed Module yang digunakan adalah 1.9.32.10 dan bisa anda gantikan angkanya di variabel NPS_VERSION, tinggal cek versi terbarunya saja.

Perjuangan instalasi Nginx dimulai

Akhirnya kita akan menjalankan proses compile Nginx ditambahkan modul – modul pihak ketiga yang penting:

cd
NGINX_VERSION=1.9.6
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/

./configure \
  --prefix=/usr/local/share/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --sbin-path=/usr/local/sbin \
  --error-log-path=/var/log/nginx/error.log \
  --with-openssl=/usr/bin/openssl \
  --with-http_v2_module \
  --with-http_ssl_module \
  --with-http_realip_module \
  --with-http_addition_module \
  --with-http_sub_module \
  --with-http_dav_module \
  --with-http_flv_module \
  --with-http_mp4_module \
  --with-http_gunzip_module \
  --with-http_gzip_static_module \
  --with-http_random_index_module \
  --with-http_secure_link_module
  --with-http_stub_status_module \
  --with-file-aio \
  --with-pcre \
  --with-ipv6 \
  --add-module=$HOME/ngx_pagespeed-release-${NPS_VERSION}-beta
  
make
make install

Jalankan secara berurutan juga. Versi Nginx yang saya gunakan adalah terbaru mainline: 1.9.6, bisa anda ubah ke versi lain dari halaman downloadnya. Gantikan saja angka dalam variabel NGINX_VERSION.

Persiapkan VPS anda

Sekarang kita perlu membuat init.d script untuk dijalankan saat startup server:

nano /etc/init.d/nginx

Isinya silahkan dicopy-paste dari catatan saya sebelumnya.

Kemudian eksekusi perintah berikut secara berurutan:

useradd -r nginx
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig --level 345 nginx on

Selanjutnya silahkan jalankan daemon nginx:

service nginx start

Yak, sudah selesai perjuangan kita. Untuk mengedit konfigurasi Nginx bisa dicek pada direktori /etc/nginx dan untuk virtual host defaultnya ada di /usr/local/nginx.

Ini masih cara instalasi, belum setting Nginxnya sendiri disambungkan dengan PHP-FPM dan database server MySQL misalnya. Semoga ada waktu untuk menulisnya. Haha. πŸ˜€

Semoga bermanfaat. πŸ™‚

9 Comments

  1. Halo mas chandra, saya mau tanya, maaf sebelumnya kalau sedikit melenceng πŸ˜€ . Jika sudah install nginx dan mau ganti lagi ke versi terbaru nginx gimana caranya ya mas ? apa saja yang harus di backup.

    terima kasih

    1. Maksudnya mas install Nginx bukan pakai metode dari source kan? Cuma lewat repository? Backup saja semua yang ada di folder defaultnya mas. Misal di CentOS: https://servernesia.com/806/yuk-install-lemp-paling-mutakhir/ disana sudah saya tuliskan lokasi direktori defaultnya.

      Untuk update ya mudah mas kalau lewat repository instalasinya:

      • Debian/Ubuntu
        apt-get update
        apt-get upgrade
      • RHEL/CentOS
        yum update

      Saran saya sih, jangan perbaiki apa yang tidak rusak. Selama masih berfungsi dengan baik biarkan saja. Web server itu aslinya tidak perlu sering – sering diupdate kecuali kalau ada celah keamanan. Utamakan kestabilan mas. Fitur – fitur terbarunya belum tentu kita butuhkan. CMIIW lho ya.

  2. gan mau tanya, gmana kalau nginx dijadikan proxy server dan web server menggunakan apache atau yang lainnya? apakah lebih cepat dan stabil? atau cukup nginx saja bisa menagani nya dengan baik

    terima kasih

    1. Saya menganut semakin sedikit software lebih baik mas. πŸ™‚ Mengurangi maintenance dan troubleshoot apabila ada masalah.

      Kecuali mas butuh dukungan rewrite htaccess maka cukup murni Nginx saja.

  3. /ngx_pagespeed-1.12.34.2-stable/psol/include/url -I src/mail -I src/stream \
            -o objs/addon/src/ngx_http_lua_module.o \
            /usr/share/nginx/modules/lua-nginx-module/src/ngx_http_lua_module.c
    /usr/share/nginx/modules/lua-nginx-module/src/ngx_http_lua_module.c: In function β€˜ngx_http_lua_merge_srv_conf’:
    /usr/share/nginx/modules/lua-nginx-module/src/ngx_http_lua_module.c:1022:37: error: passing argument 2 of β€˜SSL_CTX_sess_set_get_cb’ from incompatible pointer type [-Werror=incompatible-pointer-types]
                                         ngx_http_lua_ssl_sess_fetch_handler);
                                         ^
    In file included from src/event/ngx_event_openssl.h:15:0,
                     from src/core/ngx_core.h:82,
                     from /usr/share/nginx/modules/lua-nginx-module/src/ddebug.h:13,
                     from /usr/share/nginx/modules/lua-nginx-module/src/ngx_http_lua_module.c:11:
    /usr/share/nginx/modules/openssl-1.1.0f/.openssl/include/openssl/ssl.h:637:6: note: expected β€˜SSL_SESSION * (*)(struct ssl_st *, const unsigned char *, int,  int *) {aka struct ssl_session_st * (*)(struct ssl_st *, const unsigned char *, int,  int *)}’ but argument is of type β€˜SSL_SESSION * (*)(SSL *, u_char *, int,  int *) {aka struct ssl_session_st * (*)(struct ssl_st *, unsigned char *, int,  int *)}’
     void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,
          ^
    cc1: all warnings being treated as errors
    objs/Makefile:2363: recipe for target 'objs/addon/src/ngx_http_lua_module.o' failed
    make[2]: *** [objs/addon/src/ngx_http_lua_module.o] Error 1
    make[2]: Leaving directory '/usr/share/nginx/nginx-1.13.5/debian/build-nginx'
    Makefile:8: recipe for target 'build' failed
    make[1]: *** [build] Error 2
    make[1]: Leaving directory '/usr/share/nginx/nginx-1.13.5/debian/build-nginx'
    debian/rules:54: recipe for target 'build-arch.nginx' failed
    make: *** [build-arch.nginx] Error 2
    dpkg-buildpackage: error: debian/rules build gave error exit status 2

    Mas saya mengalami kendala dengan keterangan tersebut, kira kira bagaimana itu?

    1. Pakai Debian apa mas?

      Boleh tahu perintah lengkapnya yang dipakai untuk download dan compilenya?

      Kok ga pakai repository saja mas daripada repot gini? Ada alasan/kebutuhan khusus?

  4. Pakai Ubuntu 16
    Download:

    # PCRE version 4.4 - 8.40
    wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz
    
    # zlib version 1.1.3 - 1.2.11
    wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz
    
    # OpenSSL version 1.0.2 - 1.1.0
    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz

    sepertinya openssl-1.1.0f ga kompatibel dengan lua-nginx-module
    cuma buat iseng iseng belajar saja sih mas

  5. versi lain belum coba, kemarin cari tutorian ada yg kopatibel dengan openssl 1.1.0f tapi juga blm kompatibel dengan plugin plugin nginx lainya

Tinggalkan Balasan ke Chandra Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *