Centminmod

LEMP Stack centminmod mình đã & đang sử dụng trong 3 năm qua. Khá nổi tiếng, nhìn chung dân DEV đều biết. Bài này thì mình cố gắng tổng hợp lại các thứ cần thiết, các quy trình cần có. Để xây dựng và sử dụng, cũng như duy trì một hệ thống websever dùng Centminmod. Một khuyến nghị nhỏ là nếu bạn mới bắt đầu, thì nên dùng với một sever test. Vì nó có khá nhiều thứ cần “chọc ngoáy”, và thời gian cài đặt update, upgrade các modul là lâu. Bù lại, hiệu năng và sự ổn định từ hệ thống centminmod này rất tốt. Nên thử bắt đầu nhé.

Cấu hình cần thiết để sử dụng Centminmod , System requirements for Centmin

đầu tiên bạn nên biết rằng, Centmin sử dụng NGINX sever. Tuy nhiên khác với webinoly, thằng centminmod này không cài được trên Ubuntu. Nó chỉ chạy trên Centos 6 hoặc 7 ( mình đã cài thử trên 8 nhưng không dc, có quá nhiều thứ phát sinh). Về cấu hình nhỏ nhất để cài centminmod:


- CentOS 6.x / 256MB memory / 20GB disk space for OpenVZ VPS virtualization & 30GB for KVM and Xen virtualisation
- CentOS 7.x 64bit / 1GB memory /20GB disk space for OpenVZ VPS virtualization & 30GB for KVM and Xen virtualisation

Tuy nhiên, mình ko khuyến khích sử dụng cấu hình tối thiểu này,. Vì khi đã sử dụng tới centminmod, thì website của bạn cũng có lượng traffic khá. Hay là một hệ thống e-commerce tương đối. Nên mình đề nghị cấu hình tối thiểu bạn nên sử dụng là: CentOS 7.x 64bit / 2Gb Ram / 60Gb SSD.
Vừa hay, mình cũng đang sử dụng cấu hình tương tự như trên, nhưng mạnh hơn 1 xíu. Cụ thể là thằng Vultr,. Cấu hình như dưới, 1Cpu, 2Gb Ram / 64Gb NVme, với $12 / tháng là khá ổn với mình. Mà nay mới để ý, thấy phần Deploy severs nó báo là NVme mà phần Geekbench lại là SSD. Chắc sau bài phải viết ticket hỏi lại support.

Vultr High Frequency Compute
Vultr High Frequency Compute

Về phần cấu hình cơ bản là như vậy, tuy nhiên có đk thì cứ mạnh dạn mà đầu tư nhé.

Bắt đầu cài đặt Centminmod

trước hết bạn cần tắt SELINUX, hoặc chọn deploy severs không có SELINUX.

centmint mod chỉ chạy trên centos
Deploy sever centos không có SELinux trên Vultr

hoặc bạn làm như sau để tắt SELinux.
– check sever có Selinux không:

sestatus

Nếu kết quả là: có nghĩa là bạn cần tắt SELinux.

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

rồi nhập:

sudo setenforce 0

mở file /etc/selinux/config và hiệu chỉnh như sau:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

hoặc code dư này là dc.

echo 'SELINUX=disabled' > /etc/selinux/config

Lưu file /etc/selinux/config lại và khởi động lại VPS. Và kiểm tra lại

sestatus

kết quả là

SELinux status:                 disabled

rồi cài đặt centmintmod bằng một số lệnh sau, theo lựa chọn của bạn.

Đây là bản ổn định Stable Release, bản này khá lâu rồi. Nên hỗ trợ những thứ cũ PHP 5.5, 5.6 & limited support PHP 7.0.

yum -y update; curl -O https://centminmod.com/installer.sh && chmod 0700 installer.sh && bash installer.sh

Một số bản thử nghiệm,. Khá nhiều thứ hay ho nên nếu bạn muốn thử thí cứ mới mà táng nhé. Đây là bản sử dụng PHP 7.3.x mới nhất.

yum -y update; curl -O https://centminmod.com/betainstaller73.sh && chmod 0700 betainstaller73.sh && bash betainstaller73.sh

chi tiết các phiên bản bạn xem tại link chính chủ của centmin này:

