Localhost Web Public với VMware Workstation Pro + CentOS 7+ Centmin Mod+ Cloudflare Tunnels

Về cơ bản thì nó sẽ khá tương đồng với bài Tạo Localhost Web Public Với Cloudflare Tunnels Và LocalWP, có điều sử dụng VMware Workstation Pro + CentOS 7+ Centmin Mod+ Cloudflare Tunnels thì sẽ tối ưu về tốc độ và hiệu năng hơn

Nếu thích, bạn cũng có thể đổi sang dùng Ubuntu và cài Webinoly, có điều thao tác khi cài đặt OS phải ấn enter hơi nhiều thôi 😛 mình cũng đã thử cài, hiện năng các kiểu cũng bố đời cả 😀

VMware Workstation Pro + CentOS/Ubuntu thì để giả lập trên Windows, còn bạn nào có cái máy để không, cài trực tiếp CentOS 7/Ubuntu lên chắc hiệu quả hơn

Về cơ bản các bước là cài VMware Workstation Pro, tạo máy ảo giả lập CentOS 7, cấu hình Cloudflare Tunnels để public các thứ ra ngoài,sau đó cài đặt Centmin Mod, tạo Wordpress hoặc gì tùy thích

Cài đặt VMware Workstation Pro

Cứ chọn bản mới nhất là được, cụ thể hiện tại mình đang dùng VMware® Workstation 17 Pro v17.0.0 build-20800274, serial thì gõ tên sản phẩm lên google, chọn 2-3 trang đầu là thấy cả 😀

CentOS 7

Chọn bản x86_64 cho máy PC thông thường, cụ thể ở đây mình dùng bản CentOS-7-x86_64-DVD-2009.iso

Cài đặt CentOS 7 trên VMware Workstation Pro

Một trong lý do mình giới thiệu cài CentOS 7 chứ không phải là Ubuntu vì nó …. nhàn, cài mặc định còn lại VMware Workstation 17 Pro tự cấu hình tất cả

Ở ảnh 3, khi tạo tài khoản, nhớ kĩ user name và password là được

Bước cấu hình phần cứng thì mình chọn 20Gb ổ cứng, 4Gb RAM, 4 CPU Core, mọi người có thể chọn dựa theo phần cứng máy mình mang có, thực tế thì cấu hình này nó mạnh chắc gấp 4 lần con VPS đang dùng cho thèng bibica.net 😀

2022-12-09_18-19-36

Ở bản VMware Workstation Pro mới nhất thì nó tự làm hết rồi, bạn không phải động tay động chân cái gì nữa 😀

2022-12-09_18-23-55

Sau ít phút là VMware Workstation Pro cài đặt xong, tự hiện ra phần login luôn 😀

Mặc định VMware Workstation Pro đặt password bạn chọn làm password cho tài khoản root luôn, thành ra ở màn hình login này, ấn vào Not listed? rồi nhập user “root”, password bạn chọn ở lúc cài đặt là vào thẳng root luôn

2022-12-09_18-27-44

Về cơ bản lúc này cài đặt xong CentOS 7 rồi, CentOS thậm chí còn có sẵn giao điện các kiểu, y choang Windows luôn ^_^

Để lấy IP Address của con CentOS 7 này có thể làm như hình =)) cụ thể con số bạn thấy ở đây là 192.168.211.173

2022-12-09_18-36-03

Văn vở hơn thì cũng có thể vào Terminal gõ dòng lệnh ifconfig, nó cũng sẽ ra IP Address ở dòng inet là 192.168.211.173

Lúc này chúng ta đã có được đầy đủ thông tin về con CentOS 7 chạy trên VMware Workstation Pro

IP: 192.168.211.173
User: root
Password: *******

Bạn có thể dùng bất cứ tool, soft nào để kết nối vào, cá nhân thì mình vẫn quen dùng Bitvise SSH Client nên xài nó để login 😀

2022-12-09_18-41-01

Cấu hình Cloudflare Tunnels

Tạo tài khoản Cloudflare Zero Trust ->Access -> Tunnel -> Create a tunnel -> đặt 1 tên cho dễ nhớ (centminmod-home-server chẳng hạn)

cauhinh tunnel

Chọn Red Hat -> 64-bit sau đó copy dòng lệnh họ để sẵn bên dưới, chạy với quyền root

Complete!
2022-12-09T13:13:53Z INF Using Systemd
2022-12-09T13:13:54Z INF Linux service for cloudflared installed successfully

Sau khi kết nối xong thì ở phần này mình nhận được data center tại Hồng Kông – Singapore 

Cuối cùng ấn Next để qua bước sau

Public Hostname

2022-12-09_20-15-33

Subdomain và Domain thì bạn đặt tùy ý theo tên bạn muốn, cụ thể mình đặt domain là ps2.bibica.net

Type(Required): HTTPS

URL(Required): localhost:443

Ấn vào Additional application settings -> TLS

No TLS Verify: Enabled

Phải set chính xác như thế thì các trang chạy https mới chạy bình thường, không thôi lỗi điên cuồng

Cài đặt Centmin Mod

