Hướng dẫn cài đặt WordPress với LAMP stack trên Debian 9

Giới thiệu

WordPress là một trong những CMS lớn mạnh và được sử dụng nhiều nhất trên internet hiện nay. Nó cho phép bạn có thể dễ dàng tạo ra những trang web động trên nền PHPMySQL/MariaDB một cách dễ dàng. Trong những năm vừa qua, WordPress đã nhận được những sự hỗ trợ đáng kể từ cộng đồng và đã trở thành lựa chọn tin cậy của các webmaster nhờ vào quá trình cài đặt cực kỳ nhanh gọn. Sau cài đặt, gần như tất cả những công việc quản lý có thể thực hiện trên giao diện admin của WP.

Bên cạnh đó, Debian là một hệ điều hành đã quá nổi tiếng bởi tính ổn định và sự phát triển bền bỉ trong suốt hơn 2 thập kỷ. Kết hợp WordPress và Debian sẽ là lựa chọn đáng tin cậy và ít phải bảo trì cho bạn.

Trong bài này, chúng ta sẽ tìm hiểu cách thiết lập WordPress trên một LAMP stack (Linux, Apache, MariaDB, PHP) trên máy chủ chạy Debian 9.

Yêu cầu

  • User với quyền sudo
  • Server/VPS đã cài đặt LAMP stack.
  • Chứng chỉ SSL (tùy chọn), bạn có thể sử dụng chứng chỉ miễn phí của Let’s Encrypt

Bước 1 : Tạo database và user MariaDB mới cho WordPress

WordPress sử dụng MySQL/MariaDB để quản lý và lưu trữ dữ liệu. Ở đây chúng ta dùng MariaDB – một giải pháp nâng cấp cho MySQL. Trước hết bạn cần tạo mới một database và một user để chuẩn bị cho việc cài đặt WordPress ở bước tiếp theo.

Bạn có thể đặt tên database tùy thích, tuy nhiên trong ví dụ này sử dụng tên wordpress cho đơn giản. Đầu tiên, bạn SSH vào server và chạy lệnh

sudo mariadb

Nếu bạn muốn truy cập với quyền của user khác, bạn cũng có thể làm điều đó với lệnh : mariadb -u username -p

Tạo database mới bằng cách chạy lệnh

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Hãy lưu ý là tất cả các lệnh MySQL đều kết thúc bằng dấu chấm phẩy (;). Hãy kiểm tra lại để chắc chắn rằng lệnh của bạn không gây ra lỗi.

Tiếp theo, tạo một user MySQL riêng, user này bạn sẽ chỉ dùng để thao tác với database wordpress vừa mới tạo. Việc mỗi user chỉ được điều khiển một database và ngược lại rất hữu ích dưới góc nhìn bảo mật và quản lý server. Bạn có thể dùng tên bất kỳ, ở ví dụ này mình sẽ dùng tên wordpressuser

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

Giờ bạn đã tạo user có tên wordpressuser và database có tên wordpress, chạy tiếp lệnh sau để reload lại grant tables, mục đích là làm cho các thay đổi trở nên có hiệu lực. Cuối cùng là thoát khỏi MariaDB bằng lệnh EXIT;

FLUSH PRIVILEGES;
EXIT;

Bước 2 : Cài đặt các phần mở rộng của PHP (PHP extensions)

Khi cài đặt LAMP stack, PHP chỉ sẵn có những phần cơ bản nhất để có thể hoạt động được với MariaDB. Với WordPress và các plugin của nó, bạn cần nhiều những phần mở rộng để có thể hoạt động trơn tru và sử dụng được những tính năng nâng cao.

Tải và cài đặt những phần mở rộng thông dụng nhất của PHP hay được dùng với WordPress bằng lệnh sau :

sudo apt update
sudo apt install php-curl php-gd php-mbstring php-xml \
php-xmlrpc php-soap php-intl php-zip

Lưu ý : Mỗi plugin có một yêu cầu về các phần mở rộng riêng, một số còn có thể yêu cầu cài thêm các gói phụ trợ. Thường những yêu cầu này nằm trong hướng dẫn cài đặt của plugin, và thường chúng cũng có thể cài đặt với lệnh apt tương tự như ví dụ ở trên.

Trong phần sau chúng ta sẽ khởi động lại Apache để load các phần mở rộng này. Nếu bạn đang đọc lại phần này để cài đặt thêm các PHP extensions, bạn có thể khởi động lại Apache bằng lệnh

sudo systemctl restart apache2

