Cách cài WordPress bằng LEMP Stack trên Ubuntu 16.04

2 năm trước

Cách cài WordPress bằng LEMP Stack trên Ubuntu 16.04

 

WordPress là CMS (content management system) thông dụng nhất trên internet. Nó cho phép bạn dễ dàng thiết lập các blog và website linh hoạt trên MySQL backend với PHP. 
Bên cạnh đó WordPress có tính khả dụng cao và là một lựa chọn tuyệt vời để có được một trang web đơn giản và nhanh chóng. Sau khi cài đặt, hầu hết các thao tác quản trị web có thể được thực hiện thông qua frontend.

Bài viết này sẽ hướng dẫn bạn cách cài WordPress với LEMP Stack ( Linux, Nginx, MySQL, PHP) trên server Ubuntu 16.04.

 

Yêu cầu

 

  • Một sudo user trên server: Việc cài đặt WordPress yêu cầu một non-root user với quyền sudo để thực hiện một số lệnh. Xem hướng dẫn tạo một sudo non-root user tại đây.
  • LEMP stack: WordPress cần đến web server, database và PHP để đảm bảo đáp ứng đủ các tính năng của nó, nên bạn cần LEMP stack trên server của mình. Tham khảo bài viết Cách cài đặt Linux, Nginx, MySQL, PHP( LEMP Stack) trên Ubuntu 16.04
  • SSL: TLS/SSL là công nghệ cho phép mã hóa dữ liệu nhằm bảo mật kết nối. 
    • Nếu server của bạn có domain name... Cách đơn giản nhất là sử dụng Let's Encrypt
    • Nếu không có domain name , bạn có thể sử dụng một self-signed certificate.

 

 

Bước 1: Tạo MySQL Database và User cho WordPress

WordPress sử dụng MySQL để quản lí và lưu trữ các website và thông tin về user. Ta sẽ tạo một database và một user cho WordPress.

Đăng nhập vào MySQL root (administrative) account:

 mysql -u root -p

 

Nhập vào root password khi được yêu cầu.

Tạo một database riêng cho WordPress. Tên của database là tùy ý, ở đây ta dùng wordpress :

 CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

 

 

Note
Các lệnh MySQL phải được kết thúc bằng dấu ";"

 

Tiếp theo ta sẽ tạo một user để làm việc với WordPress, ở đây là wordpressuser .

 GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; 

 

Lệnh trên thực hiện việc tạo một account mới, đặt mật khẩu và gán quyền cho nó. Các giá trị màu đỏ có thể được điều chỉnh tùy ý. 

Flush lại quyền truy cập để các thay đổi được cập nhật:

FLUSH PRIVILEGES;

 

Sau đó thoát khỏi MySQL:

 EXIT; 

 

 

Bước 2: Thay đổi cấu hình của Nginx

 

Mở file server block mặc định với quyền sudo :

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

 

Trong file server block chính, ta sẽ phải thêm một vài location block.

Bắt đầu bằng việc tạo các exact-matching location block cho các yêu cầu đến /favicon.ico và /robots.txt.

Ta sẽ tắt việc ghi log với các yêu cầu này, cho phép chúng được ưu tiên lưu và cache vì là những tài nguyên thường xuyên được truy cập đến. Ngoài ra bạn cũng có thể điều chỉnh file này để thêm các file extension khác.

/etc/nginx/sites-available/default
server {
. . .
location = /favicon.ico { log_not_found off; access_log off; }location = /robots.txt { log_not_found off; access_log off; allow all; }location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {expires max;log_not_found off;} . . .
}

Trong block location / , ta cần edit danh sách các try_files để thay vì trả về trang 404 Not Found, các truy cập không hợp lệ sẽ được điều hướng đến file index.php 

/etc/nginx/sites-available/default
server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args; }. . .
}

Lưu và đóng file.

Kiểm tra lỗi chính tả nếu có sau khi edit với lệnh:

 sudo nginx -t

 

Nếu không có lỗi, khởi động lại Nginx:

sudo systemctl reload nginx

 

 

Bước 3: Cài thêm các Extension cho PHP

 

Khi cài LEMP stack, ta chỉ cài đặt một vài extension để kết nối PHP với MySQL. WordPress và các plugin của nó yêu cầu nhiều hơn các extension để hoạt động được.

Tải về và cài thêm một số extension cho PHP với lệnh:

sudo apt-get update sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc 

 

 

 

Note
Mỗi plugin của WordPress có những yêu cầu khác nhau khi cài đặt, chẳng hạn các PHP package. Kiểm tra các yêu cầu bắt buộc của một plugin trước khi cài đặt nó. Ta cũng có thể dùng lệnh apt-get như trên để cài các gói đó.

 

Restart tiến trình PHP-FPM  để bộ xử lí PHP áp dụng các thay đổi.

sudo systemctl restart php7.0-fpm

 

 

Bước 4: Download WordPress

 

Chuyển đến một thư mục (cho phép thao tác ghi dữ liệu) rồi download file nén chứa WordPress:

cd /tmp curl -O https://wordpress.org/latest.tar.gz

 

 

Giải nén file vừa tải:

 tar xzvf latest.tar.gz 

 

Copy file cấu hình mẫu vào file cấu hình của WordPress:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

 

