Pemasangan Nginx, MySQL dan PHP

September 7, 2015 0 Comments Server 855 Views
Pemasangan Nginx, MySQL dan PHP

Dalam Bahagian 1 saya membawa cara untuk membuat beberapa tetapan pada server seperti masa, tambahan pengguna (user) dan keselamatan server yang asas.

Anda boleh lawati artikel itu di sini

Bah. 1 – Tetapan untuk Menjadikan Web Server Lebih Selamat

Untuk bahagian 2 pula, saya akan menunjukkan proses memasang web server menggunakan nginx, pengkalan data MySQL dan juga memasang skrip belah server iaitu PHP.

Mari kita mulakan dengan membuka perisian PuTTY dan sambungkan kepada server dengan menggunakan user (azri) yang telah dicipta sebelum ini.

 

Walaupun pakej Ubuntu mempunyai Nginx (apabila menaip apt-get), tetapi ia tidak mempunyai modul fastcgi_cache_purge di dalam nya. Modul ini diperlukan untuk membuang cache yang terhasil oleh skrip fastCGI. Namun rtCamp telah menghasilkan versi Nginx dengan modul fastcgi_cache_purge. Untuk memulakan pemasangan Nginx dan modul ini, taipkan pada PuTTY anda.

sudo add-apt-repository ppa:rtcamp/nginx -y

nginx-fastcgi_purge

sudo apt-get update
sudo apt-get install nginx-custom -y

 

Apabila selesai, anda boleh pastikan yang Nginx telah dipasang dengan menaip barisan berikut:

nginx –v

Anda akan dapat lihat versi nginx anda

nginx-version

 

Jika anda menaip nombor IP anda di web browser, anda akan dapat lihat ‘Welcome page’ Nginx

welcome-page

Sekarang masanya untuk melakukan beberapa konfigurasi asas pada Nginx. Ini adalah kerana Nginx menggunakan worker dan bukannya thread seperti dinyatakan dalam artikel yang lalu. Sebelum itu kita harus tahu terdapat berapa core CPU dan open file limit pada server.

Taipkan perintah di bawah dan pastikan ingat berapa CPU cores dan open file limit yang ada.

grep processor /proc/cpuinfo | wc -l
ulimit -n

nginx-core-limit

 

Seterusnnya, buka fail Nginx configuration (.conf), di dalam direktori /etc/nginx/nginx.conf.

sudo nano /etc/nginx/nginx.conf

 

Berikut adalah beberpa tetapan yang perlu anda tukar, padam dan tambah (boleh lihat diakhir artikel, terdapat contoh penuh skrip).

1. Worker_processes dimana peraturan asasnya adalah setiap satu core CPU hanya boleh mempunyai 1 worker. Jadi tukarkan nilainya menjadi 1 (server saya mempunyai hanya 1 core CPU).

2. worker_connections pula adalah nilai open file limit di darab dengan jumlah worker. Jika setiap satu worker boleh menerima sebanyak 1024 sambungan/permintaan secara serentak (setiap saat), 2 workers (2 CPU cores) pula menjadikan jumlahnya sebanyak 2048 sambungan setiap saat.

3. multi_accept hendaklah dibuka dengan menghilangkan tanda # (iaitu disebut sebagai comment. Sesuatu skrip tidak akan berfungsi jika terdapat tanda # di awalnya) dan tetapkan nilai on. Multi_accept memberitahu worker_process untuk menerima sambungan baru dalam masa yang sama walaupun terdapat sambungan lain.

Dengan menggunakan kekunci arah, scroll ke bawah sehingga berjumpa.

4. keepalive_timeout, dimana nilainya adalah 65 (saat). keepalive_timeout menentukan berapa saat sesuatu sambungan terus bersambung sebelum ditutup oleh Nginx. Nilai sepatutnya direndahkan lagi kerana tidak mahu sambungan yang idle mengambil masa sehingga 65 saat, lebih baik ia digunakan untuk sambungan lain. Tukarkan nilainya pada 20 atau rendahkan sedikit lagi terpulang.

