Cách cài WordPress bằng LEMP Stack trên Ubuntu 16.04
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ềnsudo
để thực hiện một số lệnh. Xem hướng dẫn tạo mộtsudo
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;
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.
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
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
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:
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:
. . .
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:
. . .
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:
. . .
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ữ:
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.
Sau khi cài đặt thành công, đăng nhập vào WordPress với user vừa tạo:
Bạn sẽ thấy trang điều khiển của WordPress:
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.