15/09/2018, 23:40

Hướng dẫn cài đặt WordPress sử dụng LEMP trên Debian 9

Giới thiệu WordPress là CMS phổ biến nhất (hệ thống quản lý nội dung) trên internet. Nó cho phép bạn dễ dàng thiết lập các blog và trang web linh hoạt trên đầu trang của một chương trình phụ trợ MySQL với xử lý PHP. WordPress đã thấy sự chấp nhận đáng kinh ngạc và là một lựa chọn tuyệt vời cho ...

Giới thiệu

WordPress là CMS phổ biến nhất (hệ thống quản lý nội dung) trên internet. Nó cho phép bạn dễ dàng thiết lập các blog và trang web linh hoạt trên đầu trang của một chương trình phụ trợ MySQL với xử lý PHP. WordPress đã thấy sự chấp nhận đáng kinh ngạc và là một lựa chọn tuyệt vời cho việc thiết lập và chạy một trang web một cách nhanh chóng. Sau khi thiết lập, hầu như tất cả quản trị có thể được thực hiện thông qua giao diện web.

Trong hướng dẫn này, chúng ta sẽ tập trung vào việc tạo một cá thể WordPress được thiết lập trên một ngăn xếp LEMP (Linux, Nginx, MySQL và PHP) trên một máy chủ Debian 9.

Điều kiện tiên quyết

Để hoàn tất hướng dẫn này, bạn sẽ cần truy cập vào máy chủ Debian 9.

Bạn sẽ cần thực hiện các tác vụ sau trước khi có thể bắt đầu hướng dẫn này:

  • Tạo một sudo người dùng trên máy chủ của bạn: Chúng tôi sẽ hoàn thành các bước trong hướng dẫn này bằng cách sử dụng người dùng không phải root với sudo đặc quyền. Bạn có thể tạo người dùng bằng sudo đặc quyền bằng cách theo dõi Hướng dẫn cài đặt máy chủ ban đầu Debian 9.
  • Cài đặt ngăn xếp LEMP: WordPress sẽ cần một máy chủ web, một cơ sở dữ liệu và PHP để hoạt động chính xác. Thiết lập một ngăn xếp LEMP (Linux, Nginx, MySQL và PHP) đáp ứng tất cả các yêu cầu này. Theo hướng dẫn này để cài đặt và cấu hình phần mềm này.
  • Bảo mật trang web của bạn bằng SSL: WordPress phục vụ nội dung động và xử lý xác thực và ủy quyền 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 an toàn. Hướng dẫn này sẽ giả định rằng bạn có một tên miền cho blog của bạn. Bạn có thể sử dụng Let's Encrypt để nhận chứng chỉ SSL miễn phí cho miền của bạn. Theo dõi Hãy mã hóa hướng dẫn cho Nginx để thiết lập điều này.

Khi bạn hoàn thành các bước thiết lập, hãy đăng nhập vào máy chủ của bạn sudo và tiếp tục bên dưới.

Bước 1 - Tạo cơ sở dữ liệu MySQL và người dùng cho WordPress

Bước đầu tiên mà chúng tôi sẽ thực hiện là một bước chuẩn bị. WordPress sử dụng MySQL để quản lý và lưu trữ thông tin trang web và người dùng. Chúng ta đã cài đặt MySQL rồi, nhưng chúng ta cần tạo một cơ sở dữ liệu và một người dùng cho WordPress để sử dụng.

Để bắt đầu, hãy đăng nhập vào tài khoản MySQL gốc (quản trị). Nếu MySQL được cấu hình để sử dụng auth_socket plugin xác thực (mặc định), bạn có thể đăng nhập vào tài khoản quản trị MySQL bằng sudo:

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 gốc MySQL, hãy sử dụng định dạng sau để thay thế:

mysql -u root -p

Bạn sẽ được nhắc nhập mật khẩu bạn đã đặt cho tài khoản gốc MySQL.

Đầu tiên, chúng ta 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ể gọi điều này bất cứ điều gì bạn muốn, nhưng chúng tôi sẽ sử dụng wordpress trong hướng dẫn này để giữ cho nó đơn giản. Bạn có thể tạo cơ sở dữ liệu cho WordPress bằng cách gõ:

CREATE DATABASE your_domain DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Chú thích: Mỗi câu lệnh MySQL phải kết thúc bằng dấu chấm phẩy (;). Kiểm tra để đảm bảo điều này hiện diện nếu bạn đang gặp phải bất kỳ sự cố nào.

Tiếp theo, chúng ta sẽ tạo một tài khoản người dùng MySQL riêng biệt mà chúng ta sẽ sử dụng độc quyền để vận hành trên cơ sở dữ liệu mới của mình. Tạo một cơ sở dữ liệu và các tài khoản chức năng là một ý tưởng tốt từ quan điểm quản lý và bảo mật. Chúng tôi sẽ sử dụng tên wordpressuser trong hướng dẫn này. Hãy thay đổi điều này nếu bạn muốn.

Chúng tôi 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 tôi đã tạo. Chúng ta có thể làm điều này bằng cách gõ lệnh sau đây. Hãy nhớ chọn một mật khẩu mạnh ở đây cho người dùng cơ sở dữ liệu của bạn:

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

Bây giờ bạn có một cơ sở dữ liệu và tài khoản người dùng, mỗi tài khoản được tạo riêng cho WordPress. Chúng ta cần xóa các đặc quyền để cho cá thể hiện tại của MySQL biết về những thay đổi gần đây mà chúng ta đã thực hiện:

FLUSH PRIVILEGES;

Thoát khỏi MySQL bằng cách gõ:

EXIT;

Phiên MySQL sẽ thoát ra, đưa bạn trở lại shell Linux thông thường.

Bước 2 - Cài đặt phần mở rộng PHP bổ sung

Khi thiết lập ngăn xếp LEMP của chúng tôi, chúng tôi chỉ yêu cầu một bộ mở rộng rất tối thiểu để PHP có thể giao tiếp với MySQL. WordPress và nhiều plugin của nó tận dụng các phần mở rộng PHP bổ sung.

Chúng ta có thể tải xuống và cài đặt một số phần mở rộng PHP phổ biến nhất để sử dụng với WordPress bằng cách gõ:

sudo apt update

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

Chú thích: Mỗi plugin WordPress có bộ yêu cầu riêng. Một số có thể yêu cầu các gói PHP bổ sung sẽ được cài đặt. Kiểm tra tài liệu plugin của bạn để khám phá các yêu cầu PHP của nó. Nếu chúng có sẵn, chúng có thể được cài đặt với apt như đã trình bày ở trên.

Khi bạn hoàn tất cài đặt các phần mở rộng, hãy khởi động lại quá 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:

sudo systemctl restart php7.0-fpm

Bây giờ chúng ta đã cài đặt tất cả các phần mở rộng PHP cần thiết trên máy chủ.

Bước 3 - Cấu hình Nginx

Tiếp theo, chúng tôi sẽ thực hiện một vài điều chỉnh nhỏ cho các tệp khối máy chủ Nginx của chúng tôi. Dựa trên các hướng dẫn tiên quyết, bạn nên có tệp cấu hình cho trang web của mình trong /etc/nginx/sites-available/ thư mục được cấu hình để đáp ứng với tên miền của máy chủ của bạn và được bảo vệ bằng chứng chỉ TLS / SSL. Chúng tôi sẽ sử dụng /etc/nginx/sites-available/your_domain như một ví dụ ở đây, nhưng bạn nên thay thế đường dẫn đến tệp cấu hình của bạn nếu thích hợp.

Ngoài ra, chúng tôi sẽ sử dụng /var/www/your_domain như thư mục gốc của cài đặt WordPress của chúng tôi. Bạn nên sử dụng gốc web được chỉ định trong cấu hình của riêng bạn.

Chú thích: Có thể bạn đang sử dụng /etc/nginx/sites-available/default cấu hình mặc định (với /var/www/html làm gốc web của bạn). Điều này là tốt để sử dụng nếu bạn chỉ sẽ lưu trữ một trang web trên máy chủ này. Nếu không, tốt nhất là chia cấu hình cần thiết thành các khối logic, một tệp cho mỗi trang web.

Mở tệp cấu hình Nginx của trang web của bạn bằng sudo đặc quyền để bắt đầu:

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