5. Untuk alasan keselamatan hilangkan tanda # (uncomment) bagi server_tokens dan pastikan nilainya off. Bertujuan untuk menyembunyikan versi Nginx dan maklumat berkaitan Nginx yang kita gunakan. Ia selalu dipamerkan jika terdapat mesej ralat pada laman web.

6. Di bawah server_tokens, tambah baris arahan berikut client_max_body_size 64m;

ia adalah saiz fail yang maksima boleh dimuat naik ke dalam WordPress Media Library.

Dengan menggunakan kekunci arah sekali lagi, scroll ke bawah sehingga berjumpa kumpulan gzip pula.

Fail yang diminta oleh pengguna akan dimampatkan (compress) oleh server dengan gzip, manakala web browser (pelayar/peluncur web) seperti chrome, firefox akan menyahmampatkan (decompress) fail itu semula. Ia bertujuan untuk mengecilkan saiz sesebuah fail dan seterusnya melajukan capaian dan merendahkan penggunaan bandwidth. Sekadar penerangan yang mudah.

7. hilangkan tanda # (uncomment) gzip_proxied dan biarkan nilainya any.

8. hilangkan tanda # (uncomment) gzip_comp_level and set it to a value of 2. Nilainya boleh pergi antara 1 – 9

9. Akhir sekali, hilangkan tanda # (uncomment) gzip_types.

Itu sahaja tetapan asas untuk Nginx buat masa ini. Tekan kekunci CTRL X untuk keluar dan selepas itu tekan Y untuk simpan (save) segala perubahan di atas. Kemudian tekan enter sekali lagi untuk kembali ke normal.

Setiap kali kita mengubah fail .conf (cofiguration), server haruslah dimulakan (restart) kembali.

Sebelum itu periksa jika tetapan yang telah diubah tadi tidak mempunyai error. (jika terdapat error, akan keluar mesej pada PuTTY)

sudo nginx -t

JIka semua ok, teruskan dengan restart Nginx dengan menaip arahan di bawah.

sudo service nginx restart

Jika semua berjalan lancar, anda akan dapat lihat kembali welcome page bila menaip alamat ip di browser.

 

PHP-FPM

Sama seperti Nginx, (apt-get) juga mempunyai pakej PHP. Namun ia bukanlah yang terbaru dan kemas kini. Jadi kita akan memanggil pakej PHP-FPM yang diselenggara oleh Ondřej Surý.

Taip arahan di bawah.

sudo apt-add-repository ppa:ondrej/php5-5.6 -y
sudo apt-get update

Kemudian taip pula arahan di bawah untuk mula memasang PHP dan komponennya.

sudo apt-get install php5-fpm php5-common php5-mysqlnd php5-xmlrpc php5-curl php5-gd php5-cli php-pear php5-dev php5-imap php5-mcrypt

Setelah semuanya selesai, bolehlah dipastikan pemasangan kita berjaya dengan menaip arahan.

php5-fpm -v

Untuk kita gunakan WordPress pada server ini, sedikit talaan pada fail php.ini haruslah dilakukan. Kita akan selarikan dengan client_max_body_size yang telah kita tetapkan di dalam konfigurasi Nginx sebelum ini. Buka fail php.ini

sudo nano /etc/php5/fpm/php.ini

Cari

  1. upload_max_filesize = 2M (ubah nilainya kepada 64M)
  2. post_max_size = 8M (ubah nilainya kepada 64M)

 

upload-max

 

post-max

 

MYSQL

Kali ini pemasangan pengkalan data MySQL pula untuk melengkapkan server LEMP (Linux, Engine-X, MySQL dan PHP) ini.

Untuk memasang MySQL, taip arahan ini

sudo apt-get install mysql-server

Window baru akan keluar dan password baru untuk pengkalan data MySQL hendaklah dimasukkan. Password hendaklah kuat (lebih bagus melebihi 12 karakter dengan gabungan huruf, nombor, karakter istimewa dan juga sedikit huruf besar – Catat dan ingat password ini). 

