Cách cài đặt WordPress với HHVM và Nginx trên CentOS 7

theanh

Administrator
Nhân viên
HHVM (HipHop Virtual Machine) là một máy ảo mã nguồn mở để thực thi các chương trình được viết bằng ngôn ngữ PHP và Hack. HHVM được Facebook phát triển, cung cấp hầu hết các tính năng của phiên bản PHP 7 hiện tại. Để chạy HHVM trên máy chủ của bạn, bạn có thể sử dụng FastCGI để kết nối HHVM với máy chủ web Nginx hoặc Apache, hoặc bạn có thể sử dụng máy chủ web được tích hợp trong HHVM có tên là "Proxygen".

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt WordPress với HHVM và Nginx làm máy chủ web. Tôi sẽ sử dụng CentOS 7 làm hệ điều hành, vì vậy cần có kiến thức cơ bản về CentOS.



Điều kiện tiên quyết
  • CentOS 7 - 64bit
  • Quyền root

Bước 1 - Cấu hình SELinux và thêm Kho lưu trữ Epel​

Trong hướng dẫn này, chúng ta sẽ sử dụng SELinux ở chế độ thực thi, vì vậy chúng ta cần cài đặt các công cụ quản lý SELinux trên hệ thống. Chúng ta sẽ sử dụng setools và setrobleshoot để quản lý các chính sách SELinux.

Theo mặc định, SELinux được bật trên CentOS 7, Chúng ta có thể kiểm tra điều đó bằng lệnh bên dưới:
Mã:
sestatus
getenforce


Bạn có thể thấy SELinux được bật ở chế độ thực thi.

Tiếp theo, Cài đặt setools và setroubleshoot bằng lệnh yum.
Mã:
yum -y install setroubleshoot setools net-tools
Khi quá trình cài đặt hoàn tất, bạn có thể cài đặt EPEL repository.
Mã:
yum -y install epel-release

Bước 2 - Cài đặt Nginx​

Nginx hay engine-x là một máy chủ web nhẹ với hiệu suất cao và mức tiêu thụ bộ nhớ thấp. Trên CentOS, chúng ta có thể sử dụng yum để cài đặt các gói Nginx. Hãy đảm bảo rằng bạn đã đăng nhập với tư cách là người dùng root!

Cài đặt nginx bằng lệnh yum này từ kho lưu trữ CentOS:
Mã:
yum -y install nginx
Bây giờ hãy khởi động Nginx và cho phép nó được khởi động khi khởi động bằng lệnh systemctl:
Mã:
systemctl start nginx
systemctl enable nginx
Để đảm bảo Nginx đang chạy trên máy chủ của chúng tôi, hãy truy cập địa chỉ IP của máy chủ bằng trình duyệt của bạn hoặc sử dụng lệnh curl như được hiển thị bên dưới để có kết quả:
Mã:
curl 192.168.1.110
Tôi sẽ kiểm tra nó bằng trình duyệt web của mình tại đây:




Bước 3 - Cài đặt và cấu hình MariaDB​

MariaDB là một cơ sở dữ liệu nguồn mở được phát triển bởi nhà phát triển MySQL gốc Monty Widenius, nó đã được phân nhánh từ cơ sở dữ liệu MySQL nhưng vẫn tương thích với nó trong các chức năng chính. Trong bước này, chúng ta sẽ cài đặt MariaDB và cấu hình mật khẩu gốc cho cơ sở dữ liệu MariaDB. Sau đó, chúng ta sẽ tạo một cơ sở dữ liệu mới và người dùng mới cần thiết cho cài đặt WordPress của chúng ta.

Cài đặt mariadb và mariadb-server:
Mã:
yum -y install mariadb mariadb-server
Khởi động MariaDB và thêm dịch vụ để tự động khởi động khi khởi động:
Mã:
systemctl start mariadb
systemctl enable mariadb
MariaDB đã được khởi động và bây giờ chúng ta phải cấu hình mật khẩu gốc cho cơ sở dữ liệu mariadb/mysql. Nhập lệnh bên dưới để thiết lập mật khẩu gốc MariaDB.
Mã:
mysql_secure_installation
Nhập mật khẩu mới của bạn cho người dùng gốc MariaDB khi được yêu cầu.
Mã:
Đặt mật khẩu gốc? [Y/n] Y
Mật khẩu mới:
Nhập lại mật khẩu mới:
 
Xóa người dùng ẩn danh? [Y/n] Y
... Thành công!
Không cho phép đăng nhập root từ xa? [Y/n] Y
... Thành công!
Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] Y
Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y
... Thành công!
Mật khẩu root MariaDB đã được cấu hình. Bây giờ hãy đăng nhập vào shell MariaDB/MySQL và tạo một cơ sở dữ liệu mới "wordpressdb" và một người dùng mới "wpuser" với mật khẩu "wpuser@" cho cài đặt WordPress của chúng ta. Chọn mật khẩu an toàn cho cài đặt của bạn!