Chúng ta cần thêm một vài location chỉ thị trong chính của chúng tôi server khối. Sau khi thêm chứng chỉ SSL, cấu hình của bạn có thể có hai server khối. Nếu có, hãy tìm cái có chứa root /var/www/your_domain và người khác của bạn location chỉ thị và thực hiện các thay đổi của bạn ở đó.

Bắt đầu bằng cách tạo các khối vị trí phù hợp chính xác cho các yêu cầu /favicon.ico và /robots.txt, cả hai chúng tôi không muốn đăng nhập yêu cầu.

Chúng tôi sẽ sử dụng vị trí biểu thức chính quy để khớp với bất kỳ yêu cầu nào đối với các tệp tĩnh. Chúng tôi sẽ lại tắt đăng nhập cho các yêu cầu này và sẽ đánh dấu chúng là có thể lưu vào bộ nhớ cache cao vì đây thường là các tài nguyên đắt tiền để phân phát. Bạn có thể điều chỉnh danh sách tệp tĩnh này để chứa bất kỳ tiện ích mở rộng tệp nào khác mà trang web của bạn có thể sử dụng:

/etc/nginx/sites-available/your_domain

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 của hiện tại location / chặn, chúng ta cần điều chỉnh try_files danh sách để thay vì trả lại lỗi 404 làm tùy chọn mặc định, kiểm soát được chuyển đến index.php tập tin với các đối số yêu cầu.

Điều này sẽ giống như thế này:

/etc/nginx/sites-available/wordpress

server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

Khi bạn hoàn tất, lưu và đóng tệp.

Bây giờ, chúng ta có thể kiểm tra cấu hình của chúng tôi cho các lỗi cú pháp bằng cách gõ:

sudo nginx -t

Nếu không có lỗi nào được báo cáo, hãy tải lại Nginx bằng cách gõ:

sudo systemctl reload nginx

Tiếp theo, chúng tôi sẽ tải xuống và thiết lập chính WordPress.

Bước 4 - Tải xuống WordPress

Bây giờ phần mềm máy chủ của chúng tôi được cấu hình, chúng tôi có thể tải xuống và thiết lập WordPress. Vì lý do bảo mật đặc biệt, nó luôn luôn được đề nghị để có được phiên bản mới nhất của WordPress từ trang web của họ.

Thay đổi thành thư mục có thể ghi và sau đó tải xuống bản phát hành đã nén bằng cách nhập:

cd /tmp

curl -LO https://wordpress.org/latest.tar.gz

Giải nén tệp nén để tạo cấu trúc thư mục WordPress:

tar xzvf latest.tar.gz

Chúng tôi sẽ chuyển các tệp này vào gốc tài liệu của chúng tôi trong giây lát. Trước khi thực hiện điều đó, chúng ta có thể sao chép tệp cấu hình mẫu vào tên tệp mà WordPress thực sự đọc:

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

Bây giờ, chúng ta có thể sao chép toàn bộ nội dung của thư mục vào thư mục gốc của tài liệu. Chúng tôi đang sử dụng -a để đảm bảo quyền của chúng tôi được duy trì. Chúng tôi đang sử dụng dấu chấm ở cuối thư mục nguồn để cho biết mọi thứ trong thư mục cần được sao chép, bao gồm mọi tệp bị ẩn:

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

Bây giờ các tệp của chúng tôi đã sẵn sàng, chúng tôi sẽ gán quyền sở hữu chúng cho www-data người dùng và nhóm. Đây là người dùng và nhóm mà Nginx chạy, và Nginx sẽ cần có khả năng đọc và ghi các tệp WordPress để phục vụ trang web và thực hiện cập nhật tự động.

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

Các tệp của chúng tôi hiện nằm trong thư mục gốc của máy chủ của chúng tôi và có quyền sở hữu chính xác nhưng chúng tôi vẫn cần hoàn thành một số cấu hình khác.

Bước 5 - Thiết lập tệp cấu hình WordPress

Tiếp theo, chúng ta cần thực hiện một số thay đổi đối với tệp cấu hình WordPress chính.

