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
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:
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.
Khi quá trình cài đặt hoàn tất, bạn có thể cài đặt EPEL repository.
Cài đặt nginx bằng lệnh yum này từ kho lưu trữ CentOS:
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 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ả:
Tôi sẽ kiểm tra nó bằng trình duyệt web của mình tại đây:
Cài đặt mariadb và mariadb-server:
Khởi động MariaDB và thêm dịch vụ để tự động khởi động khi khởi động:
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.
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 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:
Tạo cơ sở dữ liệu và người dùng mới:
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.
Cài đặt các gói phụ thuộc cho quá trình cài đặt HHVM
Sau đó cài đặt HHVM các gói dựng sẵn từ trang web này bằng lệnh rpm.
HHVM đã được cài đặt, hãy kiểm tra bằng lệnh bên dưới:
Để 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.
Đi tới thư mục systemd và tạo tệp hhvm.service.
Dán cấu hình dịch vụ bên dưới vào tệp đó.
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.
Thay thế hhvm.server.port ở dòng 7 bằng cấu hình socket unix bên dưới:
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.
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.
Dán cấu hình bên dưới vào cuối dòng.
Lưu tệp và thoát khỏi vim. Làm cho tệp có thể thực thi.
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 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.
Đi tới thư mục /etc/nginx và tạo một tệp hhvm.conf.
Dán cấu hình bên dưới:
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.
Thêm cấu hình vào dòng chỉ thị máy chủ 57.
Lưu và thoát.
Sau đó thay đổi ngữ cảnh SELinux của tệp cấu hình hhvm.
Kiểm tra cấu hình Nginx và khởi động lại dịch vụ.
Đảm bảo không có lỗi.
Đi đến thư mục nginx conf.d nơi chúng ta sẽ lưu trữ tệp virtual host:
Tạo cấu hình mới "natsume.conf" bằng vim:
Dán cấu hình virtual host bên dưới:
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.
Tiếp theo, cấu hình ngữ cảnh SELinux cho tệp và thư mục.
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:
Đi đến thư mục gốc web "/var/www/hakase" và tải xuống WordPress bằng lệnh wget:
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:
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:
Đặt DB_NAME thành"wordpressdb", DB_USER thành"wpuser" và DB_PASSWORD thành"wpuser@".
Lưu và thoát.
Thay đổi ngữ cảnh SELinux cho thư mục WordPress.
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.
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
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
Mã:
systemctl start nginx
systemctl enable nginx
Mã:
curl 192.168.1.110
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
Mã:
systemctl start mariadb
systemctl enable mariadb
Mã:
mysql_secure_installation
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!
Đăng nhập vào shell MariaDB/MySQL:
Mã:
mysql -u root -p
NHẬP MẬT KHẨU CỦA BẠN
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
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
Mã:
hhvm --version
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
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
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
Mã:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
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
Chỉnh sửa tệp rc.local bằng vim.
Mã:
vim /etc/rc.local
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
Mã:
chmod +x /etc/rc.local
Mã:
systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm
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
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;
}
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
Mã:
include /etc/nginx/hhvm.conf;
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
Mã:
nginx -t
systemctl restart nginx
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/
Mã:
vim natsume.conf
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; }}
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
Mã:
semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
restorecon -Rv /etc/nginx/conf.d
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
Mã:
tar -xzvf latest.tar.gz
mv wordpress/* .
Mã:
cp wp-config-sample.php wp-config.php
vim wp-config.php
Mã:
define('DB_NAME', 'wordpressdb');define('DB_USER', 'wpuser');define('DB_PASSWORD', 'wpuser@');define('DB_HOST', 'localhost');
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
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.