Konfigurasi LEMP dalam Arch Linux
Berpandukan ArchWiki
Assalamu’alaikum.
LEMP
dalam hantaran saya kali ini merangkumi empat komponen berikut:
- L =
Linux
sebagai distro untuk membangunkan web ; - E =
nginx
sebagai pelayan (server) web HTTP ; - M =
MariaDB
sebagai pelayan pangkalan data ; & - P =
PHP
sebagai bahasa skrip yang dimasukkan ke dalam HTML.
MySQL
manakala "P" pula boleh merujuk kepada bahasa pengaturcaraan Python
dan Perl
.Penulisan ini mengumpulkan konfigurasi untuk tiga kumpulan perisian yang tidak asing lagi digunakan dalam pembangunan aplikasi atau laman web dinamik (juga digelar sebagai “Back-end development”), iaitu nginx
, PHP
dan MariaDB
.
PEMASANGAN
Pasang pakej-pakej berikut:
bash
sudo pacman -Rns nginx-mainline mariadb php-fpm php-gd php-sqlite
KONFIGURASI NGINX
dan PHP
Penetapan untuk nginx
dibuat agar dapat server ini berjalan tanpa keistimewaan (yakni sebagai pengguna biasa, bukan sebagi root
).
Sunting fail konfigurasi
nginx
:/etc/nginx/nginx.conf
#user http; worker_processes auto; worker_cpu_affinity auto; # Load all installed modules include modules.d/*.conf; events { worker_connections 1024; } http { charset utf-8; sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; log_not_found off; types_hash_max_size 4096; server_names_hash_bucket_size 128; client_max_body_size 16M; # MIME include mime.types; default_type application/octet-stream; # logging access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log warn; keepalive_timeout 65; server { listen 8080; server_name localhost; root /home/<user>/.local/share/nginx/html; location / { index index.php index.html index.htm; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ [^/]\.(php|html|htm)(/|$) { # 404 try_files $fastcgi_script_name = 404; # default fastcgi_params include fastcgi_params; # fastcgi settings fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; # fastcgi params fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; #fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/"; } } }
Direktori-direktori projek ditempatkan di$HOME/.local/share/nginx/html
. Gantikan <user> kepada nama pengguna pada barisroot
di bawah seksyen "server {
".Tetapan untuk membenarkan server dijalankan sebagai pengguna biasa bagi
nginx
.bash
sudo mkdir /etc/systemd/system/nginx.service.d
Tambah fail berikut:
/etc/systemd/system/nginx.service.d/user.conf
[Service] User=<user> Group=<group> NoNewPrivileges=yes RuntimeDirectory=nginx PIDFile=/run/nginx/nginx.pid ExecStart= ExecStart=/usr/bin/nginx -g 'pid /run/nginx/nginx.pid; error_log stderr;' ExecReload= ExecReload=/usr/bin/nginx -s reload -g 'pid /run/nginx/nginx.pid; error_log stderr;' StateDirectory=nginx LogsDirectory=nginx
Tukarkan <user> dan <group> kepada nama pengguna.Salin fail-fail
HTML
dari direktori/usr/share/nginx/html
ke dalam direktori$HOME/.local/share/nginx/html
.Mulakan dan benarkan servis
nginx
untuk berjalan secara automatik selepas boot.bash
sudo systemctl enable --now nginx
Buka pelayar web dan akses pautan http://localhost:8080/ untuk menyemak sama ada pemasangan pelayan
nginx
berjaya serta berlangsung seperti sepatutnya atau tidak. Jika mendarat di laman yang menyambut kedatangan anda ke pelayan webnginx
, maka tahniah! Anda berjaya.Sunting fail seterusnya dengan menyahkomen baris-baris di bawah untuk
PHP
:/etc/php/php.ini
[PHP] display_errors = On ... extension=gd extension=mysqli extension=pdo_mysql extension=pdo_sqlite extension=sqlite3 ... [Date] date.timezone = Asia/Kuala_Lumpur
Konfigurasi untuk membolehkan direktori data
HTTP
atau laman web diakses sebagai pengguna. Nyahkomen dan sunting baris-baris berikut:/etc/php/php-fpm.d/www.conf
[www] user = <user> group = <group> listen.owner = <user> listen.group = <group> security.limit_extensions = .php .html .htm
Tukarkan <user> dan <group> kepada nama pengguna.Buat satu fail
PHP
. Akses kepada fail ini akan membawa admin ke halaman maklumatPHP
yang terpasang.$HOME/.local/share/nginx/html/info.php
<?php phpinfo(); ?>
Mulakan dan benarkan servis
php-fpm
untuk berjalan secara automatik selepas boot.bash
sudo systemctl enable --now php-fpm
Akses pautan ini, http://localhost:8080/info.php untuk melihat kandungan maklumat tersebut. Sampel:
KONFIGURASI MARIADB
Saya ikuti saja mana-mana langkah relevan yang disarankan di halaman MariaDB - Archwiki, kecuali ada bahagian tertentu yang saya langkau seperti bab 3.3 sehingga 3.5 di bawah perkara keselamatan (tidak hanya terhad kepada bab ini).
Mulakan dan benarkan servis mariadb
secara automatik selepas boot dengan arahan di bawah:
bash
sudo systemctl enable --now mariadb
Langkah Tambahan
Konfigurasi Firewall dengan
UFW
. Benarkan port3306
:bash
sudo ufw allow 3306
(Dalam kes menaik taraf) Sekiranya pengguna
root
didapati bermasalah, cipta semula pengguna tersebut.bash
sudo mariadb -u root
sql
DROP USER 'root'@'localhost'; CREATE USER 'root'@'localhost' IDENTIFIED BY 'new_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Untuk mengurus pangkalan data, saya selesa menggunakan cara di bawah:
Mula-mula, log masuk sebagai pengguna
mysql
.bash
sudo -su mysql
Kemudian, jalankan
mariadb
sebagairoot
atau pengguna yang telah ditambah serta diberikan keistimewaan untuk mengakses pangkalan data. Contoh:bash
mariadb -uroot -p
Alhamdulillah. Selesai sudah konfigurasi lengkap untuk pemasangan pelayan LEMP
secara lokal di komputer peribadi. Bolehlah teruskan pula belajar membina pangkalan data dengan MariaDB
dan bangunkan web melalui bahasa skrip PHP
.
Sekian.