Đến đây là mọi việc đã cơ bản hoàn tất, phần tiếp theo là các tinh chỉnh cho Apache để WordPress có thể chạy nhanh và mượt.

Bước 3 : Cấu hình cho Apache nhận thiết lập từ file .htaccess

Với những PHP extensions đã cài đặt, việc tiếp theo là thực hiện một số thay đổi trong cấu hình Apache. Dựa trên bài hướng dẫn ở phần yêu cầu, bạn đã có một file cấu hình cho trang web tại thư mục /etc/apache2/sites-available/. Chúng ta sẽ sử dụng /etc/apache2/sites-available/wordpress.conf làm ví dụ trong trường hợp này, tuy nhiên nếu áp dụng lên VPS của mình, bạn nên thay đổi đường dẫn đến file cấu hình cho phù hợp.

Thêm vào đó, chúng ta sẽ dùng /var/www/wordpress làm thư mục root (thư mục gốc) của trang web trong ví dụ. Bạn nên lưu ý điều này để thay đổi các thông số trong bài cho phù hợp với trang web của mình.

Lưu ý : Có thể bạn đang sử dụng 000-default.conf làm file cấu hình chính (đồng thời /var/www/html làm thư mục root). Thực ra điều này hoàn toàn chấp nhận được nếu VPS chỉ chứa 1 website duy nhất. Nếu không, tốt nhất bạn nên chia ra làm nhiều file, mỗi file cấu hình cho một website riêng để dễ dàng quản lý và tránh những lỗi lạ.

Ngay sau khi cài đặt, việc sử dụng .htaccess không có hiệu lực. WordPress và rất nhiều plugin của WordPress thường xuyên sử dụng những file này cho việc tinh chỉnh các cài đặt mà không làm ảnh hưởng đến toàn bộ cấu hình của VPS.

Bạn hãy mở file cấu hình của Apache cho website của mình. Lưu ý rằng nếu bạn đã có file cấu hình riêng, tên file (màu đỏ) dưới đây sẽ khác:

sudo nano /etc/apache2/sites-available/wordpress.conf

Để cho phép .htaccess hoạt động, bạn cần thêm vào một block (khối mã) Directory trỏ đến thư mục root với  một chỉ định (directive) AllowOverride bên trong block trong đó như trong ví dụ sau. Chú ý block Directory này phải nằm trong block  VirtualHost và phải trỏ chính xác đến thư mục root:

<Directory /var/www/wordpress/>
    AllowOverride All
</Directory>

Sau đó lưu và đóng file lại.

Tiếp theo, bật module rewrite để có thể sử dụng tính năng permalink của WordPress.

sudo a2enmod rewrite

Trước khi thực hiện tất cả các thay đổi trên, kiểm tra để chắc chắn rằng bạn không mắc lỗi cú pháp nào :

sudo apache2ctl configtest

Nếu file cấu hình của bạn có cú pháp hợp lý, bạn sẽ thấy kết quả như sau

Syntax OK

Nếu dòng lệnh này báo bất kỳ lỗi nào, bạn cần phải kiểm tra lại vì khi đó đã có lỗi làm cho Apache không hiểu được file cấu hình. Nếu không, khởi động lại Apache:

sudo systemctl restart apache2

Tiếp theo, chúng ta sẽ tải và thiết lập WordPress

Bước 4 : Tải WordPress

Giờ thì VPS của bạn đã được thiết lập hoàn tất, bạn đã có thể tải và thiết lập WordPress. Để đảm bảo bảo mật, bạn nên tải phiên bản mới nhất từ trang chủ của Automattic để tránh mã độc từ những nguồn không đáng tin cậy.

Lưu ý : Chúng ta sẽ dùng curl để tải WordPress, tuy nhiên có thể chương trình này không được cài đặt sẵn trên VPS Debian của bạn. Để cài đặt curl, bạn hãy chạy

sudo apt install curl

Chuyển sang thư mục /tmp và tải bản WWordPress mới nhất:

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

Giải nén file này:

tar xzvf latest.tar.gz

Thêm vào trong thư mục đã giải nén một file .htaccess trống:

touch /tmp/wordpress/.htaccess

Copy file cấu hình mặc định của WordPress thành file cấu hình chính:

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

Cuối cùng là copy tất cả thư mục vừa rồi vào thư mục root (thư mục gốc) của website (được file wordpress.conf ở trên trỏ vào)

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

Bước 5 : Thiết lập WordPress

