Server web Debian
Debian adalah pilihan tepat untuk menyiapkan server web linux. Menurut statistik saat ini, ini adalah OS server paling populer diikuti oleh centos.
Saya penggemar berat perintah apt/dpkg/gdebi, yang membuatnya sangat mudah untuk menginstal dan memperbarui paket pada sistem.
Untuk menyiapkan server web php fungsional lengkap, Anda perlu menginstal beberapa hal tambahan yang mencakup server web dan database. Dalam posting ini kita akan menyiapkan nginx, php, php-fpm, apc dan MariaDB.
Nginx adalah server web modern, yang telah dirancang untuk menangani lalu lintas dalam jumlah besar menggunakan sumber daya paling sedikit dalam hal RAM dan CPU.
Sebelum nginx, server web tradisional yang digunakan di seluruh internet adalah apache. Namun seiring dengan semakin padatnya internet, kebutuhan akan server web yang lebih cepat dan efisien semakin meningkat.
Nginx vs Apache
Apache dengan desain sangat besar dan memiliki banyak fitur, yang sebagian besar tidak diperlukan untuk situs web biasa. Itu mungkin dirancang untuk memenuhi kebutuhan semua orang, tetapi ini akhirnya menjadikannya server web yang besar dan berat dengan sebagian besar fitur yang tidak digunakan.
Nginx di sisi lain adalah server web yang sangat ramping dan cepat yang sepenuhnya berfokus pada kecepatan, skalabilitas, dan efisiensi.
Teknis bagaimana melakukannya besar dan di luar cakupan posting ini. Mungkin kita bisa melihat nanti. Sekadar informasi, situs web ini berjalan di nginx.
Sekarang tanpa diskusi lebih lanjut mari kita mulai bekerja.
1. Instal Nginx di Debian
Paket nginx ada di repositori debian sehingga Anda tidak perlu mencari di tempat lain. Jalankan apt-get dan instal.
# apt-get install nginx
Sekarang luncurkan server nginx.
# service nginx start Starting nginx: nginx.
Sekarang akses server nginx dari browser dengan membuka url
http://localhost/
dan Anda akan mendapatkan pesan selamat datang
Welcome to nginx!
Catatan penting
Ada beberapa hal yang harus Anda hafal untuk mengelola server nginx Anda dengan lebih baik. File konfigurasi nginx ditemukan di lokasi berikut
/etc/nginx/
[email protected]:/etc/nginx# ls conf.d koi-win naxsi.rules scgi_params uwsgi_params fastcgi_params mime.types nginx.conf sites-available win-utf koi-utf naxsi_core.rules proxy_params sites-enabled
Kami tidak akan mengubah file nginx.conf secara langsung. Sebagai gantinya, kami membuat file konfigurasi terpisah untuk setiap vhost/situs dan menyimpannya di direktori berikut.
/etc/nginx/sites-available /etc/nginx/sites-enabled
Ini mirip dengan apache. Direktori yang diaktifkan situs berisi konfigurasi untuk vhost yang akan diaktifkan. Ini berisi symlink ke file konfigurasi yang sesuai di direktori yang tersedia di situs.
Siapkan virtualhost
Sekarang kita telah menginstal nginx, saatnya untuk menyiapkan virtual host. Inilah yang akan Anda lakukan di server web nyata untuk menyiapkan situs Anda.
Di dalam /etc/nginx/sites-available Anda akan melihat file bernama default. Ini adalah file template untuk membuat file konfigurasi Anda sendiri. Cukup salin dan beri nama ke situs Anda.
# cp default binarytides.com [email protected]:/etc/nginx/sites-available# ls binarytides.com default
Kami memilih untuk memberi nama file konfigurasi dengan nama situs, sehingga lebih mudah untuk diingat dan dipelihara.
Sekarang buka binarytides.com dan edit sesuai kebutuhan Anda.
Anda akan melihat server blokir seperti ini
server { #listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost;
Hal pertama yang harus dikonfigurasi di sini adalah nama_server. Beri nama ke situs Anda. Misalnya
server_name binarytides.com or server_name binarytides.com www.binarytides.com
Ketika seseorang membuka binarytides.com di browsernya, header http berisi nama host ini yang akan diambil oleh nginx dan mencari blok server yang cocok. Ketika blok server yang cocok ditemukan, itu akan menggunakan konfigurasi dari blok server tertentu.
Hal lain yang perlu dikonfigurasi adalah direktori root web untuk situs/vhost ini. Perhatikan bahwa ini secara default /usr/share/nginx/www yang mungkin ingin Anda ubah menjadi sesuatu yang lain.
Konvensi umum adalah memiliki direktori terpisah untuk setiap vhost. Misalnya
/usr/share/nginx/www/binarytides.com/ /usr/share/nginx/www/google.com/
Jadi buat direktori yang sesuai dan arahkan pengaturan root di file konfigurasi ke direktori.
... root /usr/share/nginx/www/binarytides.com; ...
Setelah melakukan perubahan ini, simpan file konfigurasi dan buat symlink direktori /etc/nginx/sites-enabled.
[email protected]:/etc/nginx/sites-available# ls binarytides.com default [email protected]:/etc/nginx/sites-available# cd .. [email protected]:/etc/nginx# cd sites-enabled/ [email protected]:/etc/nginx/sites-enabled# ln -s ../sites-available/binarytides.com [email protected]:/etc/nginx/sites-enabled# ls binarytides.com default [email protected]:/etc/nginx/sites-enabled#
Sekarang uji konfigurasi baru Anda
# nginx -t nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Baris terakhir dari output harus mengatakan berhasil, atau beberapa kesalahan akan ditampilkan. Ini mungkin menunjukkan beberapa peringatan yang dapat diperbaiki nanti.
Terakhir restart nginx agar konfigurasi baru diterapkan
# service nginx restart Restarting nginx: nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored nginx. [email protected]:/etc/nginx/sites-enabled#
Jadi konfigurasi baru telah berlaku. Sekarang buat file index.html baru di root web baru dari host virtual ini dan buka dari browser dan itu akan berfungsi.
2. Instal php dan php-fpm
Hal berikutnya yang harus diinstal adalah php interpreter dan php-fpm. Php-FPM adalah pengelola proses fastcgi khusus untuk php yang dapat berinteraksi atau terhubung dengan server web apa pun yang kompatibel dan mengelola proses php untuk memproses permintaan php.
Nginx <== communicates ==> Php-FPM <== manages ==> php child process
Instal paket yang diperlukan terlebih dahulu.
# apt-get install php5 php5-fpm
Ini akan secara otomatis menginstal dependensi yang diperlukan. Anda juga dapat menginstal paket php5-cli jika Anda memerlukan perintah php untuk menjalankan skrip php.
Php-fpm runs as a separate server and nginx communicates with it over a socket. Hence the php execution is totally outside the server. Also since fpm keeps php process persistent, it fully supports APC.
Sekarang cari file konfigurasi php fpm. File di terletak di
/etc/php5/fpm/
Kumpulan adalah sekelompok proses php yang berjalan dengan pengguna/grup yang sama. Jadi jika Anda ingin file php dari setiap situs dijalankan dengan izin pengguna yang terpisah, maka Anda perlu membuat kumpulan fpm yang terpisah. Demi kesederhanaan, kami hanya menampilkan satu kumpulan di sini.
File konfigurasi pool berada di dalam direktori pool.d. Navigasi di
[email protected]:/etc/php5/fpm/pool.d# ls www.conf
Buka file www.conf yang lagi-lagi merupakan template untuk Anda gunakan dan buat file konfigurasi terpisah untuk setiap kumpulan.
Tampak seperti ini
; Start a new pool named 'www'. ; the variable $pool can we used in any directive and will be replaced by the ; pool name ('www' here) [www] ; Per pool prefix ; It only applies on the following directives: ; - 'slowlog' ; - 'listen' (unixsocket) ; - 'chroot' ; - 'chdir' ; - 'php_values' ; - 'php_admin_values' ; When not set, the global prefix (or /usr) applies instead. ; Note: This directive can also be relative to the global prefix. ; Default Value: none ;prefix = /path/to/pools/$pool ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www-data group = www-data ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = /var/run/php5-fpm.sock ; Set listen(2) backlog. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) ;listen.backlog = 128
Hal di atas sebagian besar terdiri dari komentar dan 4 baris yang paling penting adalah
1. [www] this is the pool name 2. user = www-data this is the user with whose permissions the php script would be run 3. group = www-data this is the group 4. listen = /var/run/php5-fpm.sock this is the socket for communicating with this pool. This socket must be given to nginx for nginx to be able to talk to fpm
Hubungkan fpm dengan nginx
Kami tidak akan banyak berubah di sini. Catat saja jalur soketnya. Kita harus memasukkan ini ke dalam file konfigurasi nginx. Kembali ke konfigurasi nginx Anda dan buka lagi.
Ini berisi bagian untuk konfigurasi php fpm yang terlihat seperti ini
# 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/php5-fpm.sock; # fastcgi_index index.php; # include fastcgi_params; #}
Batalkan komentar dan buat seperti ini
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/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
Uji PHP
Sekarang siapkan file di root web dengan panggilan phpinfo.
<?php phpinfo();
Dan kemudian buka file di browser dan blok informasi php akan muncul, mengatakan bahwa php sudah diatur dan berfungsi dengan benar.
Hal lain yang dapat Anda lakukan adalah menambahkan index.php ke daftar file indeks. Sehingga ketika mengakses direktori, jika tidak ada file yang ditentukan, maka index.php akan dipanggil.
root /usr/share/nginx/www/binarytides.com; index index.html index.htm index.php;
Setup apc - cache php alternatif
APC adalah cara yang bagus untuk mempercepat eksekusi skrip php. APC mengkompilasi kode php dan menyimpan opcode dalam memori dan menggunakannya lain kali tanpa mengkompilasi kode php yang sama lagi dari file. Ini secara drastis mempercepat eksekusi. Selain cache opcode, apc juga menawarkan cache pengguna untuk menyimpan data mentah untuk aplikasi php di memori.
Php pada versi 5.5 memiliki fitur baru yang disebut OPcache yang melakukan hal yang sama seperti cache opcode apc sehingga apc tidak digunakan lagi.
Menyiapkan apc sangat sederhana dan cepat. Cukup instal paket apc untuk php
# apt-get install php-apc
Kemudian restart php fpm
# service php5-fpm restart
Sekarang periksa halaman phpinfo lagi dan seharusnya ada detail apc juga. File konfigurasi apc terletak di
/etc/php5/fpm/conf.d/20-apc.ini
Konfigurasi dapat diubah sedikit untuk kinerja optimal untuk kebutuhan Anda. Berikut adalah jenis konfigurasi yang saya gunakan
extension=apc.so apc.enabled=1 apc.shm_size=128M apc.ttl=3600 apc.user_ttl=7200 apc.gc_ttl=3600 apc.max_file_size=1M
Periksa daftar parameter konfigurasi apc untuk informasi lebih lanjut.
3. Instal MariaDB di Debian
Sekarang tibalah komponen terakhir dan terakhir dari tumpukan LEMP. Itu adalah database MariaDB dan bukan mysql. Nah sekarang Anda harus tahu bahwa mysql ada di tangan oracle dan bukan lagi milik komunitas. Jadi korps utama sudah mulai beralih ke mariadb. Hal yang baik adalah bahwa mariadb adalah biner yang kompatibel dengan mysql dengan banyak fitur tambahan. Jadi jika Anda sudah menggunakan mysql untuk aplikasi php Anda, maka beralih ke mariadb akan sangat mudah.
MariaDB tidak ada di debian repositori. Untuk mendapatkan repositori kunjungi halaman berikut
https://downloads.mariadb.org/mariadb/repositories/Pilih Debian sebagai distro, Wheezy sebagai rilis dan versi 10.0 dari mariadb. Kemudian pilih cermin di sisi kanan. Sekarang gulir ke bawah ke bagian bawah halaman untuk menemukan detail repositori.
Berikut adalah perintah yang saya dapatkan
sudo apt-get install python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://mirrors.fe.up.pt/pub/mariadb/repo/10.0/debian wheezy main'
Sekarang perbarui cache apt dan instal paket mariadb
sudo apt-get update sudo apt-get install mariadb-server mariadb-client
Saat instalasi mariadb akan meminta kata sandi root pengguna. Masukkan kata sandi dan pastikan untuk tidak lupa.
Setelah instalasi selesai, periksa versi mariadb Anda
# mysql -V mysql Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1
Perhatikan bahwa nama perintahnya sama dengan mysql. Tapi nama mariadb ada di informasi versi.
Server web sudah siap
Jadi sekarang web server LEMP sudah siap digunakan. Anda mungkin ingin menginstal beberapa barang tambahan seperti phpmyadmin untuk mengelola database Anda dengan lebih baik. Phpmyadmin ada di repositori debian jadi instal langsung dari sana.
Ada pertanyaan ? Jangan ragu untuk berkomentar di bawah.