https://centminmod.com/install.html

móa cài chờ khá lâu nhé, kể cả NVme hay SSD hay HDD đều lâu vãi. Vậy cài xong thì gọi menu centmin ra bằng lệnh:

centmin
centmin mod menu
centmin mod menu

Vị trí lưu các tập tin hay cấu hình Centminmod trên CentOS

Cài đặt thiết lập, config Nginx:

/usr/local/nginx/conf/conf.d

các files log ghi lại các thông tin đã làm, đã thiết lập trên VPS.

/root/centminlogs
log files on centminmod
log files on centminmod

Vị trí thư mục chứa files website:

/home/nginx/domains/

File cấu hình Nginx tại:

/usr/local/nginx/conf

Cấu hình MySQL trên centminmod

/etc/my.cnf

mặc định thì hầu như tất cả các bản centminmod không bật SSL – Letsencrypt của cloudflare. Do thằng acmetool.sh không bật, nó được định hình dưới modeul, kích hoạt nó bằng cách:

Cách cài SSL – Letsencrypt trên Centmin Mod

Bước này có thể có hoặc không. Chỉ cần thêm 1 đoạn nhỏ là centminmod sẽ tự cài ssl cho bạn.

cd /usr/local/src/centminmod/addons
cd /usr/local/src/centminmod/addons
cd /usr/local/src/centminmod/addons

cài acmectool.sh

./acmetool.sh acmeinstall
./acmetool.sh acmeinstall
./acmetool.sh acmeinstall

thấy xuất hiện acme.sh installed là được.

acme.sh installed
acme.sh installed

rrốiau đó mở thằng custom_config.inc lên và hiệu chỉnh.

nano /etc/centminmod/custom_config.inc

tthêmvafo bên dưới của file đoạn, và lưu lại

LETSENCRYPT_DETECT='y'

add-on cho centminmod

https://centminmod.com/addons.html

Các tinh chỉnh nhỏ cho Centminmod hoạt động okie hơn theo ý cá nhân

chỉnh lại thời gian

timedatectl set-timezone Asia/Ho_Chi_Minh

tùy chỉnh các thông số liên quan tới các giá trị giới hạn:

nano /etc/centminmod/php.d/a_customphp.ini

thông số tham khảo

date.timezone = UTC
max_execution_time = 300
short_open_tag = On
realpath_cache_size = 3072k
realpath_cache_ttl = 43200
upload_max_filesize = 5120M
memory_limit = 1024M
post_max_size = 256M
expose_php = Off
mail.add_x_header = Off
max_input_nesting_level = 128
max_input_vars = 10000
mysqlnd.net_cmd_buffer_size = 16384
mysqlnd.collect_memory_statistics = Off
mysqlnd.mempool_default_size = 16000
always_populate_raw_post_data=-1

Cá nhân mình thích đua, nên muốn web của mình thật nhanh. Nên mình chưa đưa VPS vào dùng, mà thêm BrotliRocket-Nginx. Và tại sao? đơn giản nhé, Brotli nén mạnh hơn 26% so với Gzip(trên chrome và Firefox bản mới).

Cài đặt nén Brotli trên Centminmod

chi tiết brotli là gì? thì nó ở đây:

https://github.com/google/ngx_brotli

Chi tiết về phương pháp nén Brotli

Brotli đã được tích hợp sẵn, chỉ việc active là được. Mở thằng custom_config.inc

nano /etc/centminmod/nano /etc/centminmod/custom_config.inc

thêm vào:

NGXDYNAMIC_BROTLI='y'
NGINX_LIBBROTLI='y'

Kết quả

cài đặt brotli
cài đặt brotli

Có thể cân nhắc Upgrade lên Nginx mới nhất, hoặc compile lại phiên bản đang sử dụng trên menu 4 của Centmin.

Sử dụng lệnh để kiểm tra xem module ngx_brotli đã được kích hoạt hay không.

nginx -V
module ngx_brotli đã được kích hoạt
module ngx_brotli đã được kích hoạt

Kết quả:

[13:24][[email protected] ~]# nginx -V
nginx version: nginx/1.17.9 (310320-004034-centos7-kvm-28a3ae9)
built by gcc 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)
built with OpenSSL 1.1.1d  10 Sep 2019
TLS SNI support enabled
configure arguments: --with-ld-opt='-Wl,-E -L/usr/local/zlib-cf/lib -L/usr/local/lib -ljemalloc -Wl,-z,relro -Wl,-rpath,/usr/local/zlib-cf/lib:/usr/local/lib -flto=1 -fuse-ld=gold' --with-cc-opt='-I/usr/local/zlib-cf/include -I/usr/local/include -m64 -march=x86-64 -mavx -mavx2 -mpclmul -msse4 -msse4.1 -msse4.2 -DTCP_FASTOPEN=23 -g -O3 -fstack-protector-strong -flto=1 -fuse-ld=gold --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wimplicit-fallthrough=0 -fcode-hoisting -Wno-cast-function-type -Wno-format-extra-args -Wp,-D_FORTIFY_SOURCE=2 -Wno-deprecated-declarations' --sbin-path=/usr/local/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --build=310320-004034-centos7-kvm-28a3ae9 --with-compat --with-http_stub_status_module --with-http_secure_link_module --with-libatomic --with-http_gzip_static_module --add-dynamic-module=../ngx_brotli --with-http_sub_module --with-http_addition_module --with-http_image_filter_module=dynamic --with-http_geoip_module --with-stream_geoip_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --with-stream --with-stream_ssl_module --with-http_realip_module --add-dynamic-module=../ngx-fancyindex-0.4.2 --add-module=../ngx_cache_purge-2.5 --add-dynamic-module=../ngx_devel_kit-0.3.0 --add-dynamic-module=../set-misc-nginx-module-0.32 --add-dynamic-module=../echo-nginx-module-0.61 --add-module=../redis2-nginx-module-0.15 --add-module=../ngx_http_redis-0.3.7 --add-module=../memc-nginx-module-0.18 --add-module=../srcache-nginx-module-0.32rc1 --add-dynamic-module=../headers-more-nginx-module-0.33 --with-pcre-jit --with-zlib=../zlib-cloudflare-1.3.0 --with-http_ssl_module --with-http_v2_module --with-openssl=../openssl-1.1.1d --with-openssl-opt='enable-ec_nistp_64_gcc_128 enable-tls1_3 -fuse-ld=gold'

Nếu có:

–add-dynamic-module=../ngx_brotli 

Brotli đã được kích hoạt.

Rocket-Nginx cho centminmod

cd /usr/local/etc
git clone https://github.com/maximejobin/rocket-nginx.git
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php

Tắt CRON mặc định của WP. Mở file: wp-config.php và thêm:

define('DISABLE_WP_CRON', true);

cấu hình lại file config nginx

/usr/local/nginx/conf/conf.d/nghiart.com.conf
/usr/local/nginx/conf/conf.d/nghiart.com.ssl.conf

Thêm vào giữa thẻ sever

include /usr/local/etc/rocket-nginx/default.conf;

Check 1 lần nữa

nginx -t

khởi động lại VPS hoặc Nginx:

service nginx reload

Bước cuối config trên DashBoard của WP. Check lại header của website nếu có: “x-rocket-nginx-serving-static: Yes” là okie!

Bài dài lắm rồi, nên phần sử dụng centmin để sau nhé.

Nhớ bình chọn chất lượng bài viết để mình cố gắng :v
guest
6 Comments
oldest
newest
Inline Feedbacks
View all comments
SPT
SPT
6 days ago

Khi vào file cài đặt domain em bị lỗi như này là sao bác nhỉ
/usr/local/nginx/conf/conf.d/ten-mien.conf: Permission denied

Last edited 6 days ago by SPT
SPT
SPT
6 days ago

Em đang làm theo hướng dẫn của bác ý. Cài rocket-nginx. Đang đến phần Chỉnh file cài đặt domain:

/usr/local/nginx/conf/conf.d/nghiart.com.conf

Nhưng khi gõ lệnh như trên và thay bằng tên miền của e thì nó bị lỗi Permission denied.

[15:42][[email protected] ~]# /usr/local/nginx/conf/conf.d/hyundaibacninh5s.net.conf
-bash: /usr/local/nginx/conf/conf.d/hyundaibacninh5s.net.conf: Permission denied
You have new mail in /var/spool/mail/root