Tạo thư mục upgrade để WordPress không gặp lỗi xác nhận khi update một phiên bản mới:

 mkdir /tmp/wordpress/wp-content/upgrade

 

Giờ hãy copy tất cả file trong thư mục giải nén trên vào thư mục gốc. Cờ -a đảm bảo các quyền truy cập đến các file được duy trì, và dấu "." ở cuối địa chỉ thư mục cho phép ta copy tất cả các file, kể cả file ẩn.

 sudo cp -a /tmp/wordpress/. /var/www/html

 

 

Bước 5: Cấu hình thư mục WordPress

 

 

Thay đổi Quyền sở hữu và Quyền truy cập

 

Ta cần điều chỉnh để các file có thể ghi dữ liệu từ người dùng thường, và cho phép web server quyền truy cập và chỉnh sửa các thư mục và file bên trong nó.

Đầu tiên hãy gán quyền sở hữu tất cả các file trong thư mục gốc cho một username. Trong bài viết này username đó là sammy , thay tên này bằng username với quyền root ở trên. Ta cũng sẽ cho user này vào nhóm www-data :

sudo chown -R sammy:www-data /var/www/html

 

Tiếp theo ta sẽ thay đổi bit setgid của các địa chỉ trong thư mục gốc để các file được tạo mới thừa kế thư mục cha của nó ( chính là www-data) thay vì primary group của user. Điều này đảm bảo rằng khi tạo một file trong giao diện dòng lệnh, web server vẫn có quyền sở hữu với nó.

Lệnh thực hiện điều đó là:

sudo find /var/www/html -type d -exec chmod g+s {}\;

 

Tiếp theo ta sẽ gắn quyền cho các file. Đầu tiên là cấp quyền ghi đến thư mục wp-content để có thể thay đổi theme và plugin cho giao diện web:

 sudo chmod g+w /var/www/html/wp-content

 

Lệnh sau cấp quyền ghi cho web server đến thư mục chứa các theme và plugin:

sudo chmod -R g+w /var/www/html/wp-content/themessudo chmod -R g+w /var/www/html/wp-content/plugins

 

 

 

Thiết lập file cấu hình WordPress

 

Việc đầu tiên cần làm khi mở file là thêm vào một số secret key để đảm bảo bảo mật cho quá trình cài đặt. WordPress có khả năng tự tạo ra các secret key nên ta chỉ cần chọn ra các giá trị cho các secret key bằng lệnh:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

 

Bạn sẽ thu được các giá trị như sau:

 

Warning
Hãy chạy lệnh và lấy những giá trị bạn được cung cấp cho mỗi lần cài đặt. Không copy giá trị bên dưới.

 

Outputdefine('AUTH_KEY', '1jl/vqfsDO NOT COPY THESE VALUES c_j{iwqD^<+c9.kDO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PBDO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY', 'll,4UC)7ua+8DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');
 

Copy output này vào clipbroad.

 

Mở file cấu hình WordPress:

 nano /var/www/html/wp-config.php

 

Tìm đến mục sau:

/var/www/html/wp-config.php
. . .
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
. . .

Thay những dòng này bằng giá trị của ouput ta vừa copy:

/var/www/html/wp-config.php
. . .
define('AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY', 'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
. . .

Tiếp theo ta sẽ thay đổi một số cài đặt cho việc kết nối đến database ở đầu file. Việc cần làm là thêm vào database name, database user cùng với mật khẩu của nó.

Ta cũng cần phải tạo các phương thức để WordPress ghi dữ liệu vào file hệ thống. Thêm dòn define('FS_METHOD', 'direct'); vào bất cứ đâu trong file cấu hình:

/var/www/html/wp-config.php
. . .
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .define('FS_METHOD', 'direct');

Lưu và đóng file.

Bước 6: Hoàn tất quá trình cài đặt qua Giao diện Web

 

Gõ địa chỉ IP hoặc domain name của bạn vào trình duyệt:

http://server_domain_or_IP

Chọn ngôn ngữ:

WordPress language selection

 

Chọn một tên cho trang WordPress của bạn cùng với một username. Một mật khẩu mạnh được tạo tự động, bạn có thể lưu lại nó hoặc chọn một mật khẩu mạnh khác.

Enter your email address and select whether you want to discourage search engines from indexing your site:

Sau đó nhập vào địa chỉ mail và tích nến muốn ngăn các engine tìm kiếm đánh chỉ mục cho website của bạn.

WordPress setup installation

Sau khi cài đặt thành công, đăng nhập vào WordPress với user vừa tạo:

WordPress login prompt

Bạn sẽ thấy trang điều khiển của WordPress:

WordPress login prompt

 

Upgrade WordPress

 

Nếu muốn upgrade WordPress, đầu tiên hãy đăng nhập vào  sudo user. Cấp quyền truy cập tạm thời đến cả thư mục gốc cho tiến trình upgrade trên web server:

sudo chown -R www-data /var/www/html

 

Sau đó quay lại trang quản trị của WordPress để tiến hành viêc upgrade.

Cấp lại quyền truy cập cho user để đảm bảo bảo mật:

sudo chown -R sammy /var/www/html

 

 

Tổng kết

WordPress đã được cài đặt thành công và sẵn sàng sử dụng. Bạn có thể tham khảo các bước cấu hình tiếp theo để sử dụng hiệu quả WordPress tại diễn đàn ViCloud.