Trước đây thi thoảng mình có dùng CyberPanel, lý do chủ yếu nhất là trên CyberPanel config các thứ khá nhanh, không phải cấu hình Nginx, các headers sạch sẽ, cụ thể bạn có thể xem bài cấu hình ở năm 2022, dùng Nginx các lệnh chi chít luôn 😀
Dạo này mình dùng lại Webinoly, tiện thể viết 1 bash script đơn giản, nó cứ chạy tuần tự các lệnh từ trên xuống 😀 thay vì bạn phải gõ từng dòng lệnh, phải chờ chạy xong mới gõ dòng tiếp theo, thì giờ đỡ phải chờ, sau này chuyển VPS, restore lại bibica.net chỉ cần gõ 1-2 dòng code là xong 😀 vừa nhanh vừa đỡ quên 😛
Về các dòng code thì mình nghĩ đơn giản nhất bạn cứ viết ở github, chỉnh sửa gì nó có log lưu lại, không lo sập 😀
Mình sẽ viết theo quan điểm người đọc cũng giống mình, nghĩa là không biết bất cứ 1 dòng code hay ngôn ngữ lập trình nào hết 😀 mọi thứ mình viết trong bài, đều là vướng ở đâu thì …. google ở đó 😛
Cụ thể file setup.sh của thèng bibica.net nội dung như sau:
#!/bin/bash # setup Webinoly php 7.4 sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Webinoly-Optimization/master/webinoly74.sh -O webinoly_mod.sh && sudo chmod +x webinoly_mod.sh && sudo ./webinoly_mod.sh # setup wp-cli curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar php wp-cli.phar --info chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp # setup rclone sudo -v ; curl https://rclone.org/install.sh | sudo bash # setup crontab cho wp_cron and simply-static mkdir -p /var/www/bibica.net/static-files-temp chmod 777 /var/www/bibica.net/static-files-temp crontab -l > simply-static echo "0 3 * * * /usr/local/bin/wp --path='/var/www/html' simply-static run --allow-root" >> simply-static echo "*/1 * * * * curl https://bibica.net/wp-cron.php?doing_wp_cron > /dev/null 2>&1" >> simply-static crontab simply-static # setup wordpress bibica.net and off httpauth sudo site bibica.net -wp sudo httpauth bibica.net -wp-admin=off # setup proxy api.bibica.net sudo site api.bibica.net -proxy=[https://api.bibica.net/] -dedicated-reverse-proxy=simple # setup ssl mkdir -p /root/ssl sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.pem -O /root/ssl/bibica.net.pem sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.key -O /root/ssl/bibica.net.key sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.crt -O /root/ssl/bibica.net.crt # setup ssl for bibica.net and api.bibica.net sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net -O /etc/nginx/sites-available/bibica.net sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/api.bibica.net -O //etc/nginx/sites-available/api.bibica.net # nginx reload nginx -t sudo service nginx reload # mariadb config sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/my.cnf -O /etc/mysql/my.cnf sudo service mysql restart # delete all file in foder htdocs cd /var/www/html rm -rf *
Nội dung chú thích thì bạn có thể dùng dấu # đằng trước, sau đó ghi chú để nhớ
Dòng đầu tiên của bash script sẽ là
#!/bin/bash
Dòng tiếp theo là cài đặt Webinoly
# setup Webinoly php 7.4 sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Webinoly-Optimization/master/webinoly74.sh -O webinoly_mod.sh && sudo chmod +x webinoly_mod.sh && sudo ./webinoly_mod.sh
Tiếp theo là cài đặt WP-CLI, Rclone
# setup wp-cli curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar php wp-cli.phar --info chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp # setup rclone sudo -v ; curl https://rclone.org/install.sh | sudo bash
Tiếp theo là cài đặt crontab
# setup crontab cho wp_cron and simply-static mkdir -p /var/www/bibica.net/static-files-temp chmod 777 /var/www/bibica.net/static-files-temp crontab -l > simply-static echo "0 3 * * * /usr/local/bin/wp --path='/var/www/html' simply-static run --allow-root" >> simply-static echo "*/1 * * * * curl https://bibica.net/wp-cron.php?doing_wp_cron > /dev/null 2>&1" >> simply-static crontab simply-static
Thường khi ở root, mình hay gõ crontab -e, sau đó điền các dòng vào, nhưng ở set chạy tự động, phải thông qua việc đặt tên 1 crontab mới, sau đó echo từng dòng vào, sau đó chạy crontab tab
Cụ thể nhất, trên Wordpress set chạy wp_cron thì bạn dùng 3 dòng như bên dưới
crontab -l > simply-static echo "*/1 * * * * curl https://bibica.net/wp-cron.php?doing_wp_cron > /dev/null 2>&1" >> simply-static crontab simply-static
Mình dùng thêm Simply Static Pro để cứ 3h sáng, tự chạy tạo trang tĩnh qua WP-CLI, mà do thư mục mình set static-files-temp, nó nằm ngoài thư mục root của Wordpress, khi vừa cài mới vào, Simply Static Pro không thể tự tạo thư mục static-files-temp và phân quyền được, nên cần tạo riêng
mkdir -p /var/www/bibica.net/static-files-temp chmod 777 /var/www/bibica.net/static-files-temp
2 dòng bên trên là để tạo thư mục static-files-temp sau đó chmod thành 777
Nhìn khá dễ hiểu đúng không 😀
Tiếp theo là cài đặt Wordpress và tắt httpauth trên bibica.net
# setup wordpress bibica.net and off httpauth sudo site bibica.net -wp sudo httpauth bibica.net -wp-admin=off
2 dòng này thì là lệnh của Webinoly, bạn dùng các script khác thì điền code của script đó vào
Tiếp theo là cài đặt proxy cho subdomain api.bibica.net
# setup proxy api.bibica.net sudo site api.bibica.net -proxy=[https://api.bibica.net/] -dedicated-reverse-proxy=simple
Tiếp theo là sử lý vấn đề ssl
# setup ssl mkdir -p /root/ssl sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.pem -O /root/ssl/bibica.net.pem sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.key -O /root/ssl/bibica.net.key sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.crt -O /root/ssl/bibica.net.crt
Mình dùng ssl của Cloudflare, mỗi lần đổi VPS là sẽ phải upload file .pem .key .crt lên VPS mới
Cụ thể thì dòng 1 sẽ tạo thư mục ssl trong root
Sau đó wget kéo cái file vào /root/ssl/ đặt thành 1 tên cụ thể
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.pem -O /root/ssl/bibica.net.pem
Cụ thể như đoạn code trên là kéo file bibica.net.pem từ githubusercontent.com vào /root/ssl/ sau đó đặt tên mới là bibica.net.pem
Sau đó sẽ tích hợp ssl vào 2 domain đang dùng là bibica.net và api.bibica.net
# setup ssl for bibica.net and api.bibica.net sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net -O /etc/nginx/sites-available/bibica.net sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/api.bibica.net -O //etc/nginx/sites-available/api.bibica.net
Bóp trán si nghĩ, thấy đoạn code thêm vào nếu dùng ssl khá lằng nhằng, chưa kể các đoạn code khi dùng proxy cho api.bibica.net vị trí điền cũng khó
Nên thôi, dùng cục súc nhất, là vào trang cũ, chép 2 file cấu hình của bibica.net và api.bibica.net cho lên github, sau đó wget chép đè vào file có sẵn 😀
Xong thì reload hoặc restart lại nginx
# nginx reload nginx -t sudo service nginx reload
Cấu hình 1 chút ở mysql
# mariadb config sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/my.cnf -O /etc/mysql/my.cnf sudo service mysql restart
Tiếp tục dùng mưu hèn kế bẩn, kéo file đã cấu hình sẵn, ghi đè vào my.cnf, sau đó khởi động lại mysql
Việc restore thì 5-6 năm nay mình vẫn dùng Duplicator Pro, upload 2 file archive.zip và installer.php vào thư mục root của wordpress là xong
Để tránh các file rác, thì vào thư mục htdocs chạy rm -rf * để xóa tất cả các file và thư mục bên trong
# delete all file in foder htdocs cd /var/www/html rm -rf *
Cụ thể trên github, tổng cộng các file mình cấu hình mình cho vào sẽ như ảnh bên dưới
Bash script này nó chỉ thiếu công đoạn upload 2 file archive.zip và installer.php vào thư mục /var/www/bibica.net/htdocs, phải upload bằng tay, thực tế thì bản thân mình cũng phải lựa chọn bản backup ngày nào để restore, nên bước này làm tay cũng ổn 😀
Để chạy file setup.sh trên VPS thì cấu trúc cơ bản như bên dưới
sudo wget https://domain.com/setup.sh && sudo chmod +x setup.sh.sh && sudo ./setup.sh.sh
wget file setup.sh về, sau đó chmod để nó có quyền chạy, rồi chạy bằng cách ./ đằng trước tên file
Webserver + remote + proxy trên 2 VM Oracle FREE
Cá nhân thì mình rất không thích chuyện tách webserver và database ra 2 nơi khác nhau vì phải cấu hình nhiều hơn và thường tốc độ cũng không nhanh bằng dùng localhost chưa kể các vấn đề liên quan tới bảo mật cũng kém hơn =))
Chủ yếu do VM Oracle Always Free phần cứng rất yếu, chạy 1 con cứ có cảm giác muốn sập tới nơi, mà chạy 2 con thì lại rất là ổn định 😀 sau khi dùng 2 tuần không thấy vấn đề gì, nên mình cố gắng tạo bash script cho cấu hình này luôn
Đây là combo mình đang sử dụng, cụ thể trang bibica.net sẽ là trang chính, cài đặt Nginx và PHP
Trang api.bibica.net là trang proxy ảnh và chứa database, cài đặt Nginx và Mysql
Việc tạo bash script cho 2 VPS cùng lúc về tương tự như cấu hình 1 VPS, có điều hơi mất thời gian một chút, vì khá dễ nhầm, chưa kể các câu lệnh từ Webinoly sẽ hơi khác một chút 😀
- Remote server và proxy
#!/bin/bash sudo apt remove iptables-persistent -y sudo ufw disable sudo iptables -F locale-gen en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 sudo apt update -y sudo apt install zip -y sudo apt install unzip -y sudo apt install htop -y sudo apt install screen -y sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/webinoly/master/weby -O weby && sudo chmod +x weby && sudo ./weby -clean sudo rm /opt/webinoly/webinoly.conf sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Webinoly-Optimization/master/webinoly_php74.conf -O /opt/webinoly/webinoly.conf sudo stack -mysql -build=light sudo stack -nginx -build=light # setup proxy api.bibica.net sudo site api.bibica.net -proxy=[https://api.bibica.net/] -dedicated-reverse-proxy=simple # setup ssl mkdir -p /root/ssl sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.pem -O /root/ssl/bibica.net.pem sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.key -O /root/ssl/bibica.net.key sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.crt -O /root/ssl/bibica.net.crt # setup ssl for bibica.net and api.bibica.net sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/api.bibica.net -O //etc/nginx/sites-available/api.bibica.net # nginx reload nginx -t sudo service nginx reload # mariadb config sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/my.cnf -O /etc/mysql/my.cnf sudo service mysql restart sudo webinoly -mysql-public-access=on -create-master-user=[masteruser,abcdefgh] sudo site -mysql -external-db=[masteruser,abcdefgh]
Chạy xong ở remote server sẽ tự tạo ra 1 database mới để dùng
- Webserver
#!/bin/bash # setup Webinoly sudo apt remove iptables-persistent -y sudo ufw disable sudo iptables -F locale-gen en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 sudo apt update -y sudo apt install zip -y sudo apt install unzip -y sudo apt install htop -y sudo apt install screen -y sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/webinoly/master/weby -O weby && sudo chmod +x weby && sudo ./weby -clean sudo rm /opt/webinoly/webinoly.conf sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Webinoly-Optimization/master/webinoly_php74.conf -O /opt/webinoly/webinoly.conf sudo stack -nginx -build=light sudo stack -php -build=light sudo apt update && sudo apt upgrade -y sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Webinoly-Optimization/master/php.ini -O /etc/php/7.4/fpm/php.ini sudo service php7.4-fpm restart # setup wp-cli curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar php wp-cli.phar --info chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp # setup rclone curl https://rclone.org/install.sh | sudo bash # setup crontab cho wp_cron and simply-static mkdir -p /var/www/bibica.net/static-files-temp chmod 777 /var/www/bibica.net/static-files-temp crontab -l > simply-static echo "0 3 * * * /usr/local/bin/wp --path='/var/www/html' simply-static run --allow-root" >> simply-static echo "*/1 * * * * curl https://bibica.net/wp-cron.php?doing_wp_cron > /dev/null 2>&1" >> simply-static crontab simply-static # setup wordpress bibica.net and off httpauth sudo site bibica.net -php # setup ssl mkdir -p /root/ssl sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.pem -O /root/ssl/bibica.net.pem sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.key -O /root/ssl/bibica.net.key sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net.crt -O /root/ssl/bibica.net.crt # setup ssl for bibica.net sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/bibica.net -O /etc/nginx/sites-available/bibica.net # nginx reload nginx -t sudo service nginx reload # go to root bibica.net cd /var/www/bibica.net/htdocs
Oracle 24GB RAM cho bibica.net, api.bibica.net, warp-up-cache
Đây là bash script hiện tại mình đang sử dụng cho thèng bibica.net
Cấu hình cụ thể bao gồm 3 VM tại Home Region US West (San Jose), đã set sẵn bypsas các rule của Cloudflare cho phù hợp từng VM riêng
- bibica.net sẽ chạy trên VM.Standard.A1.Flex 4 core 24 GB RAM 100 GB HDD
- api.bibica.net sẽ chạy trên VM.Standard.E2.1.Micro 2 core 1 GB RAM 50 GB HDD
- warp-up-cache sẽ chạy trên VM.Standard.E2.1.Micro 2 core 1 GB RAM 50 GB HDD
Setup bibica.net
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/bibica.net/main/stable.sh -O webinoly_oracle.sh && sudo chmod +x webinoly_oracle.sh && sudo ./webinoly_oracle.sh
Restore bằng Duplicator Pro, upload archive.zip và installer.php vào (có thể sử dụng wget cho nhanh)
/var/www/bibica.net/htdocs
Đổi 2 domain bên dưới về IP mới
bibica.net www.bibica.net
Chạy file installer.php để restore
Setup api.bibica.net
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Webinoly-Reverse-Proxy/main/setup.sh -O webinoly_reverse_proxy.sh && sudo chmod +x webinoly_reverse_proxy.sh && sudo ./webinoly_reverse_proxy.sh
Đổi domain bên dưới về IP mới
api.bibica.net
Setup warp-up-cache
sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/Warm-Up-Cache/main/setup.sh -O warm_up.sh && sudo chmod +x warm_up.sh && sudo ./warm_up.sh
Do phần cứng của combo này quá mạnh, gấp 10-20 lần so với nhu cầu thèng bibica.net cần 😀 vấn đề hiệu năng không cần bàn tới nữa, chủ yếu nhất là hướng tới tính ổn định, cố gắng đạt uptime tốt nhất có thể (Oracle họ có thông báo về vấn đề bảo trì hệ thống định kì, mỗi cái không rõ họ có tự reboot lại VM không? gặp quả này thì …. chịu vậy 😀 dù rằng trên vài con VPS khác mình từng dùng trong khoảng 6 tháng qua thì không thấy vụ này)
Không quá tối ưu về cấu hình cho PHP và Mysql, mỗi cái RAM thừa mứa quá thì cấu hình sao cũng vẫn thừa 😀
Trước đây mỗi lần chuyển VPS, phải upload các file ssl, copy paste các lệnh khá ngu người 😛 giờ khi cần restore thì cứ vào thẳng github, copy vài dòng lệnh bên trên vào là xong, mọi thứ đã được cấu hình sẵn, không lo làm sót hay nhầm 😀
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!