Trước khi truy cập vào trang cài đặt của WordPress, bạn cần điều chỉnh một số thiết lập trong thư mục WordPress vừa thao tác.
Bắt đầu với việc cấp quyền ownership cho user www-data (cũng nằm trong group www-data). Đây là user đại diện cho máy chủ Apache, và tất nhiên Apache cần phải đọc và ghi được ở thư mục WordPress của bạn để có thể chạy website và thực hiện các tác vụ cập nhật thường xuyên.
Cấp quyền với chown

sudo chown -R www-data:www-data /var/www/wordpress

Tiếp theo chúng ta sẽ chạy hai lệnh find để chmod cho thư mục WordPress và các file trong đó, nhằm đảm bảo tính bảo mật:

sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

Đây là những permission cơ bản theo như hướng dẫn của chính Automattic, dù vậy một số plugin cài đặt thêm sau này có thể sẽ yêu cầu chmod khác, nhưng sẽ vẫn phải dựa trên cấu trúc thư mục chmod 750 và các file chmod 640.
Tiếp theo bạn cần tạo một chuỗi khóa an toàn để tăng tính bảo mật. WordPress cung cấp sẵn công cụ có thể tự sinh ra những chuỗi như vậy, đủ phức tạp để dùng trong môi trường internet hiện nay. Lưu ý là bạn không cần nhớ những chuỗi này, do vậy tính phức tạp của chúng sẽ không ảnh hưởng quá nhiều đến bạn. Hãy chạy :

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

Bạn sẽ nhận được kết quả như sau:

define('AUTH_KEY',         '1jl/vqfs&lt;XhdXoAPz9 KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) c_j{iwqD^&lt;+c9.k&lt;[email protected]');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB&lt;JF KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) 2;y&amp;,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8&lt;!4VM+ KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT',        'koMrurzOA+|L_lG}kf KHÔNG COPY GIÁ TRỊ NÀY (hucau.net)  07VC*Lj*lD&amp;?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 KHÔNG COPY GIÁ TRỊ NÀY (hucau.net) 1% ^qUswWgn+6&amp;xqHN&amp;%');

Đây là những giá trị mà bạn có thể copy và dán vào trong file wp-config.php của mình:

sudo nano /var/www/wordpress/wp-config.php

Tìm đến đoạn này:

. . .

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');

. . .

Sau đó dán những giá trị vừa copy vào đây:

. . .

define('AUTH_KEY',         'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('SECURE_AUTH_KEY',  'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('LOGGED_IN_KEY',    'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('NONCE_KEY',        'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('AUTH_SALT',        'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('SECURE_AUTH_SALT', 'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('LOGGED_IN_SALT',   'GIÁ TRỊ TRẢ VỀ-HUCAU');
define('NONCE_SALT',       'GIÁ TRỊ TRẢ VỀ-HUCAU');

. . .

Tiếp theo, sửa lại thông số về database ở phần đầu của file wp-config.php. Bạn cần tên database, user có quyền kết nối đến database đópassword đã tạo với MariaDB ở phần trước.
Một thiết lập khác bạn cần lưu ý là FS_METHOD – thông số cho phép server có thể ghi vào bất cứ nơi nào nó cần. Bạn có thể đặt thiết lập này thành direct, nếu không, mỗi lần update, hoặc cài đặt theme, plugin mới thì WordPress sẽ hỏi bạn thông tin đăng nhập FTP. Thông số này có thể đặt bất cứ nơi nào trong file, thường mình sẽ đặt luôn ở dưới phần thiết lập database.

. . .

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 này lại sau khi bạn thao tác xong.

Bước 6 : Hoàn thành cài đặt bằng giao diện web của WordPress

Giờ bạn đã hoàn thành việc thiết lập server, chúng ta có thể hoàn thành việc cài đặt thông qua giao diện web.
Bạn hãy truy cập

https://server_domain_or_IP

Chọn lựa ngôn ngữ cài đặt
ngôn ngữ cài đặt wordpress
Chọn tên website, tên đăng nhập cho user quản trị và mật khẩu
cài đặt wordpress
Cuối cùng, click Install WordPress. Bạn sẽ được dẫn đến một trang như thế này.
Hoàn tất cài đặt wordpress

Kết bài

Quá trình cài đặt lúc này đã hoàn tất. Một số bước cơ bản bạn có thể làm bây giờ là cài đặt permalink (link “đẹp”) (bằng cách vào Settings > Permalinks) hoặc cài đặt một theme mới tuyệt đẹp 😀 (trong phần Appearance > Themes. Thật quá là hư cấu phải không nào? 😀

Để lại comment