Khi chúng tôi mở tệp, thứ tự kinh doanh đầu tiên của chúng tôi sẽ là điều chỉnh một số khóa bí mật để cung cấp một số bảo mật cho quá trình cài đặt của chúng tôi. WordPress cung cấp một máy phát điện an toàn cho các giá trị này để bạn không phải cố gắng tự tìm ra các giá trị tốt. Đây chỉ được sử dụng trong nội bộ, do đó, nó sẽ không làm tổn thương khả năng sử dụng để có các giá trị phức tạp, an toàn ở đây.

Để lấy các giá trị an toàn từ trình tạo khóa bí mật của WordPress, hãy nhập:

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

Bạn sẽ lấy lại các giá trị duy nhất trông giống như sau:

Cảnh báo: Điều quan trọng là bạn yêu cầu các giá trị duy nhất mỗi lần. Làm KHÔNG PHẢI sao chép các giá trị được hiển thị bên dưới!

Outputdefine('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO 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&%');

Đây là những dòng cấu hình mà chúng ta có thể dán trực tiếp vào tệp cấu hình của chúng tôi để đặt khóa bảo mật. Sao chép đầu ra bạn nhận được ngay bây giờ.

Bây giờ, hãy mở tệp cấu hình WordPress:

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

Tìm phần có chứa các giá trị giả cho các cài đặt đó. Nó sẽ giống như thế này:

/var/www/wordpress/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');

. . .

Xóa các dòng đó và dán vào các giá trị bạn đã sao chép từ dòng lệnh:

/var/www/wordpress/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, chúng ta cần phải sửa đổi một số cài đặt kết nối cơ sở dữ liệu ở đầu tệp. 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 liên quan mà chúng ta đã cấu hình trong MySQL.

Sự thay đổi khác mà chúng ta cần thực hiện là thiết lập phương thức mà WordPress nên sử dụng để ghi vào hệ thống tập tin. Vì chúng tôi đã cho phép máy chủ web viết nơi cần, chúng tôi có thể đặt phương thức hệ thống tệp thành "trực tiếp" một cách rõ ràng. Việc không đặt cài đặt này với cài đặt hiện tại của chúng tôi sẽ dẫn đến việc WordPress nhắc thông tin đăng nhập FTP khi chúng tôi thực hiện một số hành động. Có thể thêm cài đặt này bên dưới cài đặt kết nối cơ sở dữ liệu hoặc bất kỳ nơi nào khác trong tệp:

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

. . .

define('DB_NAME', 'your_domain');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

. . .

define('FS_METHOD', 'direct');

Lưu và đóng tệp khi bạn hoàn tất.

Bước 6 - Hoàn thành việc cài đặt thông qua giao diện web

Bây giờ cấu hình máy chủ đã hoàn tất, chúng ta có thể hoàn thành việc cài đặt thông qua giao diện web.

Trong trình duyệt web của bạn, điều hướng đến tên miền hoặc địa chỉ IP công cộng của máy chủ của bạn:

http://server_domain_or_IP

Chọn ngôn ngữ bạn muốn sử dụng:

WordPress language selection

Tiếp theo, bạn sẽ đến trang cài đặt chính.

Chọn tên cho trang web WordPress của bạn và chọn tên người dùng (khuyên bạn không nên chọn một cái gì đó như "quản trị" cho mục đích bảo mật). Mật khẩu mạnh được tạo tự động. Lưu mật khẩu này hoặc chọn một mật khẩu thay thế mạnh.

Nhập địa chỉ email của bạn và chọn xem bạn có muốn không khuyến khích các công cụ tìm kiếm lập chỉ mục trang web của bạn hay không:

WordPress setup installation

Khi bạn nhấp vào phía trước, bạn sẽ được đưa tới trang yêu cầu bạn đăng nhập:

WordPress login prompt

Khi bạn đăng nhập, bạn sẽ được đưa đến trang tổng quan quản trị WordPress:

WordPress login prompt

Phần kết luận

WordPress nên được cài đặt và sẵn sàng để sử dụng! Một số bước tiếp theo phổ biến là chọn cài đặt permalinks cho bài đăng của bạn (có thể tìm thấy trong Settings > Permalinks) hoặc chọn chủ đề mới (trong Appearance > Themes). Nếu đây là lần đầu tiên bạn sử dụng WordPress, hãy khám phá giao diện một chút để làm quen với CMS mới của bạn.

0