Cài đặt LEMP server trên Debian 9 VPS với lượng RAM khiêm tốn

Trước đây, tôi có cài đặt LEMP trên Ubuntu VPS với lượng RAM rất khiêm tốn chỉ 128Mb . Bẵng đi một thời gian khá lâu tôi không truy cập vào VPS để vọc thêm gì nữa cả. Cho đến hôm qua tôi dùng lệnh cập nhật cho VPS thì nó bị đứng và treo giữa chừng nên tiện tay tôi xóa và cài đặt lại hệ điều hành. Rất tiếc, Ubuntu 14 không còn trong mục tùy chọn cài đặt của VPS nên tôi bắt buộc phải nâng cấp. Lần này tôi thử cài đặt Debian bản mới nhất cho đến thời điểm hiện tại để chạy một web wordpress. Thành công! Với giá chỉ tầm khoảng 15USD/năm cho VPS chạy site wordpress thì tôi nghĩ nó khá là tiết kiệm cho những người mới bắt đầu làm site wordpress.

Để bắt đầu, bạn có thể tham khảo sơ qua bài viết lần trước. Mặc dù có một chút ít thay đổi về mysql, về file cấu hình nhưng tôi thấy lại dễ cài đặt hơn so với bản Ubuntu lần trước vì tôi thấy hầu như không phải gặp lỗi nào.

1. L - cài đặt phiên bản Linux

Lần này phiên bản cài đặt là Debian 9 minimal

2. E - cài đặt Nginx

apt install nginx-full

3. M - cài đặt và cấu hình MySQL để quản lý dữ liệu website

apt update
apt install mariadb-server
mysql_secure_installation

Backup file cấu hình

mv /etc/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/mysql.cnf.backup

Tạo file cấu hình mysql.cnf ở thư mục /etc/mysql/conf.d/ với nội dung bên dưới. Hoặc bạn có thể tải tại đây.

4. P - cài đặt và cấu hình PHP Processor

PHP bản mặc định trên Debian là php7.0, nếu bạn muốn cài phiên bản cao hơn thì có thể tham khảo các bài viết bên dưới

apt install php-fpm php-mysql php-zip

Kiểm tra trạng thái của php sau khi cài đặt

systemctl status php7.0-fpm.service

Chỉnh sửa file cấu hình, hoặc tải về và upload lên thư mục fpm

nano /etc/php/7.0/fpm/php.ini
service php7.0-fpm restart

5. Cấu hình Nginx để sử dụng PHP Processor

Tải file default và upload theo đường dẫn sau.

/etc/nginx/sites-available/default

Khởi động lại nginx service nginx restart

Kiểm tra sự làm việc của nginx và php bằng cách tạo file test.php có nội dung bên dưới

nano /srv/www/test.php
<?php
phpinfo();
?>

Sau đó gõ vào trình duyệt địa chỉ sau:

http://server_domain_name_or_IP/test.php

Sau khi mọi thứ đã ok bạn tiến hành tạo cơ sở dữ liệu maridb và bắt đầu cài đặt wordpress.

Để tạo một cơ sở dữ liệu tên là “onlinekiemcom” và một user tên là “kiemcom” và nâng tất cả quyền cho user “kiemcom” trên cơ sở dữ liệu “onlinekiemcom”, thực thi lệnh sau (mỗi hàng là một lệnh).

mysql -u root -p mysql
create database onlinekiemcom charset utf8; 
create user 'kiemcom'@'localhost' identified by 'passcuaban';
grant all privileges on onlinekiemcom.* to 'kiemcom'@'localhost' with grant option;
flush privileges;

Nội dung file cấu hình mysql.cnf

# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

# The MySQL server
[mysqld]
user            = mysql
port            = 3306
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql

skip-external-locking
key_buffer_size         = 16M
max_allowed_packet      = 1M
table_open_cache        = 64
sort_buffer_size        = 512K
net_buffer_length       = 8K
read_buffer_size        = 256K
read_rnd_buffer_size    = 512K
myisam_sort_buffer_size = 8M

#if no other servers are going to be connecting to this server, uncomment the following line
#bind-address            = 127.0.0.1 

skip-innodb
default-storage-engine = MyISAM

max-connections = 25

query-cache-size  = 2M
query-cache-limit = 1M

thread-stack      = 256K
thread-cache-size = 2M

slow-query-log
long_query_time   = 5

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size  = 20M
sort_buffer_size = 20M
read_buffer      = 2M
write_buffer     = 2M

[mysqlhotcopy]
interactive-timeout

Tham khảo:

https://www.linode.com/docs/web-servers/nginx/serve-php-php-fpm-and-nginx/

https://www.cyberciti.biz/faq/how-to-reload-restart-php7-0-fpm-service-linux-unix/

http://www.techspacekh.com/installing-and-configuring-mariadb-server-on-debian-9-stretch/

https://stackoverflow.com/questions/46378017/install-php5-6-in-debian-9