Khi thuê VPS, để chạy được website WordPress bạn cần một tập hợp các phần mềm cần thiết.
LEMP là nhóm phần mềm phổ biến hiện nay. Chắc bạn đã vô tình nghe nói đến thuật ngữ. Vậy LEM là gì?
LEMP là gì?
LEMP là chữ viết tắt cho các nhóm phần mềm sau: Linux, NGINX (được gọi là engine x), Maria DB và PHP.
Linux là một dòng hệ điều hành. Ubutun và CentOS là 2 hệ điều hành Linux phổ biến khi xây dựng VPS chạy website WordPress.
NGINX là web server phần mềm chịu trách nhiệm xử lý các request từ trình duyệt. Nó là web server có hiệu suất tốt so với Apache.
Maria DB là phiên bản tối ưu của cơ sở dữ liệu MySQL.
PHP-FPM chịu trách nhiệm xử lý code PHP, ngôn ngữ được sử dụng để phát triển website WordPress.
Trong bài viết ngày hôm nay mình sẽ hướng dẫn bạn cách cài đặt LEMP trên hệ điều CentOS 7.
Sau khi hoàn thành bài viết, bạn sẽ cài đặt hoàn chỉnh LEMP sử dụng các phiên bản phần mềm mới nhất ví dụ như PHP 7.
Chuẩn bị
Để thực hiện các bước cài đặt như bên dưới bạn cần chuẩn bị:
- Một máy chủ Linux mới tinh cài đặt CentOS. Nếu bạn chưa thuê VPS mình khuyến khích bạn chọn DigitalOcean hoặc A2Hosting.
- Phần mềm MobaXTerm để kết nối với máy chủ với user root.
- Trong bài mình sử dụng trình biên tập nano trên Linux, bạn cần thành thạo công cụ này.
Bước 1: Cài đặt NGINX trên CentOS 7
Vì NGINX không có sẵn repository của CentOS vì vậy chúng ta phải cài repository EPEL với câu lệnh sau:
yum install epel-release -y
Tiếp theo chúng ta cài đặt NGINX:
yum install nginx -y
Chúng start với Nginx với câu lệnh sau:
systemctl start nginx
Để nginx chạy khi khởi động lại VPS bạn sử dụng lệnh sau:
systemctl enable nginx
Để kiếm tra xem Nginx đã cài đặt thành công hay không, bạn mở trình duyệt và truy cập vào địa chỉ IP của máy chủ. Nếu bạn nhìn thấy trang sau là thành công:
Bước 2 Cài đặt PHP 7.1 trên CentOS 7
Máy chủ bạn còn mới tính do vậy nó có thể không có tiện ích wget. Đầu tiên bạn cần cài đặt nó:
yum instal wget -y
Bây giờ bạn cần cài đặt repository chứa package PHP 7.1
yum install yum-utils -y
yum-config-manager --enable remi-php71
Tiếp theo bạn cài package PHP:
yum --enablerepo=remi,remi-php71 install php-fpm php-common
Cài đặt một số module PHP bổ biến. Sau này nếu bạn cần cài thêm thì tham khảo câu lệnh như thế này:
yum --enablerepo=remi,remi-php71 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y
Chúng ta cần phải thực hiện một số bước cấu hình PHP để tăng tính bảo mật và làm việc với nginx.
Đầu tiên bạn cần mở php.ini với nano:
nano /etc/php.ini
Tìm đến dòng có cgi.fix_pathinfo bỏ comment là dấu # và thay đổi giá trị từ từ 1 thành 0.
Sau khi sửa xong ấn Ctrl + O rồi enter để lưu lại và Ctrl + X để thoát.
Mặc định PHP sẽ thực thi file PHP gần nhất nếu không tìm thấy file php được request. Cấu hình như thế này ngăn chặn việc thực thi PHP không mong muốn.
cgi.fix_pathinfo=0
Mẹo: trong nano bạn có thể dùng phím tắt Ctrl + W để tìm từ bạn muốn.
Tiếp theo mở file /etc/php-fpm.d/www.conf
nano /etc/php-fpm.d/www.conf
Tìm dòng có listen nó đang nghe localhost với port 9000. Bạn cần chuyển nó thành Unix socket. Tức là lúc bộ máy PHP sẽ thực thi PHP ở gửi tới địa chỉ này.
listen = /run/php-fpm/php-fpm.sock
Tiếp theo tìm listen.owner và listen.group, bỏ comment và thay đổi như sau:
listen.owner = nginx
listen.group = nginx
Tiếp theo thay dòng user = apache và group = apache thành
user = nginx
group = nginx
Thay đổi xong thì lưu lại và thoát khỏi nano. Sau đó bạn khởi động lại PHP-FPM:
systemctl restart php-fpm
Bảo mật php-fpm.sock với 2 câu lệnh sau:
chmod 666 /run/php-fpm/php-fpm.sock
chown nginx:nginx /run/php-fpm/php-fpm.sock
Khởi động lại php lần nữa:
systemctl restart php-fpm
Cầu hình NGINX
Ở trên bạn đã cấu hình php làm việc nginx. Phía nginx bạn cũng cần cấu hình.
Mở file /etc/nginx/nginx.conf với nano:
nano /etc/nginx/nginx.conf
Chắc chắn dòng sau có trong phần server:
include /etc/nginx/default.d/*.conf;
Thoát khỏi nano. Tạo file /etc/nginx/default.d/default.conf mới nano:
nano /etc/nginx/conf.d/default.conf
Copy và paste dòng code vào file đang mở trong nano: (nhơ thay your_server_ip bằng ip server của bạn)
server {
listen 80;
server_name your_server_ip;
# note that these lines are originally from the "location /" block
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Code này sẽ bảo cách nginx xử lý code PHP với FAST CGI.
Khởi động lại nginx:
systemctl restart nginx
Kiểm tra PHP đã chạy hay chưa
Tạo file info.php ở vị trí như sau:
nano /usr/share/nginx/html/info.php
Copy và paste dòng code sau vào file đang mở trong nano:
<?php
phpinfo();
?>
Bây giờ bạn có thể truy cập địa chỉ sau: http://your server's IP address/info.php. Nếu bạn nhìn thấy màn hình như sau là OK:
Bước 3: Cài đặt Maria DB
Chạy lệnh sau để cài đặt Maria DB:
yum install mariadb mariadb-server
Chạy Maria DB với lệnh sau:
systemctl start mariadb.service
Chạy Maria DB khi khởi động VPS với lệnh sau:
systemctl enable mariadb.service
Mặc định Maria DB chưa được bảo mật tốt lắm. Bạn chạy lệnh sau để tăng thêm tính bảo mật cho Maria DB.
/usr/bin/mysql_secure_installation
Đầu tiên nó sẽ hỏi bạn Enter current password for root. Lúc này bạn chưa có bạn password cho root nên cứ gõ Enter.
Tiếp theo nó hỏi Set Root Password? bạn gõ y rồi nhập vào một password cho tài khoản root.
Những câu hỏi sau này bạn cứ chọn y hết.
Cuối cùng bạn khởi động lại Maria DB:
systemctl restart mariadb.service
Đến đây bạn đã cài đặt xong LEMP cho CentOS 7.
Nếu bạn gặp khó khăn gì, cứ để lại comment bên dưới.
Yêu thích viết blog.