RunCloud, về tổng thể nó khá giống các *UNIX script như Webinoly, Centmin Mod, EasyEngine, giúp bạn tự động cài đặt một webserver chạy trên Ubuntu 16.04 64bit với Nginx v1.13.7+ MariaDB v10.1.30 (MySQL) + PHP v7.2.0 (mới nhất) + HTTP / 2 hoàn chỉnh, điểm khác biệt 1 tẹo là thay vì phải gõ vài dòng lệnh như bọn kia, thì nó chẳng phải gõ dòng nào, bạn kết nối VPS vào dịch vụ của RunCloud, xong thì tất cả các thứ thông qua bảng điều khiển của họ để quản lý, các vấn đề tự động thì gần như 99% cả rồi, với RunCloud thì mình nghĩ bất cứ ai cũng có thể quản trị tốt server, rất đơn giản :]] ờ, tất nhiên chỉ là quản trị kiểu phổ thông, đủ dùng thôi hé 😀
RunCloud nếu nói cụ thể thì nó tương đồng với 1 dịch vụ khác của DigitalOcean là ServerPilot, cũng kết nối VPS với dịch vụ của họ, xong quản trị qua bảng điều khiển riêng, có điều sau khi dùng thử RunCloud nửa buổi thì mình đánh giá RunCloud rất cao, hiệu năng tốt và đơn giản
Giới thiệu và đánh giá về RunCloud
Nhóm làm RunCloud là người Malaysia và ngạc nhiên là họ chỉ mới chuẩn bị kỉ niệm 1 năm release sản phẩm 01/2017 -> 01/2018 :]] kể cũng không lạ khi Webinoly là người México làm ra, Centmin Mod người Australia, EasyEngine thì là India (Ấn Độ), Việt Nam thì có VPSSIM và HocVPS, có vẻ như mấy nước đang phát triển thích làm mí cái script dạng này thì phải 😛
Đầu tiên đăng kí tài khoản: Đăng Kí Runcloud
Tiếp theo là kết nối với RunCloud : Connect Server
Họ yêu cầu VPS chạy hệ điều hành Ubuntu 16.04 LTS 64bit (Fresh Server) và không sử dụng OpenVZ (chắc để tạo thêm swap và vài tính năng nào đó) và mở sẵn các port 80/tcp, 443/tcp, 34210/tcp, VPS thì hiện tại mình cũng chỉ recommend Vultr, đơn giản vì nó có gói $2.5 / tháng 😀
Port thì khi dùng các gói của Google hay Amazon mặc định họ khóa cả, nên phải mở ra như yêu cầu của RunCloud, còn nếu dùng Vultr, DO, Linode … thì thường họ không khóa port nào cả, cái này ai dùng VPS phải biết, nên mình không nói sâu thêm
Nói chung dùng VPS hãng nào cũng được, có location Sing hay Japan và giá rẻ là được, mấy ông trên thì toàn nổi tiếng thế giới cả rồi, không cần phải nghĩ về chất lượng
Connect A Server:
Phần IP ADDRESS điền IP của VPS vào, có dòng này cần điền chính xác thôi, còn lại điền gì tùy thích
Xong thì ấn vào Connect this server
Lúc này họ yêu cầu bạn log vào VPS với quyền ROOT và chạy đoạn copy đó là được 😀 đây là bước duy nhất cần phải login tới VPS, còn lại thì toàn quản lý thông qua bảng điều khiển của RunCloud cả
Đoạn này thì không khác gì mấy so với các script như Webinoly, Centmin Mod, EasyEngine, ún trà hay ăn bánh chờ nó cài thôi 😛
Minh dùng VPS FREE của Google Cloud, tốc độ HDD cực kì cùi mà chỉ mất tầm 7 phút là cài đặt xong, nếu bạn dùng bất cứ dịch vụ nào khác mình nghĩ đều sẽ nhanh hơn, chỉ mất tầm 3-5 phút là cài xong 😛
RunCloud cũng là trang có cái bảng điều khiển mình nghĩ vừa đạt yêu cầu về công nghệ, vừa đạt yêu cầu về sự đơn giản và trực quan, tất cả các thông tin chỉ cần nhìn cái hình trên là bạn đã có thể bao quát hết các tính năng của nó 😀 thông tin VPS như RAM, CPU, HDD, UPTIME, cron, database …
Điểm tiếp theo đập vào mắt, là nó quản lý CPU rất tốt, CPU toàn chạy 0-1%, tasks chỉ có 37 :]] rất hiếm script auto nào config vụ này tốt như vậy á 😛
Cứ trung bình 15 phút họ sẽ kiểm tra 1 lần, nếu server load > 5 hoặc sử dụng RAM > 85% , hoặc sử dụng HDD > 90% , họ sẽ gửi cho bạn một thông báo qua email, Slack hoặc Telegram để bạn biết. Nói chung các tính năng đi kèm của họ phải nói vô cùng tuyệt vời, ai cũng phải cần cả 😀 có điều gói đó trả phí 😛 $10 / 1 tháng thì thú thực với hiệu quả nó mang lại thì vô cùng xứng đáng 😀 có điều thực sự thì dùng gói FREE đủ rồi, cá nhân mình cũng chỉ cần cái phần họ config server dùm mình thôi, còn mấy cái tính năng quản lý thêm vào này thì hú thực rất hiếm ai nhìn. Tổng thể thế thôi, cũng phải cài cái web lên rồi mới chém gió tiếp được nữa 😀
Ấn vào Tab WEB APPLICATION, sau đó ấn vào Create Application để cài đặt các ứng dụng web
Web Application: (bước này quan trọng nên mình nói rõ một tí)
DOMAIN NAME: điền domain của bạn vào
PHP VERSION: không phải cứ mới nhất như 7.2 là tốt nhất, cũng không phải cũ như 5.6 là tệ, đồng ý bản mới phải có điểm hay, điểm tốt hơn bản cũ, thì người ta mới ra, không thôi cứ dùng 5.6 là đủ, việc gì phải ra bản mới, lúc này thì tùy quan điểm, nếu bạn chắc sản phẩm mình chạy, như WordPress, Joomla … và các addon, plugin đi kèm đều đã chạy tốt ở PHP 7 thì chọn 7.2, còn nếu không xác định rõ thì hãy dùng PHP 5.6, bản PHP cũ hơn thì được cái nó đồng bộ tốt hơn, gần như 100% các plugin, template … đều chạy tốt
Vụ này mình suy nghĩ tích hợp hơn 😀 táng hẳn bản mới nhất 7.2, còn thèng nào mà viết code mà không hỗ trợ 7.2 thì bố dí lol vào, ếu thèm dùng lun cho nước nó trong
WEB APPLICATION STACK: chọn Native NGINX
NGINX + Apache2 cũng là giải pháp hay, khi bạn có thể chạy được các file .htaccess, tuy thế hiện nay đã có đầy các trang để chuyển .htaccess sang NGINX rồi, nên chẳng việc gì phải dùng, code khi viết họ cũng đã viết chạy ổn định trên NGINX rồi
Web Application Advance Setting:
Mặc định thì Runcloud đã tự cấu hình dựa vào RAM và CPU của bạn rồi, đây là cấu hình được họ cho là tốt nhất, thành ra cũng không cần phải nghĩ nhiều, các giá trị MAX_EXECUTION_TIME, MAX_INPUT_TIME, MAX_INPUT_VARS, POST_MAX_SIZE, UPLOAD_MAX_FILESIZE thì tăng lên cao tí là được 😀 phòng khi mạng chậm, upload file to lên không bị lỗi 😀
DISABLE_FUNCTIONS: là các hàm php mà RunCloud chặn, đa phần vì lý do bảo mật, thật sự với mình thì nhiều quá sức, rất dễ chặn một số tính năng của các script hay plugin khi sử dụng
Đoạn code trên mình lấy từ disable_functions của EasyEngine, dùng lâu nay chạy ổn định ở các plugin, không bị chặn hay thiếu hàm gì ráo 😀 nên mình lấy sang bỏ vào bên này, chứ Runcloud chặn nhiều quá
Xong xuôi thì ấn vào Add Web Application (Nói chung phần này bạn có thể sửa lại sau này tùy thích, nên chứ dùng rồi tăng giảm các giá trị cho phù với với bản thân là được :]])
Web Application Summary Owner : runcloud Total Domain Name : 1 PHP Version : php72rc Web Application Stack : Native NGINX Root Path : /home/runcloud/webapps/app-carroll Public Path : /home/runcloud/webapps/app-carroll Total data transfer yesterday : 0B Total data transfer this month : 0B
Ta sẽ có cái Summary các thứ vừa làm xong, chủ yếu nhớ dòng Root Path, Public Path để biết đường dẫn mà còn upload file lên đó thôi 😀
Tiếp theo chuyển sang Tab Script Installer để cài WordPress 😀 nói chung thì mấy vụ cài đặt sẵn thế này thì hiện tại 100% các thứ hỗ trợ rồi, bạn không còn phải download code về rồi upload lên FTP như ngày xưa nữa
Tiện thể sang Tab SSL/TLS ấn chạy lun, giờ thì nhà nhà SSL, người người HTTP/2 rồi, theo phong trào cho cho bầy có bạn :]]
SLL của RunCloud cũng được A+ như các tool khác, còn mỗi EasyEngine là chỉ được B+ 🙁
Mặc định thì RunCloud cũng tự tạo cron để review SSL khi hết hạn, nên đăng kí SSL xong là được, khỏi cần quan tâm tới nó nữa, tính năng này phải trả phí đấy, mà tài khoản FREE họ cho 5 ngày dùng thử, thành ra vào nhớ tạo SSL ngay khi vừa tạo tài khoản để đỡ phí hé 😀
RunCloud họ tách phần Database ra riêng để quản trị, thành ra không có tự động tạo database như nhiều script khác, thành ra phải tự tạo Database
Điền DATABASE NAME vào tùy ý, nhớ đừng quên là được 😀
Tạo User cho Database
Điền User và Password vào 😀
Ấn vào cái hình màu xanh bên dưới chữ Attach User để add User vào Database
Chọn User muốn Add vào Database rồi ấn vào Attach là được 😀
OK, ngừng lại tí để chém gió tí, không hiểu sao RunCloud họ không tích hợp sẵn Database sẵn khi làm ở phần Script Installer nhỉ, bắt end user làm 1 đống thao tác chẳng để làm gì
Họ cũng cho sẵn 30 GB space để backup, tuy thế mình nghĩ dùng Duplicator Pro tốt và đơn giản hơn
Muốn chạy thêm Redis hoặc Memcached thì chỉ việc vào SERVICES bật hoặc tắt nó lên theo nhu cầu là được 😀 mặc định thì nó chỉ chạy NGINX và MARIADB thôi, các script khác thì mặc định đã bật sẵn Redis hoặc Memcached lên rồi, tuy thế nói thật trên mấy con VPS ghẻ < 1GB RAM thì Redis hoặc Memcached vô nghĩa
Tổng thể sơ lược về trang quản trị của RunCloud là thế, các bạn có thể vào xem thế các mục, mình cũng giới thiệu khái quát, để để bạn dùng thôi 😀
Quay lại chủ đề chính là thử hiệu năng, nói nãy giờ cũng chủ yếu ở cái này 😀
Đầu tiên thử trực tiếp với đường truyền tại Việt Nam trên theme mặc định của WordPress với VPS Google Cloud location Sing, config bằng RunCloud
Thời gian load trang khoảng 600ms (0.6s), TTFB khoảng 150-250 ms
Thử trên dịch vụ monitor của updown.io, điểm TTFB và khá tốt, tuy thế dùng SSL nó bị cái thời gian bảo mật kết nối nên chậm quá sức 🙁
Thử trên dịch vụ dotcom-monitor 😀
Tiếo theo ta thử hiệu năng khi nhiều người truy cập, xem RunCloud config thế nào, dịch vụ test thì vẫn là loader.io thôi 😀
Thử với 100 client mỗi giây trong 1 phút, không sử dụng bất cứ cơ chế cache nào, tất cả đều mặc định, tốc độ truy cập trung bình ~5s :D, timeout khoảng 139 lần (giá trị timeout là dành cho các kết nối quá 10s vẫn chưa vào được), từ biểu đồ bạn cũng thấy là sau khi chạy khoảng 30s thì nó bắt đầu có triệu chứng lê lết 😀
Chuyển lên 200 client mỗi giây trong 1 phút, tốc độ trung bình lên ~8-10s để kết nối vào :]] Với tốc độ này thì thú thực chẳng ai vào site nổi, vì thường quá 5s là chẳng ai muốn chờ rồi 😀
Mình quyết định táng hẳn lên 1000 client mỗi giây cho nó sập luôn, xem cơ chế tự fixed của nó ra làm sao :]]
Thật tuyệt là nó sập luôn sau khoảng 5s, nhưng sau đó nó tiếp tục hoạt động, không bị lỗi kết nối database như Centmin Mod hay EasyEngine, hiện tại mình chỉ biết Webinoly và RunCloud có cơ chế này 😛 (thật ra thì cái này chỉ việc cài thêm vài dòng code nhỏ là được, mà không hiểu sao 2 ông bự kia không làm)
Để tiếp tục kiểm nghiệm, mình thử cài WP Rocket và Rocket-Nginx, xem với hình thức cache này, RunCloud có thể tối ưu tới đâu trên con VPS 600 MB RAM 😀
Quay lại bài test 1000 client mỗi giây trong 1 phút 😀
Pass nhẹ nhàng, dù có có 12 timeout khi vừa bắt đầu 😀 thời gian truy cập trung bình chỉ ~ 800ms :]]
Điểm rất tuyệt là sau bài test, CPU lập tức về 0% loadtime ngay, không hề bị gì cả
Thử với con số tối đa, 10.000 client mỗi giây, con số cao nhất gói FREE loader.io cho phép thì cháu nó tạch ngay từ vòng giữ xe 😀 tuy thế, vẫn như mọi khi, không pass nhưng server vẫn tiếp tục chạy tiếp, không có bất cứ lỗi database nào 😀
Để tiếp tục thử nghiệm, mình sử dụng thêm CDN từ Cloudflare xem có cải thiện được thêm về hiệu năng không 😛
Cơ bản thì với RunCloud+ WP Rocket và Rocket-Nginx + Cloudflare chạy trên hệ thống VPS Google Cloud Ram 600 MB, CPU Share ta chịu được con số 2.000 client truy cập mỗi giây 😛 tuy cũng có ~6% kết nối tạch, tốc độ trung bình 3-4s, nói chung tham khảo là chính, vì thực tế chẳng có hệ thống nào hơn 500 người online một lúc mà dùng cái gói VPS ghẻ cỡ này cả :]]
Nếu thuần túy sử dụng, cài VPS thông qua RunCloud không cần config thêm gì, bạn đã có thể làm một cái shop bé bé nhỏ nhỏ cho tầm 50 người mua hàng liên tục mỗi giây mà vẫn đảm bảo là nhanh và không có bất cứ lỗi gì, thực tế thì cũng làm gì có cái shop nào mỗi giây có 50 order, một ngày 50 order đã bá 😀 thành ra chỉ cần cài mặc định RunCloud là đủ 😀
Còn nếu site bạn views nhiều, như site đọc truyện chẳng hạn, thì chỉ cần cài thêm WP Rocket và Rocket-Nginx là đã có thể đáp ứng 1000 người liên tục online mỗi giây, đọc đảm bảo là xé gió, thực tế mình cũng chưa thấy site nào đọc truyện hay trang nào có 1000 view mỗi giây mà dùng con VPS ghẻ cỡ này cả 😛
Với các VPS ít RAM thì mình recommed dùng WP Rocket với hình thức cache php thành file html là đủ, không cần vẽ vời Redis hay Memcached làm gì
Điểm mình thích nhất ở RunCloud là giống như Webinoly, họ có cơ chế tự xử lý khi quá tải, VPS tự động chạy lại bình thường khi qua cơn bão :]] thành ra quản trị rất nhàn, không phải vào xử lý lỗi gì cả, một giải pháp rất tuyệt cho các bạn sử dụng VPS mà không cần biết thêm 1 dòng code nào cả, cần thêm domain, website … bạn chỉ việc login vào quản lý của họ, ấn vài cái là xong, không phải kết nối tới VPS gõ lệnh gì cả, mình nghĩ bất cứ ai đều có thể sử dụng được RunCloud 😀 nó cũng tiêu thụ rất ít RAM và CPU, thật ra thì cái này tất cả các script auto hiện nay đều được thế cả, nên cũng không có gì lạ 😀
Yeb, cũng chính vì thế, bài này mình viết khá dài, hình ảnh rất nhiều và đánh giá khá chi tiết các thứ về hiệu năng để các bạn có thể tham khảo, gói FREE mình nghĩ đã là đủ dùng rồi, gói PRO $10 / 1 tháng thì mình nghĩ không cần, vì các tính năng đó, có FREE thì tốt, không có thì bạn vẫn có thể làm tốt, chẳng vấn đề gì 😛