Setelah MySQL dipasang, kita akan mula bina jadual data untuk kegunaan sistem, sila taip.

sudo mysql_install_db

Langkah terakhir adalah untuk memastikan MySQL selamat, taip arahan dibawah.

sudo mysql_secure_installation

Anda akan diberi pilihan untuk menukar password jika password yang anda masukkan di atas sebelum ini tidak seberapa disukai.

Berikut adalah beberapa soalan yang anda perlu dijawab. Hanya perlu ikut sahaja skema dibawah dengan menekan ENTER.

Change the root password? [Y/n] n 
 ... skipping.
 ...

Remove anonymous users? [Y/n] Y 
 ... Success!
 ...

Disallow root login remotely? [Y/n] Y 
 ... Success!
 ...

Remove test database and access to it? [Y/n] Y 
 ... Success!
 ...

Reload privilege tables now? [Y/n] Y 
 ... Success!
 ...

Semua telah selesai.  Di atas adalah pemasangan terakhir untuk LEMP.

 

Catch All Server Block

Server Block adalah sama dengan virtual host. Cuma nginx menamakannya server block manakala Apache menamakannya virtual host iaitu berfungsi sebagai perumah untuk sejumlah laman web yang berlainan domain atau sejumlah applikasi (multiple ayat yang biasa digunakan).

Catch all server block adalah kaedah nginx mengendalikan laman atau aplikasi yang bermasalah dengan mengembalikan error 444 iaitu nginx memutuskan sambungan pengguna.

Padamkan folder berikut dengan dengan menggunakan arahan remove (rm)

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

Kemudian edit fail nginx.conf dengan menggunakan program nano.

sudo nano /etc/nginx/nginx.conf

Scroll ke bawah dengan menggunakan kekunci arah sehingga bertemu dengan barisan berikut.

include /etc/nginx/sites-enabled/*;

dibawahnya tambah skrip berikut.

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

Keluar dengan menekan CTRL X dan simpan dengan menekan kekunci Y. Kemudian taip baris berikut untuk melihat sama ada terdapat ralat.

sudo nginx -t

Jika semuanya ok, restart Nginx.

sudo service nginx restart

 

Berikut adalah skrip untuk nginx.conf sebagai rujukan.

 user www-data;
 worker_processes 1;
 pid /run/nginx.pid;

 events {
 worker_connections 1024;
 multi_accept on;
 }

 http {

 ##
 # Basic Settings
 ##

 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 15;
 server_tokens off;
 client_max_body_size 64m;
 # server_names_hash_bucket_size 64;
 # server_name_in_redirect off;
 
 include /etc/nginx/mime.types;
 default_type application/octet-stream;

 ##
 # Logging Settings
 ##
 access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;
 ##
 # Gzip Settings
 ##
 
 gzip on;
 gzip_disable "msie6";

 # gzip_vary on;
 gzip_proxied any;
 gzip_comp_level 2;
 # gzip_buffers 16 8k;
 # gzip_http_version 1.1;
 gzip_types text/plain text/css application/json application/javascript $

 ##
 # Virtual Host Configs
 ##

 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*;

 server {
 listen 80 default_server;
 server_name _;
 return 444;
       }

 }
 #mail {
 # # See sample authentication script at:
 # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
 #
 # # auth_http localhost/auth.php;
 # # pop3_capabilities "TOP" "USER";
 # # imap_capabilities "IMAP4rev1" "UIDPLUS";
 #
 # server {
 # listen localhost:110;
 # protocol pop3;
 # proxy on;
 # }
 #
 # server {
 # listen localhost:143;
 #
 # server {
 # listen localhost:110;
 # protocol pop3;
 # proxy on;
 # }
 #
 # server {
 # listen localhost:143;
 # protocol imap;
 # proxy on;
 # }
 #}
 

About author

Related articles

0 Comments

No Comments Yet!

You can be first to comment this post!

Leave a Reply