Cài đặt webserver LEMP chạy wordpress trên VPS Ubuntu 14.04

Tuần vừa rồi tôi tìm cách phát triển một site buôn bán dựa trên nền Wordpress. Tôi đã mua sẵn domain và đang lay hoay tìm host cho site của mình. Các host uy tín tôi tham khảo có giá khá đắt so với một site mới như site của tôi. Do đó sau một hồi tham khảo tôi quyết định sử dụng cái VPS cấu hình thấp mua từ đời nào của Ramnode mà lúc trước tôi có ý định dùng nó để làm VPN. Cấu hình VPS thấp nhất tôi mua từ Ramnode như sau:

VPS Ramnode

Qua những đánh giá và tìm hiểu trên mạng (1) tôi thấy VPS này có thể kham nổi web site mới phát triển của tôi nên tôi quyết định dùng nó để cài đặt webserver chạy hệ quản trị nội dung (CMS) WordPress một mã nguồn mở và hoàn toàn miễn phí. Vì WordPress được viết bằng ngôn ngữ lập trình PHP và sử dụng MySQL database nên tham khảo và có hai tùy chọn để cài đặt là LAMP và LEMP.

“LAMP” có nghĩa là dùng hệ điều hành trên nền tảng Linux, Apache web server, MySQL database server, và ngôn ngữ lập trình PHP. Cấu hình “LEMP” thay thế thành phần Apache web server bằng Nginx (được phát âm trong tiếng Anh là “engine x,” chữ “E” trong LEMP) để tăng khả năng của server lên nhiều lần, đáp ứng những yêu cầu từ máy khách. Ở đây cấu hình VPS của tôi quá yếu nến không thể chọn LAMP, do đó LEMP là sự lựa chọn gần như duy nhất.

Bây giờ chúng ta bắt đầu với việc cài đặt. Lưu ý bạn không cần gõ thêm sudo nếu bạn đang ở tài khoản quản trị root

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

Trước khi bắt đầu mọi thứ, ta phải chọn một Linux distro. Như đã được đề cập ở tiêu đề, phiên bản Linux được chọn ở đây là Ubuntu 14.04. Trong phần tùy chọn cài đặt hệ điều hành của Ramnode chúng ta có tùy chọn Ubuntu 14.04 minimal như hình bên dưới. Ta chọn phiên bản 32bit này vì nó sẽ không cài đặt sẵn các thành phần không cần thiết dẫn tới việc hao tốn lượng RAM khiêm tốn trên máy chủ. Phiên bản ta chọn nên là LTS (Long Term Support - bản được hỗ trợ lâu dài) trong trường hợp bạn chọn nhà cung cấp có ghi rõ. Với Ramnode, họ đã chọn sẵn cho ta phiên bản LTS khi cài Ubuntu 14.04.

Linux Distro

2. E - cài đặt Nginx

Cập nhật mọi thứ trước khi cài đặt

sudo apt-get update

Sau đó tiến hành cài đặt Nginx bằng câu lệnh

sudo apt-get install nginx hoặc apt-get install nginx-full

Với Ubuntu 14.04, Nginx sẽ tự động chạy sau khi được cài đặt

Sau khi cài đặt bạn có thể kiểm tra Nginx đã được cài đúng chưa bằng cách truy cập vào địa chỉ IP của VPS. Nếu mọi thứ đã cài đặt và cấu hình đúng thì bạn sẽ thấy màn hình chào như hình bên dưới.

Trang mặc định sau khi cài Nginx

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

sudo apt-get install mysql-server

Đối với Ubuntu 14.04 sau khi cài đặt sẽ báo lỗi đại loại như “E: Sub-process /usr/bin/dpkg returned an error code (1)” do đó bạn cần thêm câu lệnh sau để khắc phục lỗi (2).

apt-get --reinstall install bsdutils

Sau đó kiểm tra lại mysql đã hoạt động tốt chưa bằng câu lệnh sau

mysqladmin -u root -p status

Kết quả trả về của câu lệnh và cách nhận biết mysql đã hoạt động tốt chưa các bạn tham khảo thêm ở link sau

http://www.cyberciti.biz/faq/how-to-find-out-if-mysql-is-running-on-linux/

sudo mysql_install_db
sudo mysql_secure_installation

Việc tinh chỉnh file cấu hình để phù hợp với lượng RAM khiêm tốn của VPS. Để thực hiện việc tinh chỉnh file cấu hình trước hết bạn cần phải lưu file dự phòng, mở file tinh chỉnh trong editor và sau khi chỉnh sửa file cấu hình bạn cần khởi động lại mysql

mv /etc/mysql/my.cnf /etc/mysql/my.cnf.backup
vi /etc/mysql/my.cnf