Bạn có thể cài đặt Centmin Mod như thông thường (1 dòng duy nhất ở cuối), hoặc có thể dùng 1 số setting nâng cao hơn

[email protected]
[email protected]
mkdir -p /etc/centminmod
touch /etc/centminmod/custom_config.inc
echo $EMAIL >> /etc/centminmod/email-primary.ini
echo $EMAILALT >> /etc/centminmod/email-secondary.ini
echo "PUREFTPD_DISABLED='y'" >> /etc/centminmod/custom_config.inc
echo "PHP_PGO_ALWAYS='y'" >> /etc/centminmod/custom_config.inc
echo "PHP_PGO='y'" >> /etc/centminmod/custom_config.inc
echo "PHP_BROTLI='y'" >> /etc/centminmod/custom_config.inc
echo "PHP_LZFOUR='y'" >> /etc/centminmod/custom_config.inc
echo "PHP_LZF='y'" >> /etc/centminmod/custom_config.inc
echo "PHP_ZSTD='y'" >> /etc/centminmod/custom_config.inc
echo "SET_DEFAULT_MYSQLCHARSET='utf8mb4'" >> /etc/centminmod/custom_config.inc
echo "NGINX_LIBBROTLI='y'" >> /etc/centminmod/custom_config.inc
echo "NGXDYNAMIC_BROTLI='y'" >> /etc/centminmod/custom_config.inc
echo "WPCLI_CE_QUERYSTRING_INCLUDED='y'" >> /etc/centminmod/custom_config.inc
echo "NGINX_SSLCACHE_ALLOWOVERRIDE='y'" >> /etc/centminmod/custom_config.inc
echo "NGINX_STAPLE_CACHE_OVERRIDE='y'" >> /etc/centminmod/custom_config.inc
echo "NGINX_STAPLE_CACHE_TTL='86400'" >> /etc/centminmod/custom_config.inc
echo "AUTOHARDTUNE_NGINXBACKLOG='y'" >> /etc/centminmod/custom_config.inc
echo "ZSTD_LOGROTATE_NGINX='y'" >> /etc/centminmod/custom_config.inc
echo "ZSTD_LOGROTATE_PHPFPM='y'" >> /etc/centminmod/custom_config.inc
yum -y update; curl -O https://centminmod.com/betainstaller74.sh && chmod 0700 betainstaller74.sh && bash betainstaller74.sh

Lý thuyết thì cài đặt setting này là tối ưu cho plugin Cache Enabler trên Centmin Mod

Bật thêm 1 số thứ kiểu PGO, BROTLI, LZ4, LZF và Zstd …. nó sẽ có tác dụng tốt hơn 1 xíu (3%-5%) ở các con VPS có cấu hình cao =)) đó giờ mình toàn dùng VPS 1 CPU, 1 GB RAM nên cũng ít quan tâm, đợt này thử trên localhost, có con VPS khỏe hơn nên thử coi làm sao

Gọi là tác dụng trên lý thuyết thôi hé, tại các config này chỉ có tác dụng trên PHP này nọ, mà giờ đa phần các trang đều chạy cache, load toàn html cả, tăng tốc tối ưu liên quan tới PHP, MySQL để làm gì đâu 😀 mặc định Centmin Mod cũng tốt lắm rồi

Cài đặt theo cấu hình này sẽ khá lâu, do PHP sẽ phải biên dịch thêm 1 lần 😀 lúc này bạn nên đi pha thêm ly cafe, kiếm miếng bánh mà ăn :]]

Total Curl Installer YUM or DNF Time: 69.6693 seconds
Total YUM Time: 23.279221872 seconds
Total YUM or DNF + Source Download Time: 82.7619
Total Nginx First Time Install Time: 199.9149
Total PHP First Time Install Time: 389.6355
Download From Github Time: 3.8103
Total Time Other eg. source compiles: 435.6659
Total Centmin Mod Install Time: 1107.9783
---------------------------------------------------------------------------
Total Install Time (curl yum + cm install + zip download): 1181.4579 seconds

Gõ tiếp

centmin

Điền email vào để hoàn thành cài đặt Centmin Mod, xong xuôi ấn tiếp 24 để thoát khỏi menu tùy chọn của Centmin Mod (lần đầu sau khi cài đặt xong cần ấn 24 hai lần)

Cài Đặt Google BBR

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh

BBR lý thuyết nó sẽ giúp giảm độ trễ (ping) xuống thấp hơn,  chủ yếu cài cho vui, thực tế đi qua Cloudflare Tunnels nhanh lắm rồi

Sau khi cài đặt xong nó sẽ yêu cầu reboot lại, gõ “y” vào xong enter là được

Cài Đặt WordPress

Cài Wordpress từ menu 22

Create a self-signed SSL certificate Nginx vhost? [y/n]: n

Không dùng Let's Encrypt để tạo SSL

Phần Wordpress Caching chọn tùy chọn 1, sử dụng hệ thống cache KeyCDN Cache Enabler

Domain tạo ra ở đây phải giống với phần Public Hostname điền ở trên là: pc2.bibica.net