Đăng nhập vào shell MariaDB/MySQL:
Mã:
mysql -u root -p
NHẬP MẬT KHẨU CỦA BẠN
Tạo cơ sở dữ liệu và người dùng mới:
Mã:
create database wordpressdb;
create user wpuser@localhost defined by 'wpuser@';
grant all privileges on wordpressdb.* to wpuser@localhost defined by 'wpuser@';
flush privileges;
\q


MariaDB đã được cài đặt và cơ sở dữ liệu mới cho cài đặt WordPress của chúng tôi đã được tạo.


Bước 4 - Cài đặt HHVM​

Để cài đặt HHVM, chúng ta cần cài đặt nhiều phần phụ thuộc. Chúng ta có thể cài đặt HHVM từ nguồn bằng cách tải xuống nguồn từ github hoặc cài đặt các gói dựng sẵn có trên internet. Trong hướng dẫn này, tôi sẽ cài đặt HHVM từ các gói dựng sẵn.

Cài đặt các gói phụ thuộc cho quá trình cài đặt HHVM
Mã:
yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
{ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
mariadb mariadb-server libc-client make
Sau đó cài đặt HHVM các gói dựng sẵn từ trang web này bằng lệnh rpm.
Mã:
rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm
ln -s /usr/local/bin/hhvm /bin/hhvm
HHVM đã được cài đặt, hãy kiểm tra bằng lệnh bên dưới:
Mã:
hhvm --version
Để sử dụng lệnh php, chúng ta có thể đặt lệnh hhvm là php. Vì vậy, khi bạn nhập 'php' trên shell, bạn sẽ thấy kết quả tương tự như từ lệnh hhvm.
Mã:
sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
php --version



Bước 5 - Cấu hình HHVM​

Trong bước này, chúng ta sẽ cấu hình HHVM. Chúng ta sẽ chạy hhvm như một dịch vụ systemd. Thay vì chạy nó trên một cổng hệ thống, chúng ta sẽ chạy hhvm trên tệp socket aunix, nhanh hơn.

Đi tới thư mục systemd và tạo tệp hhvm.service.
Mã:
cd /etc/systemd/system/
vim hhvm.service
Dán cấu hình dịch vụ bên dưới vào tệp đó.
Mã:
[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
After=network.target nginx.service mariadb.service
 
[Service]
ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock
 
[Cài đặt]
WantedBy=multi-user.target
Lưu tệp và thoát khỏi vim.

Tiếp theo, hãy đến thư mục hhvm và chỉnh sửa tệp server.ini.
Mã:
cd /etc/hhvm/
vim server.ini
Thay thế hhvm.server.port ở dòng 7 bằng cấu hình socket unix bên dưới:
Mã:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
Lưu tệp và thoát khỏi trình chỉnh sửa.

Trong tệp dịch vụ hhvm, chúng tôi đã định nghĩa rằng hhvm đang chạy dưới người dùng 'nginx', vì vậy chúng tôi phải thay đổi chủ sở hữu của thư mục tệp socket thành người dùng 'nginx'. Sau đó, chúng ta phải thay đổi ngữ cảnh SELinux của thư mục hhvm để cho phép truy cập vào tệp socket.
Mã:
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
Sau khi khởi động lại máy chủ, hhvm sẽ không chạy vì không có thư mục nào cho tệp socket, vì vậy chúng ta phải tự động tạo tệp này khi khởi động.

Chỉnh sửa tệp rc.local bằng vim.
Mã:
vim /etc/rc.local
Dán cấu hình bên dưới vào cuối dòng.
Mã:
mkdir -p /var/run/hhvm/
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
Lưu tệp và thoát khỏi vim. Làm cho tệp có thể thực thi.
Mã:
chmod +x /etc/rc.local
Tải lại dịch vụ systemd, khởi động hhvm và thêm dịch vụ này để khởi động khi khởi động.
Mã:
systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm
Đảm bảo không có lỗi. Kiểm tra xem hhvm có đang chạy dưới tệp socket không bằng lệnh netstat.
Mã:
netstat -pl | grep hhvm



Bước 6 - Cấu hình HHVM và Nginx​

Trong bước này, chúng ta sẽ cấu hình HHVM để chạy với máy chủ web Nginx. Chúng ta cần tạo một tệp cấu hình hhvm mới trong thư mục Nginx.

Đi tới thư mục /etc/nginx và tạo một tệp hhvm.conf.
Mã:
cd /etc/nginx/
vim hhvm.conf
Dán cấu hình bên dưới:
Mã:
location ~ \.(hh|php)$ {
 root /usr/share/nginx/html;
 fastcgi_keep_conn on;
 fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
}
Lưu và thoát.

Tiếp theo, chỉnh sửa tệp nginx.conf và thêm dòng cấu hình hhvm include.
Mã:
vim nginx.conf
Thêm cấu hình vào dòng chỉ thị máy chủ 57.
Mã:
include /etc/nginx/hhvm.conf;
Lưu và thoát.

Sau đó thay đổi ngữ cảnh SELinux của tệp cấu hình hhvm.
Mã:
semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf
restorecon -v /etc/nginx/hhvm.conf
Kiểm tra cấu hình Nginx và khởi động lại dịch vụ.
Mã:
nginx -t
systemctl restart nginx
Đảm bảo không có lỗi.


Bước 7 - Tạo Virtual Host với HHVM và Nginx​

Trong bước này, chúng ta sẽ tạo cấu hình virtual host mới với Nginx và hhvm. Tôi sẽ sử dụng tên miền "natsume.co" cho ví dụ này. Vui lòng sử dụng tên miền của riêng bạn và thay thế nó trong các tệp cấu hình và cài đặt WordPress bất cứ nơi nào nó xuất hiện.

Đi đến thư mục nginx conf.d nơi chúng ta sẽ lưu trữ tệp virtual host:
Mã:
cd /etc/nginx/conf.d/
Tạo cấu hình mới "natsume.conf" bằng vim:
Mã:
vim natsume.conf
Dán cấu hình virtual host bên dưới:
Mã:
server { listen 80; server_name natsume.co; # lưu ý rằng các dòng này ban đầu là từ khối "location /" root /var/www/hakase; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; location = /50x.html { root /var/www/hakase; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
Lưu và thoát.

Trong cấu hình máy chủ ảo của mình, chúng tôi đã định nghĩa thư mục gốc web cho tên miền là thư mục"/var/www/hakase". Thư mục đó chưa tồn tại, vì vậy chúng ta phải tạo nó và thay đổi quyền sở hữu thành người dùng và nhóm nginx.
Mã:
mkdir -p /var/www/hakase
chown -R nginx:nginx /var/www/hakase
Tiếp theo, cấu hình ngữ cảnh SELinux cho tệp và thư mục.
Mã:
semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
restorecon -Rv /etc/nginx/conf.d
Cuối cùng, hãy kiểm tra cấu hình nginx để đảm bảo không có lỗi, sau đó khởi động lại nginx:
Mã:
nginx -t
systemctl restart nginx

Bước 8 - Cài đặt WordPress​

Ở bước 5, chúng tôi đã tạo cấu hình máy chủ ảo cho cài đặt WordPress của chúng ta. Bây giờ chúng ta chỉ cần tải xuống WordPress và chỉnh sửa cấu hình cơ sở dữ liệu bằng cách sử dụng cơ sở dữ liệu và người dùng mà chúng ta đã tạo ở bước 3.

Đi đến thư mục gốc web "/var/www/hakase" và tải xuống WordPress bằng lệnh wget:
Mã:
cd /var/www/hakase
wget wordpress.org/latest.tar.gz
Giải nén "latest.tar.gz" và di chuyển tất cả các tệp và thư mục WordPress vào thư mục hiện tại:
Mã:
tar -xzvf latest.tar.gz
mv wordpress/* .
Tiếp theo, sao chép tệp "wp-config-sample.php" vào "wp-config.php" và chỉnh sửa bằng vim:
Mã:
cp wp-config-sample.php wp-config.php
vim wp-config.php
Đặt DB_NAME thành"wordpressdb", DB_USER thành"wpuser" và DB_PASSWORD thành"wpuser@".
Mã:
define('DB_NAME', 'wordpressdb');define('DB_USER', 'wpuser');define('DB_PASSWORD', 'wpuser@');define('DB_HOST', 'localhost');
Lưu và thoát.



Thay đổi ngữ cảnh SELinux cho thư mục WordPress.
Mã:
semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"
restorecon -Rv /var/www/hakase
Bây giờ hãy mở trình duyệt web và nhập tên miền của tên miền WordPress của bạn vào thanh địa chỉ, của tôi là "natsume.co".

Chọn ngôn ngữ tiếng Anh và nhấp vào 'Tiếp tục'.



Điền tiêu đề trang web và mô tả với thông tin của bạn và nhấp vào "Cài đặt Wordpress".



Chờ cho đến khi quá trình cài đặt hoàn tất. Bạn sẽ thấy trang bên dưới, nhấp vào "Đăng nhập" để đăng nhập vào bảng điều khiển quản trị WordPress:



Nhập tên người dùng và mật khẩu quản trị của bạn, sau đó nhấp vào "Đăng nhập" một lần nữa.



Bây giờ bạn đang ở trên bảng điều khiển quản trị WordPress.



Trang chủ WordPress.



Wordpress với Nginx và HHVM trên CentOS 7 đã được cài đặt thành công.


Tham khảo​

 
Back
Bên trên