Giới thiệu
WordPress là nền tảng CMS (Content Management System) phổ biến nhất trên Internet hiện nay. Bạn có thể dễ dàng tự xây dựng một website hoặc một blog nhanh chóng mà không cần am hiểu quá nhiều tới việc coding. Sau khi cài đặt WordPress, bạn gần như có thể quản trị được tất cả thông qua giao diện web (web frontend).
Và trong bài viết này, mình sẽ hướng dẫn các bạn triển khai WordPress trên ngăn sếp LEMP (Linux, Nginx, MySQL, và PHP) và trên hệ điều hành máy chủ Ubuntu 18.04.
LEMP khác với LAMP như thế nào?
Máy chủ LEMP là máy chủ chạy Linux, Nginx, MySQL hoặc MariaDB và PHP hoặc có thể là Perl/
Nginx và Apache đều có những ưu và khuyết điểm riêng.
Điều kiện tiên quyết trước khi cài đặt WordPress
Để thực hiện hướng dẫn này, bạn cần phải truy cập vào máy chủ Ubuntu 18.04.
Và bạn cần phải hoàn thành những tác vụ sau trước khi có thể bắt đầu:
- Tạo một người dùng sudo trên máy chủ của bạn: Trong bài viết này sẽ hướng dẫn thực hiện trên người dùng non-root với quyền sudo. Bạn có thể tạo một user với quyền sudo bằng cách làm theo Hướng dẫn những thiết lập cơ bản trên máy chủ Ubuntu 18.04.
- Cài đặt ngăn sếp LEMP: WordPress sẽ cần một máy chủ web, cơ sở dữ liệu và PHP để hoạt động. Cài đặt ngăn sếp LEMP (Linux, Nginx, MySQL, và PHP) sẽ đáp ứng được yêu cầu của CMS WordPress. Bạn hãy thực hiện và làm theo Hướng dẫn cài đặt LEMP (Linux, Nginx, MySQL, và PHP) trên Ubuntu 18.04.
- Bảo mật website với SSL: WordPress là nền tảng phục vụ những nội dung động, xử lý xác thực và ủy quyền của người dùng. TLS / SSL là công nghệ cho phép bạn mã hóa lưu lượng truy cập từ trang web của mình để kết nối của bạn được an toàn. Cách bạn thiết lập SSL sẽ phụ thuộc vào việc bạn có tên miền cho trang web của mình hay không. Và SSL của bạn mua hay sử dụng SSL miễn phí của Let’s Encrypt. Nếu website của bạn là website doanh nghiệp, kinh doanh, bán hàng online, mình nghĩ bạn nên mua SSL của những nhà cung cấp SSL uy tín. Còn nếu website của bạn là cá nhân, blog, bạn có thể sử dụng SSL miễn phí Let’s Encrypt. Và trong bài hướng dẫn này mình chỉ hướng dẫn thực hiện bảo mật SSL với Let’s Encrypt. Nếu bạn mua SSL thì bên nhà cung cấp SSL sẽ có những hướng dẫn cụ thể để hỗ trợ bạn cài đặt.
- Nếu bạn có tên miền… thì bạn có thể làm theo bài viết Hướng dẫn bảo mật Nginx với Let’s Encrypt trên Ubuntu 18.04.
- Nếu bạn không có tên miền… thì bạn có thể cài đặt Let’s Encrypt cho địa chỉ IP máy chủ của bạn.
Khi bạn hoàn thành các bước thiết lập trên, bạn hãy đăng nhập vào máy chủ của mình với tư cách là người dùng sudo, tiếp tục thực hiện những bước hướng dẫn bên dưới.
Bước 1 – Tạo cơ sở dữ liệu MySQL và người dùng cho WordPress
WordPress sử dụng MySQL để quản lý và lưu trữ thông tin trang web và người dùng. MySQL đã được cài đặt, nhưng chúng ta cần tạo một cơ sở dữ liệu và người dùng cho WordPress sử dụng.
Để bắt đầu, đăng nhập vào tài khoản (quản trị) gốc của MySQL. Nếu MySQL được cấu hình mặc định để sử dụng plugin xác thực auth_socket , thì bạn có thể đăng nhập vào tài khoản quản trị MySQL bằng sudo:
1 |
sudo mysql |
Nếu bạn thay đổi phương thức xác thực để sử dụng mật khẩu cho tài khoản root MySQL, thì bạn hãy sử dụng định dạng sau:
1 |
mysql -u root -p |
Bạn sẽ được nhắc nhập mật khẩu đăng nhập cho tài khoản root MySQL.
Đầu tiên, bạn có thể tạo một cơ sở dữ liệu riêng biệt mà WordPress có thể kiểm soát. Bạn có thể đặt tên cơ sở dữ liệu này theo bất kỳ tên nào mà bạn muốn. Còn ở hướng dẫn này mình sẽ sử dụng tên wordpress để cho nó đơn giản. Bạn có thể tạo cơ sở dữ liệu cho WordPress bằng cách nhập:
1 |
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; |
Lưu ý: Tất cả các câu lệnh MySQL đều kết thúc bằng dấu chấm phẩy (;), hãy kiểm tra yếu tố này nếu như bạn gặp vấn đề.
Kế tiếp là tạo một tài khoản người dùng MySQL riêng để dễ quản lý và tăng tính bảo mật. Tài khoản này sẽ sử dụng riêng để vận hành cơ sở dữ liệu mới của WordPress. Mình sẽ sử dụng tên wordpressuser trong hướng dẫn này. Bạn có thể thay đổi tên user theo ý của mình.
Chúng ta sẽ tạo tài khoản này, đặt mật khẩu và cấp quyền truy cập vào cơ sở dữ liệu mà chúng ta đã tạo trước đó. Chúng ta có thể làm điều này bằng cách gõ dòng lệnh sau:
Lưu ý: Hãy nhớ chọn mật khẩu mạnh cho người dùng cơ sở dữ liệu của bạn.
1 |
GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'MatKhau'; |
Bây giờ bạn đã có cơ sở dữ liệu và tài khoản người dùng được tạo riêng cho WordPress. Tiếp theo là bạn cần xóa các đặc quyền để MySQL biết về những thay đổi gần đây mà bạn đã thực hiện:
1 |
FLUSH PRIVILEGES; |
Thoát khỏi MySQL bằng cách gõ:
1 |
EXIT; |
Phiên làm việc MySQL sẽ thoát ra và đưa bạn trở lại shell Linux thông thường.
Bước 2 – Cài đặt phần mở rộng của PHP
Khi cài đặt ngăn xếp LEMP, chúng ta chỉ cần một bộ tiện ích mở rộng nhỏ của PHP để có thể tương tác với MySQL. WordPress và các plugin của WordPress có thể sử dụng các phần mở rộng PHP bổ sung.
Để tải xuống và cài đặt một số tiện ích mở rộng của PHP bạn hãy nhập dòng lệnh sau:
1 2 |
sudo apt update sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip |
Lưu ý: Mỗi plugin WordPress đều có những yêu cầu riêng. Một số có thể yêu cầu cài đặt các gói PHP bổ sung khác. Do đó bạn nên kiểm tra những tài liệu, tìm hiểu kỹ những yêu cầu PHP của plugin. Nếu nó có sẵn, bạn có thể cài đặt nó với apt tương tự như ở trên.
Khi bạn hoàn tất cài đặt các phần tiện ích mở rộng của PHP. Bạn hãy khởi động lại quy trình PHP-FPM để bộ xử lý PHP đang chạy có thể tận dụng các tính năng mới được cài đặt:
1 |
sudo systemctl restart php7.2-fpm |
Và bây giờ chúng ta có tất cả các phần mở rộng PHP cần thiết được cài đặt trên máy chủ.
Bước 3 – Cầu hình Nginx
Bước tiếp theo chúng ta tiến hành cầu hình Nginx cho WordPress. Bạn nên có một file cấu hình Nginx cho website trong thư mục /etc/nginx/sites-available/ được cấu hình cho tên miền hoặc địa chỉ IP của máy chủ và được bảo vệ bởi chứng chỉ TLS/SSL. Ở hướng dẫn này mình sẽ sử dụng /etc/apache2/sites-available/wordpress làm ví dụ. Bạn nên thay thế đường dẫn đến file cấu hình của mình phù hợp.
Ngoài ra, mình sẽ sử dụng /var/www/wordpress như là thư mục root để cài đặt WordPress. Bạn nên sử dụng web root cụ thể trong cầu hình của bạn.
Lưu ý: Bạn có thể sử dụng cấu hình mặc định /etc/nginx/sites-available/default (với /var/www/html như là thư mục web root). Tuy nhiên điều này không có vấn đề gì khi bạn chỉ lưu trữ một trang web trên máy chủ này. Nếu không, thì bạn nên chia cấu hình cần thiết, mỗi file mỗi trang tương ứng.
Mở tếp khối máy chủ trang web của bạn, với các đặt quyền sudo để bắt đầu:
1 |
sudo nano /etc/nginx/sites-available/wordpress |
Trong block server chính, chúng ta cần thêm một vài block location.
1 2 3 4 5 6 7 8 9 10 11 |
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; } . . . } |
Bên trong khối location / hiện có sẵn, chúng ta cần điều chỉnh try_files thay vì để trả về lỗi mặc định 404. Điều khiển chuyển đến file index.php với các yêu cầu.
Nó sẽ tương tự như sau:
1 2 3 4 5 6 7 8 |
server { . . . location / { #try_files $uri $uri/ =404; try_files $uri $uri/ /index.php$is_args$args; } . . . } |
Khi bạn kết thúc thì lưu và đóng file lại.
Tiếp theo là kiểm tra cấu hình để tìm lỗi cú pháp bằng cách gõ:
1 |
sudo nginx -t |
Nễu không có lỗi nào được hiện lên, thì bạn hãy khởi động lại Nginx bằng cách gõ:
1 |
sudo systemctl reload nginx |
Bước tiếp theo là chúng ta sẽ tải WordPress về và tiến hành cài đặt.
Bước 4 – Tải về WordPress
Giờ đây phần mền máy chủ đã được cấu hình, giờ bạn có thể tải xuống và cấu hình WordPress. Vì lý do bảo mật, bạn nên tải xuống phiên bản WordPress mới nhất.
1 2 |
cd /tmp curl -LO https://wordpress.org/latest.tar.gz |
Giải nén để tạo cấu trúc thư mục WordPress:
1 |
tar xzvf latest.tar.gz |
Chúng ta sẽ di chuyển những tệp này vào thư mục root cài đặt. Nhưng trước khi thực hiện, chúng ta cần copy file wp-config-sample.php và đổi tên thành wp-config.php. Để thực hiện bạn gõ như sau:
1 |
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php |
Bây giờ, bạn có thể sao chép toàn bộ nội dung của thư mục vào thư mục gốc root. Mình sử dụng -a để đảm bảo tất cả các quyền đều được duy trì. Và sử dụng dấu chấm “.” ở cuối để đảm bảo tất các file trong thư mục đều được copy, bao gồm tất cả các file bị ẩn.
1 |
sudo cp -a /tmp/wordpress/. /var/www/wordpress |
Bây giờ các tệp đều sẵn sàng, tiếp theo là chuyển quyền cho người dùng và nhóm www-data . Đây là người dùng và nhóm mà Nginx điều hành và Nginx cần khả năng đọc và ghi các file WordPress để phục vụ trang web và cập nhật tự động.
1 |
sudo chown -R www-data:www-data /var/www/wordpress |
Bước 5 – Cài đặt cấu hình WordPress
Ở bước này chúng ta tiếp tục tiến hành cấu hình file WordPress.
Đầu tiên bạn cần tạo ra những secret key của WordPress. Để lấy các giá trị từ WordPress secret key, nhập:
1 |
curl -s https://api.wordpress.org/secret-key/1.1/salt/ |
Bạn sẽ nhận được các giá trị tương tự như thế này:
Lưu ý: Bạn cần yêu cầu để tạo ra chuỗi giá trị này, không được copy chuỗi giá trị mẫu bên dưới.
1 2 3 4 5 6 7 8 |
define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 KHONG COPY NHUNG GIA TRI NAY c_j{iwqD^<+c9.k<[email protected]'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X KHONG COPY NHUNG GIA TRI NAY {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF KHONG COPY NHUNG GIA TRI NAY 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ KHONG COPY NHUNG GIA TRI NAY #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf KHONG COPY NHUNG GIA TRI NAY 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY KHONG COPY NHUNG GIA TRI NAY C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 KHONG COPY NHUNG GIA TRI NAY t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 KHONG COPY NHUNG GIA TRI NAY 1% ^qUswWgn+6&xqHN&%'); |
Đây là những dòng cấu hình mà ta sẽ copy và dán vào file cấu hình WordPress để cài đặt khoá bảo mật. Bạn copy và giữ lại những giá trị này.
Bây giờ mở file cấu hình WordPress:
1 |
sudo nano /var/www/wordpress/wp-config.php |
Tìm phần cài đặt có chứa giá trị giả. Nó giống tương tự như sau:
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . 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'); . . . |
Bạn xoá những dòng giá trị giả này và sao chép, dán vào những giá trị mà bước ở trên bạn đã nhận được.
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . define('AUTH_KEY', 'COPY GIA TRI TU COMMAND LINE'); define('SECURE_AUTH_KEY', 'COPY GIA TRI TU COMMAND LINE'); define('LOGGED_IN_KEY', 'COPY GIA TRI TU COMMAND LINE'); define('NONCE_KEY', 'COPY GIA TRI TU COMMAND LINE'); define('AUTH_SALT', 'COPY GIA TRI TU COMMAND LINE'); define('SECURE_AUTH_SALT', 'COPY GIA TRI TU COMMAND LINE'); define('LOGGED_IN_SALT', 'COPY GIA TRI TU COMMAND LINE'); define('NONCE_SALT', 'COPY GIA TRI TU COMMAND LINE'); . . . |
Tiếp theo, chúng ta cần sửa đổi một số cài đặt kết nối với cơ sở dữ liệu. Bạn cần điều chỉnh tên cơ sở dữ liệu, người dùng cơ sở dữ liệu, và mật khẩu mà bạn đã cấu hình trong MySQL.
Tiếp theo là bạn cần cài đặt phương thức filesystem thành “direct”, nếu bạn không thiết lập thành direct thì WordPress sẽ nhắc lại thông tin đăng nhập FPT. Cài đặt này được thêm vào bên dưới cài đặt kết nối cơ sở dữ liệu hoặc bất kỳ chỗ nào khác trong file.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
. . . 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 khi bạn hoàn tất.
Bước 6 – Cài đặt WordPress thông qua giao diện web
Chúng ta đã hoàn thành cấu hình máy chủ, bây giờ chúng ta sẽ cài đặt WordPress thông qua giao diện web.
Trên trình duyệt web của bạn, điều hướng đến tên miền hoặc địa chỉ IP của máy chủ:
1 |
http://server_domain_hoac_IP |
Lưu chọn ngôn ngữ bạn muốn sử dụng. Mình khuyên bạn nên chọn Tiếng Việt. Ở ví dụ này mình chọn Tiếng Anh.
Tiếp theo bạn sẽ đến phần thiết lập trang chính.
Chọn tên cho trang web WordPress của bạn, và chọn tên người dùng (bạn không nên chọn tên là “admin” vì lý do bảo mật). Một mật khẩu mạnh được tạo tự động, bạn hãy lưu mật khẩu này hoặc có thể tự tạo một mật khẩu mạnh để thay thế.
Nhập địa chỉ email của bạn. Nếu bạn không muốn công cụ tìm kiếm lập chỉ mục (index) trang web của bạn thì hãy bỏ tick phần Search Engine.
Khi bạn nhấp vào nút cài đặt, bạn sẽ được dẫn đến một trang nhắc bạn đăng nhập:
Khi bạn đăng nhập, bạn sẽ được điều hướng đến bảng điều khiển quản trị của WordPress:
Kết luận
WordPress đã được cài đặt và sẵn sàng để sử dụng. Một số bước cài đặt phổ biến tiếp theo là cài đặt permalink (bạn có thể truy cập vào Setting –> Permalinks), cài đặt theme WordPress (trong Appearance –> Themes). Và nếu đây là lần đầu tiên bạn sử dụng WordPress thì hãy khám phá một chút để làm quen với CMS mới của bạn.