Trong trường hợp muốn tạo thêm các domain, supdomain khác thì vào Cloudflare Tunnels -> Public Hostname tạo thêm

Cấu Hình SSL Signed By Cloudflare

Về SSL thì mình dùng SSL từ Cloudflare, bạn chỉ việc vào tạo 1 lần cho domain gốc, sau đó có thể dùng file này cho tất cả subdomain, vấn đề review này nọ Cloudflare làm cả, thời gian đa phần 10-15 sẵn rồi, nhàn hơn rất nhiều so với dùng của Let's Encrypt (cứ vài tháng lại phải review 1 lần)

Chép 2 file bibica.net.key và bibica.net.pem vào /root/ssl/

sudo nano /usr/local/nginx/conf/conf.d/pc2.bibica.net.conf

Thêm đoạn code bên dưới vào đầu của file config

server {
listen 80;
listen [::]:80;
server_name pc2.bibica.net www.pc2.bibica.net;
return 301 https://$host$request_uri;
}

Ở dòng listen 80; thay bằng đoạn code bên dưới

listen 443 ssl http2;
listen [::]:443 ssl http2; 
ssl_certificate /root/ssl/bibica.net.pem;
ssl_certificate_key /root/ssl/bibica.net.key;
add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload';

Sau đó chạy tiếp dòng dưới để reload lại nginx, để thay đổi có hiệu lực

nginx -t
service nginx reload

Thử nghiệm kết quả

Ban đầu mình chỉ tính viết tới đoạn cấu hình ssl xong rồi thôi, nên xóa đi, mà nghĩ lại nên có phần thử nghiệm kết quả nữa, nên tạo mới lại, restore thèng bibica.net lên con VPS tại máy bàn, đang dùng đường truyền của nhà mạng VNPT, gói Home Tiết Kiệm, domain là pc.bibica.net, máu chó set lên 8GB RAM, chạy 16 core CPU cho sướng mắt 😀 do dùng hệ điều hành CentOS và cài Centmin Mod nên độ mượt rất tốt, không khác gì chuyện dùng host chuyên dụng cả

Thử 1 bài Speedtest Bench.Sh, thấy nó detect IP ra tận thành phố luôn 😀

2022-12-13_13-47-48

Trừ cụm FPT mạng nay ngáo sao đó, các mạng khác ở Việt Nam đều max speed, tốc độ đi quốc tế cũng rất ấn tượng, ping US thậm chí xuống được 175 ms, dạo này VNPT speed quốc tế ổn thật

Thử Performance Test từ keycdn

2022-12-13_14-03-07

So sánh trực tiếp với con VPS UpCloud của thèng bibica.net đang dùng thì thấy TTFB không khác vẹo gì cả 😀

Website Speed Test

2022-12-13_14-09-14

Thử load toàn trang thì có vẻ không ổn lắm 😀 với các truy cập ở các nước châu Âu, tốc độ lệch gần 40% so với con host tại Sing, khi thử trực tiếp với IP US, thì thấy đúng là tổng thời gian cũng chậm hơn tầm 20-30%, được cái đó là tính tổng thời gian load tất cả mọi thứ, còn nếu chỉ lướt đọc thuần túy ấn để nó hiện qua trang, tìm kiểm nó ra kết quả …. thì gần như không thấy sự khác biệt giữa hots Sing và host VN 😀

Khoản chịu tải này nọ thì mình không bàn, phần bản thân Centmin Mod đã viết rất tốt rồi, phần thì trang blog đọc tin xử lý rất dễ, đa phần tùy vào cấu hình VPS là chính, bữa mình có thử thì với cấu hình 8 GB RAM, CPU 16 core nó cân 400 khách cùng truy xuất mỗi giây. không dùng bất cứ cơ chế cache nào cũng nổi, mỗi cái CPU máy bàn load 100% luôn 😀 thèng bibica.net dùng 1 GB RAM, 1 core CPU, không cache tầm 50 khách vào là lê lết rồi 😀

Tổng kết

Nói chung giải pháp dùng máy bàn tại VN làm server không hề tệ, nhờ có Cloudflare Tunnels nên thực tế khách vào sẽ đi qua 1 proxy tại Sing trước, nên kể cả có đứt cáp, khách ở mọi nơi đều có thể truy cập vào với tốc độ tương đối, xử lý các vấn đề liên quan tới tốc độ cũng cực dễ trên WordPress

Mỗi cái chi phí tiền điện, tiền nét, thiết bị để làm trò này tính ra …. còn mắc hơn thuê từ các dịch vụ VPS thông thường, cũng hiếm ai đi làm trò con bò này 😀 trừ vài trang share crack, hack … các thứ có bản quyền, mới phải làm 1 cái server private kiểu tại nhà cho chắc kèo

Chung quy lại, cái này nó hợp nhất cho các bạn xài laptop, muốn share project public cho khách xem demo, thay vì phải gửi rườm rà, có thể ngồi thẳng tại quán cafe, mở máy lên 1 phát share được luôn 😀 còn làm thành 1 cái server thực sự, ăn vài quả cúp điện, rớt mạng thì đúng bách cả nhục 😀

Leave a Comment