File tinh chỉnh cấu hình ở phần file đính kèm bên dưới được tinh chỉnh cho VPS có lượng RAM thấp như VPS tôi đang sử dụng. Bạn có thể download tại đây. Sau đó upload vào đúng đường dẫn như trên và khởi động lại mysql.

/etc/init.d/mysql restart

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

sudo apt-get install php5-fpm php5-mysql

Đến đây chúng ta đã có những thành phần PHP được cài đặt nhưng chúng ta cũng cần chỉnh sơ để thiết lập của chúng ta được bảo mật hơn bằng cách chỉnh sửa file php.ini ở đường dẫn sau

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

Chúng ta tìm đến thông tin “cgi.fix_pathinfo” bỏ dấu ; ở đầu dòng và chỉnh sửa số 1 ở thiết lập mặc định về 0

cgi.fix_pathinfo=0

Nhớ lưu và đóng file sau khi chỉnh sửa sau đó khởi động lại PHP processor

sudo service php5-fpm restart

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

Chúng ta sẽ đặt website ở thư mục /srv/www mặc dù chúng ta có thể đặt ở những nơi khác thường thấy như /var/www hoặc /home/site/www. Nhưng theo như tiêu chuẩn cây thư mục hệ thống file trên Linux (Linux Filesystem Hierarchy Standard) thì thư mục /srv/www là đúng nhất hoặc bạn có thể tham khảo thêm ở đây trong diễn đàn Ubuntu.

Bây giờ chúng ta mở file default theo đường dẫn sau và bắt đầu chỉnh sửa những nội dung bên dưới.

sudo vi /etc/nginx/sites-available/default

Cấu hình bên dưới được tinh chỉnh cho website sử dụng mã nguồn Wordpress, nó cân bằng giữa bảo mật và tốc độ. Xem thêm những cách cấu hình khác bên dưới (3)

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        root /var/www;
        index index.php index.html index.htm;
        server_name example.com www.example.com;
        location / {
        try_files $uri $uri/ /index.php?q=$uri$is_args&$args;
        # try_files $uri $uri/ /index.php?$args; // or this
        }
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
        location ~ /\. {
                deny all;
                log_not_found off;
                access_log off;
        }
    # comment this until WP config is properly setup (blocks access)
    # location ~* wp-config.php {
    #    deny all;
    # }
        location ~* /(?:uploads|files)/.*\.php$ {
                deny all;
        }
    location ~ \.(eot|ttf|woff|svg|css)$ {
        add_header Access-Control-Allow-Origin "*";
    }
     location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
        error_page 500 502 503 504 /50x.html;
                location = /50x.html {
                        root /var/www;
                }
}

Sau khi cấu hình chúng ta khởi động lại Nginx một lần nữa

sudo service nginx restart 

Kiểm tra Nginx có hoạt động tốt với PHP không bằng cách tạo một file test.php đặt ở đường dẫn sau

sudo vi /usr/share/nginx/html/test.php

Nội dung của file test.php như sau

<?php
phpinfo();
?>

Sau đó gõ vào trình duyệt đường dẫn sau

http://server_domain_name_or_IP/test.php

Bạn sẽ thấy một trang web được tạo bởi PHP với thông tin về server của bạn

kiểm tra sự làm việc của php

6. Lời kết và các tham khảo cần thiết

Bạn cần thực hiện những câu lệnh và việc sau đây để tạo một webserver (LEMP) chạy Wordpress trên VPS Ubuntu 14.04:

1. apt-get update
2. apt-get install nginx-full or apt-get install nginx => kiểm tra Nginx đã hoạt động chưa bằng cách gõ IP VPS vào trình duyệt
3. apt-get install mysql-server
4. apt-get --reinstall install bsdutils
5. mysql_install_db
6. mysql_secure_installation
7. mv /etc/mysql/my.cnf /etc/mysql/my.cnf.backup => tải file cấu hình mysql bên dưới chép theo đường dẫn /etc/mysql/my.cnf
8. apt-get install php5-fpm php5-mysql => tải file cấu hình php bên dưới chép theo đường dẫn /etc/php5/fpm/php.ini
9. service php5-fpm restart hoac /etc/init.d/php5-fpm restart
10. mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup => tải file default bên dưới chép theo đường dẫn /etc/nginx/sites-available/default
11. service nginx restart hoặc /etc/init.d/nginx restart

=====Tham khảo thêm=====

(1) https://hostingaz.vn/1775-kiem-tra-hieu-suat-vps-ramnode-128-su-dung-hzserver-va-3-blog-wordpress.html

http://www.lowendtalk.com/discussion/36713/what-do-you-run-on-your-128mb-256mb-ram-vps

(2) http://askubuntu.com/questions/506243/mysql-strange-installations-problems-logger-command-not-found

(3) http://www.wpmayor.com/ultimate-guide-setting-wordpress-vps-part-3/ http://www.evernote.com/l/AJS2sXjIiBVMwZ02KoSlkySX4_P6MDdCylQ/