Thời gian qua, không lâu sau khi bài viết đầu tiên trên blog này xuất hiện và được chia sẻ ở khắp nơi, phía hosting nơi mình đặt blog này (cùng với website cho hai dự án riêng) đã gặp sự cố lớn liên quan đến phần mềm điều hành (cPanel và WHM). Họ đã mất nhiều thời gian để khắc phục lỗi này, kết cục là họ đã chọn cài mới cả hai, tạo lại các tài khoản và di chuyển dữ liệu cũ sang. Rất may mắn là trong hoàn cảnh mình chưa kịp tạo bản sao lưu mới cho toàn bộ các trang web của mình, thì dữ liệu hiện có không bị tổn hại gì.
Ngày 24 tháng 10, mình nhận được dữ liệu cũ. Năm tới mình sẽ ra trường và kiếm việc làm lâu dài, nên lần này mình đi đến quyết định sẽ sử dụng server (máy chủ) riêng, không còn chung chạ với bất cứ ai hết. VPS (server ảo riêng) là bước tiếp cận đầu tiên của mình, và mình chọn tạo và chạy một cái ở một nơi mình khá quen thuộc: Amazon Web Services (AWS).
Trước khi nhắc đến trải nghiệm từng có với AWS, mình sẽ kể vắn tắt về quãng thời gian rất dài mình di chuyển qua lại giữa các dịch vụ hosting miễn phí.
Trước đây, mình chỉ tập trung làm một trang web duy nhất, đó là cho dự án âm nhạc LQ2′. Hầu như mọi thứ tin từ dự án nhạc và chính bản thân mình đều được tập trung tại đó. Vì mình chỉ tạo web giới thiệu và blog, không có nhu cầu chạy mã nguồn gì đặc biệt, bản thân mình vẫn còn phụ thuộc gia đình về tiền bạc nên mình chọn sử dụng dịch vụ hosting miễn phí. Hồi đó WordPress được rất nhiều người và tổ chức sử dụng để tạo nhiều biến thể khác nhau.
Hosting miễn phí đầu tiên mình chọn là 000webhost. Thông số đủ dùng, nhưng ngay từ đầu nó đã đặt quảng cáo của Hostinger choán lấy hết website. Mình đã bỏ nó sau vài ngày sử dụng và chuyển sang Hostinger. Nhưng dịch vụ miễn phí của Hostinger cũng chẳng khá hơn khi mới chỉ cài theme nhẹ từ chính nguồn WordPress.org và viết vài bài chỉ có chữ kèm một ít hình ảnh không lớn lắm. Plugin mình chọn cài cũng chỉ làm vài việc lặt vặt. Những thứ quan trọng hơn như tường lửa hay cache (bộ đệm) chẳng hạn, mình không quan tâm lắm.
Hồi đó cũng có hàng tá các dịch vụ miễn phí khác. Hầu hết chúng đều ghi băng thông không giới hạn. Nhưng đằng sau đó là một loạt các giới hạn, trong đó hay gặp nhất là: Phần trăm CPU, dung lượng RAM (thường không được ghi), số inode (tổng số file và thư mục), không hỗ trợ cài đặt chứng chỉ SSL riêng, dung lượng đĩa. Kể cả một số dịch vụ có giới hạn băng thông rất rộng (50GB, 100GB hay nhiều hơn) thì đều đưa ra vài hạn chế về nội dung và hoạt động của mã nguồn được sử dụng trong điều khoản sử dụng dịch vụ (TOS – terms of service).
Nhưng không phải không có những dịch vụ miễn phí đủ dùng và ổn định cho người mới bắt đầu. Dịch vụ đó mang tên ServersFree. Dịch vụ này có vẻ như đã bị bỏ quên, nhưng mọi thứ đều hoạt động trơn tru. Chức năng cơ bản hoạt động tốt. Thêm cả cache cùng với một số biện pháp gom và giảm kích cỡ khác, không vấn đề gì. Sử dụng cùng với CloudFlare, cũng không có vấn đề gì nghiêm trọng.
Mọi chuyện trở nên tốt hơn hẳn khi mình tham gia vào một network trên YouTube và bên đó cung cấp hosting miễn phí cho mình, vốn là một dịch vụ trả phí, có giao diện điều khiển xịn (chính là cPanel chuẩn và được cập nhật khá thường xuyên), giới hạn cấu hình được đưa ra rõ ràng. Mình đã có một khoảng thời gian sử dụng ổn định rất lâu tại đó. Mình chỉ bị duy nhất một lần lỗi kéo dài độ hai ngày, có phản hồi tương đối kịp thời từ bên cung cấp. Hồi đầu năm nay nó gần như đã bỏ quên dịch vụ hosting và bị lỗi thiết lập quyền chạy đối với PHP7, nên mình mới đi tìm “bến đỗ” miễn phí mới.
Mình tìm được một “bến đỗ” có đội ngũ chuyên môn khá về hosting, đó là Viewen. Họ tự tay xét duyệt yêu cầu tạo tài khoản mới, có ghi điều khoản sử dụng chi tiết và dễ hiểu, lại cập nhật thường xuyên về tình hình hoạt động của các server họ có trên trang Facebook riêng. Server của riêng họ được đặt ở nhiều nơi. Và có một điều đặc biệt là, họ gọi các server này là các thành phố (city) và những người có tài khoản lưu ở từng server là công dân (citizen) của thành phố tương ứng. Họ luôn quan tâm và có thái độ rất tích cực đối với mọi công dân, cho dù server có vấn đề gì nan giải đi chăng nữa. Mình đã phát triển lại trang web của mình trên server của họ đặt tại Houston. Nó hoạt động tương đối ổn định cho đến trước sự cố mà mình nhắc đến ở đầu bài viết.
Tiếp theo, đó trải nghiệm của mình tại Amazon Web Services.
Không cần phải trình bày dài dòng về dịch vụ AWS. Amazon hoạt động trong lĩnh vực thương mại điện tử từ rất, rất lâu rồi, gần như cùng thời với Google. Hãng đã xây dựng được một hệ thống server rất mạnh. AWS vốn là một giải pháp của chính họ, được công bố rộng rãi để mọi người có thể sử dụng. Amazon lại có một nguồn thu lớn từ AWS.
Tháng 10 năm ngoái, mình được một đồng nghiệp cũ trong Vocaleek giới thiệu làm thử việc cho một công ty khởi nghiệp (startup) nhỏ gần nơi mình ở. Đó là một dịch vụ nha khoa với mô hình tương tự Uber và Grab. Anh ấy cho mình sử dụng chung tài khoản AWS, chỉ dẫn cho mình cách tạo và quản lý server (gọi là instance) trên dịch vụ Elastic Computing Cloud (EC2) thuộc AWS.
Nhân lúc đó, mình tự tìm hiểu cách cài đặt và thiết lập phần mềm chạy trên server. Cái hay của server ảo trên EC2 (và nhiều dịch vụ VPS khác) là, mình được chọn cấu hình và hệ điều hành ngay từ đầu, nên mình giảm được phần lớn thời gian cấu hình hệ điều hành. Một số ảnh đĩa (image) trong danh sách có sẵn đầy đủ bộ phần mềm cần thiết, mình chỉ cần cài đặt tên miền (cùng thư mục riêng cho nó) và mã nguồn website lên, rồi cứ thế là chạy thôi. Bản thân server ảo cũng chỉ là một cái máy tính, nên mọi vấn đề từ cài đặt và lỗi lầm xảy ra với nó, mình hoàn toàn có thể tự giải quyết y như trong hoàn cảnh sử dụng máy tính bình thường. Trừ phi đó là mấy lỗi phần cứng, buộc mình phải tạo server ảo mới.
Mình chỉ có một khúc mắc, ấy là về giới hạn miễn phí (free tier) của AWS. Nó không hề ghi tại trang ngoài về giới hạn băng thông truyền ra ngoài (outbound, upstream, upload) miễn phí hằng tháng cho toàn bộ dịch vụ của AWS là 15GB. Vượt giới hạn này, AWS sẽ tính phí băng thông. Giới hạn này cũng chỉ có tác dụng trong 12 tháng đầu kể từ ngày tạo tài khoản, sau đó vì nó có tính tiền theo từng giờ chạy của từng máy ảo EC2 nên nó không còn tính phí băng thông nữa. (Chi tiết thêm được ghi tại đây.)
AWS còn cung cấp cả một dịch vụ DNS riêng, lại còn hào phóng cấp chứng chỉ SSL miễn phí một năm cho tên miền. Mặc dù vậy mình vẫn thích sử dụng chứng chỉ của Let’s Encrypt vì nó có cung cấp phần mềm tự động yêu cầu cấp lại chứng chỉ, và mình muốn sử dụng một chứng chỉ cho tất cả các subdomain mà mình tạo và sử dụng. Hơn nữa, Let’s Encrypt còn được cập nhật khá thường xuyên theo các chuẩn mới nữa (xem tại đây).
Cho đến giờ, trên EC2, mình đã tự cài đặt được LAMP stack (Linux – Apache – MySQL – PHP), LEMP stack (Linux – NGINX – MySQL – PHP), cài đặt SSL và HTTP/2, thậm chí là thiết lập mấy cơ chế cache trong RAM hay gặp như OPcache, APC và Memcached. Hầu hết các bước cài đặt và tối ưu, mình đều học từ trang hướng dẫn của Amazon và trang Thạch Phạm Blog, sau đó áp dụng linh hoạt cho server riêng chạy website.
Tuy nhiên, chừng đó với mình là chưa đủ. Mình luôn muốn khám phá thêm các phần mềm server khác, cùng với các biện pháp tối ưu cho chúng. Sau khi mình nhận lại dữ liệu từ Viewen, mình đã tạo riêng cho bản thân một tải khoản AWS, tạo máy ảo EC2, sau đó cài đặt lên nó phần mềm OpenLiteSpeed, thiết lập nó và cho nó chạy các trang web của mình. OpenLiteSpeed nhẹ và nhanh, có trang thiết lập riêng qua giao diện web, nhưng việc thiết lập nó không hề đơn giản. Mình sẽ kể chi tiết hơn ở một bài viết khác.
Hiện tại blog này cùng với các trang web cho hai dự án riêng của mình đang được chạy trên một instance EC2 đặt tại Singapore. Instance này sử dụng OpenLiteSpeed kèm cache và bộ dịch PHP riêng, cùng với DBMS (hệ quản trị cơ sở dữ liệu) là MariaDB (rẽ nhánh từ MySQL).
Vô danh
28 Th2 2018Được bảo trợ thì cứ dùng thôi bạn, AWS thì bá rồi nhưng nếu để duy trì cá nhân thì chi phí rất là cao đó bạn. Cảnh báo cho bạn biết để cuối tháng không phải ngạc nhiên nhìn thẻ Visa bị trừ 1 khối tiền cho AWS 😀
LQ2'
28 Th2 2018Mình đã lường trước được hạn chế rằng băng thông truyền ra ngoài có thể sử dụng miễn phí mỗi tháng là 15GB. Nên hiện tại mình đang sử dụng thêm CDN của NetDepot, miễn phí 100GB băng thông mỗi tháng. Ngoài ra mình luôn cố gắng chỉ sử dụng instance nhỏ nhẹ nhất có thể.
Mình đang có dự tính chuyển toàn bộ các trang web riêng của mình thành dạng tĩnh để có thể chạy qua dịch vụ Netlify trong dài hạn, nhằm phòng tránh tốt hơn các cuộc tấn công có thể có trong tương lai.
Vô danh
28 Th2 2018Netlify ngon lắm, ko biết bạn định convert WP qua đó thế nào chứ mình đang test mấy cái static blog thì bá cháy bọ chét mà nó có limit số file đấy tầm 10k hay 100k file gì đó mình quên rồi 😀
LQ2'
1 Th3 2018Trước mắt mình sẽ sử dụng plugin để tạo trang tĩnh, ví dụ như plugin này chẳng hạn. Còn về lâu dài, mình sẽ sử dụng một “trình sinh trang tĩnh” (static site generator) và viết lại giao diện tương ứng.