Tại đây chứa những trải nghiệm của tác giả trong quá trình sử dụng và cấu hình hosting chia sẻ và server riêng.

Cài đặt và kết nối Redis với LiteSpeed PHP

Vậy là chúng ta đang trong tuần làm việc đầu tiên sau Tết rồi. Mấy ngày nghỉ Tết vừa qua mình đã tranh thủ làm một bài chúc mừng năm mới ngắn ngắn, mong cho việc sáng tác trở thành niềm đam mê, có nhiều thuận lợi và gặt hái được nhiều hơn trong năm mới Mậu Tuất. Mình không có dự định làm video cho nó, tuy nhiên có thể sau này các mẩu đoạn nhạc trong đấy sẽ được sử dụng trong các sáng tác tiếp theo của mình.

Như mình đã từng viết ở đầu bài viết “Cài đặt một web server tối ưu về tốc độ”, mình đã cho các bạn biết rằng mình đã cài đặt Redis để ghi đệm cho cơ sở dữ liệu mà các trang web của mình đang sử dụng.

Trong bài viết đầu tiên năm Mậu Tuất trên Noisy Stream, mình sẽ giới thiệu và hướng dẫn cách cài đặt Redis và extension (phần mở rộng) kết nối Redis cho LiteSpeed PHP (gọi tắt là LSPHP, tức là bộ dịch PHP được chạy bởi LiteSpeed và OpenLiteSpeed) mà không để lại chút rác rưởi nào.

Tiếp tục đọc

Bảo vệ và giảm tải cho server

Bài viết tổng quan của mình về tối ưu tốc độ cho server đã nhận được khá nhiều sự quan tâm từ mọi người. Việc đó đã có nhiều công đoạn, tuy nhiên trong quá trình vận hành một website, chúng ta sẽ gặp một số tình huống khiến cho server phải vận động nhiều hơn, hoặc hoạt động một cách bất thường. Ví dụ:

  • Có nhiều client tương tác cùng lúc với server.
    • Có những client chỉ giới hạn tương tác với các chức năng được website đưa ra, cùng với những loại thông tin đầu vào được chức năng đó mong đợi để xử lý. Đó là những yêu cầu bình thường. Đối với các yêu cầu như vậy, ban đầu cần tối ưu lại server (và cả mã nguồn).
    • Nhưng cũng không thiếu những client gửi những yêu cầu chứa thông tin mà chức năng đó của website không mong đợi được nhận, đó là những yêu cầu bất thường.
  • Có một client bị thâu tóm và điều khiển bởi một người hoặc tổ chức nào đó, gửi đến server một loại yêu cầu bất thường khác. Nó có thể không chứa thông tin gì đặc biệt, nhưng được gửi liên tục với tốc độ cao, khiến server nằm trong trạng thái bận trong một thời gian dài, không thể đáp ứng yêu cầu từ các client khác. Loại yêu cầu đó là tấn công từ chối dịch vụ (denial of service – DoS). Mở rộng hơn là tấn công từ chối dịch vụ phân tán (distributed denial of service – DDoS), được thực hiện bởi nhiều client khác nhau.
  • Có nhiều client đến từ nhiều quốc gia khác nhau, có vẻ quan tâm đến nội dung của website. Điều này có thể xảy ra nếu website có nhiều thứ tiếng, hoặc khi một trang được chia sẻ tại một cộng đồng sử dụng ngôn ngữ khác.

Trong những hoàn cảnh như vậy, chúng ta cần đến những giải pháp bảo vệ cho server, góp phần làm cho server bớt phải tải nặng đi. Ngoài ra mình cũng giới thiệu sâu hơn về một số cách khác cũng trực tiếp giảm tải nhưng lại không bảo vệ cho server.

Tiếp tục đọc

Cài đặt một web server tối ưu về tốc độ

Thời gian qua mình đã viết một số bài căn bản về phần mềm server OpenLiteSpeed. Tất cả chỗ đó mới chỉ là phần đầu tiên của quá trình mình di dời từ dịch vụ hosting miễn phí sang server riêng mà thôi.

Nhưng sau khi trải qua được phần đầu tiên ấy, mọi chuyện trở nên rất đơn giản với mình: Cài đặt MariaDB, di chuyển WordPress cùng với database (cơ sở dữ liệu), thiết lập lại các plugin cache và bảo vệ cho WordPress. Thế là xong, các bạn đã và đang chứng kiến blog Noisy Stream này được phục vụ bởi OpenLiteSpeed.

Gần đây mình bổ sung thêm hai thứ: Một là Redis làm cache cho database, hai là CDN làm chuyển bớt việc phục vụ nội dung từ server ra ngoài. Và mình cũng đã sử dụng công cụ MySQLTuner với khả năng đưa ra các gợi ý tinh chỉnh MySQL/MariaDB.

Toàn bộ các việc trên là một thử nghiệm rất hay trong quá trình cài đặt một web server chạy nhanh.

Tiếp tục đọc

SSL và bảo vệ thư mục trong OpenLiteSpeed

Sắp cuối năm rồi, mình sẽ cố gắng hoàn thành nốt hành trình khám phá của mình về OpenLiteSpeed. Bài này sẽ hướng dẫn cách cài đặt SSL trên OpenLiteSpeed một cách thật chi tiết, đi kèm với một số khuyến nghị để nâng cao chất lượng của kết nối SSL giữa máy của người truy cập và website.

Ngoài ra, bài viết này cũng chỉ cho các bạn cách bảo vệ một thư mục hoặc file bất kỳ qua việc sử dụng realm trong OpenLiteSpeed và áp dụng nó vào trong một context (phạm vi) nhất định. Việc bảo vệ này sẽ có ích lớn hơn nếu người dùng thực hiện kết nối SSL đến server, nên mình viết chung về SSL và realm vào chung một bài lớn.

Tiếp tục đọc

Rewrite trong OpenLiteSpeed và chuyển đổi từ .htaccess

Thời gian qua mình đã thực hiện một số cập nhật về hiệu năng cho server và bắt đầu sử dụng CDN để đối phó với hiện tượng đứt của các tuyến cáp quốc tế AAG và SMW-3. Đến thời điểm này, trang web đã phục vụ nội dung được nhanh chóng hơn do tất cả hình ảnh đều được phục vụ bởi CDN. Mình sẽ có các bài trải nghiệm chi tiết sau. Còn bây giờ, mình sẽ tiếp nối series về OpenLiteSpeed, với vấn đề thay đổi thói quen sử dụng file .htaccess (một file thiết lập rất quen thuộc của Apache), sang việc điều chỉnh một cách trực tiếp các thiết lập trong virtual host, điển hình là các lệnh rewrite và một số thiết lập hay dùng khác.

Tiếp tục đọc

Giải quyết vấn đề FTP sau khi cài đặt OpenLiteSpeed

Đây là bài thứ ba mình viết về phần mềm này. Hai bài trước đó mình đã chỉ cách cài đặt OpenLiteSpeed cùng với phiên bản PHP riêng, rồi sau đó là cài đặt virtual host và listener.

Sau khi thực hiện theo hai bài hướng dẫn đó, mọi người đã có thể đăng mã nguồn lên và chạy được rồi. Nhưng đối với một số mã nguồn phức tạp như WordPress chẳng hạn (có giao diện upload file hay giao diện cài đặt bổ sung từ bên ngoài), thì có một số lỗi liên quan đến phân quyền có thể phát sinh, khiến quá trình upload, cài đặt, cập nhật, v.v… qua giao diện của mã nguồn đó bị dừng lại. Ngoài ra, việc điều chỉnh lại user và group cho thư mục document root là nobodynogroup sẽ khiến cho việc upload file qua giao thức FTP trở nên khó khăn nếu không sử dụng quyền của user root (hay chạy lệnh kèm sudo).

Vì thế mình viết bài này để giúp các bạn giải quyết toàn bộ các vấn đề đó mà không cần phải cài đặt thêm File Manager chạy trên nền web.

Tiếp tục đọc

Listener và virtual host trong OpenLiteSpeed

Thời gian qua, mình đã dành nhiều thời gian thử nghiệm phần mềm OpenLiteSpeed trên server. Có một số thiết lập dễ dàng ăn ngay, cũng có một số thiết lập cần thêm các bước cài đặt bổ sung từ giao diện dòng lệnh. Mình cũng đã thông báo một vài lỗi cho LiteSpeed Technologies (công ty đứng đằng sau OpenLiteSpeed) thông qua trang GitHub họ tạo ra cho OpenLiteSpeed. Đến hôm nay, khi có một lỗi liên quan đến cache được họ xác nhận và sửa chữa thì mình quyết định dừng thử nghiệm, và quay lại tiếp tục viết hướng dẫn cài đặt và thiết lập OpenLiteSpeed.

Bài này giả sử rằng các bạn đã thực hiện cài đặt OpenLiteSpeed bản mới nhất trên máy ảo chạy hệ điều hành Ubuntu như mình đã viết ở bài trước. Nếu các bạn đã thực hiện cài đặt theo bài đó thì các bạn sẽ thực hiện thiết lập theo bài này thuận lợi hơn nhiều. Nếu không thì các bạn hãy tự điều chỉnh một cách tương ứng với môi trường máy ảo mà các bạn đang sử dụng.

Bài này hướng dẫn tạo và thiết lập virtual host trên OpenLiteSpeed. Có điều, tại sao tiêu đề bài viết này lại có cả listener (cổng nghe)? Lí do là…

Thiết lập virtual host trên Apache và NGINX có kèm theo việc chỉ định luôn cổng cho virtual host để nghe từ bên ngoài, còn OpenLiteSpeed thì tách riêng thiết lập cổng. Việc này tiện cho việc sử dụng một cổng cho nhiều virtual host và ngược lại. Thiết lập cổng nghe (listener) trên OpenLiteSpeed còn có tuỳ chọn riêng hạn chế truy cập. Hãy ấn nút đọc tiếp bài này để hiểu kĩ hơn nhé.

Tiếp tục đọc

Cài đặt OpenLiteSpeed tại Amazon EC2

Xin chào! Hôm nay mình sẽ bắt đầu kể về quá trình di dời trang web của mình sang dịch vụ Elastic Computing Cloud (EC2) thuộc Amazon Web Services.

Mình xác định sẽ sử dụng một phần mềm server nhẹ và nhanh nhất có thể tại đó. Trước đây mình từng cài đặt Apache và NGINX, mình thấy được một số ưu điểm và nhược điểm của chúng:

  • Apache: Rất linh hoạt trong việc sử dụng module, thiết lập quyền truy cập và viết lại (rewrite) đường dẫn theo từng cấp thư mục. Đối với những người đã quen với hosting chia sẻ (shared hosting), file .htaccess là một thứ vô cùng quen thuộc và đó là một file thiết lập của Apache áp dụng ở thư mục trong website. Tuy nhiên, Apache phục vụ nội dung tĩnh chậm. Có thể giải quyết nhược điểm này bằng cách tắt (ngừng kích hoạt) bớt module không sử dụng đến, nhưng cách đó không triệt để.
  • NGINX: Chỉ ở các bản mới đây (từ 1.9.11 trở đi), NGINX mới có thể kích hoạt module một cách linh hoạt giống Apache. Nó tỏ ra kém linh hoạt hơn Apache trong việc thiết lập quyền truy cập và viết lại đường dẫn, tất cả thiết lập đó đều phải được liên kết với file nginx.conf (cụ thể là liên kết qua dòng include), và chỉ được áp dụng sau khi khởi động lại NGINX. Bù lại, NGINX phục vụ nội dung tĩnh cực kì nhanh.
  • Cả hai đều có module đệm (cache) riêng, nhưng chưa có ai sử dụng các module đó cho việc lưu trữ tạm thời các kết quả xử lí của PHP hay các ngôn ngữ khác sử dụng trình thông dịch (Python, Ruby, JavaScript,…). May mắn là đối với PHP, người ta đã cung cấp một số gói mở rộng (extension) để ghi đệm các kết quả của nó như APC, OPcache, Memcached,… Hoặc, có một phần mềm cache độc lập tên là Varnish, cực kì tốt cho các server phục vụ nhiều nội dung thay đổi thường xuyên.

Nhưng trước mắt, mình mong muốn tìm được một phần mềm server chứa sẵn tất cả những ưu điểm của cả Apache và NGINX, hơn nữa lại có module cache hoạt động nhanh và linh hoạt như Varnish. Có một phần mềm server thực hiện được, đó là LiteSpeed. Nó được sử dụng ở một số dịch vụ hosting thay cho Apache. Nó có một phiên bản mã nguồn mở tên là OpenLiteSpeed, và mình mong đợi rất nhiều vào nó với khả năng mở rộng rất linh hoạt.

Tiếp tục đọc

Cách mở và đóng cổng (port) trên Amazon EC2

Nếu đợi mãi mà không kết nối được đến máy ảo EC2 (Elastic Computing Cloud), trước hết hãy kiểm tra cổng (port) và mở cổng! Sở dĩ vậy là vì…

Ngay từ khi tạo máy ảo (instance) EC2 mới, Amazon Web Services (AWS) đã áp dụng một thứ gọi là security group (“nhóm an ninh”) lên máy ảo này. Ban đầu, máy ảo EC2 hoàn toàn không được mở cổng kết nối nào với môi trường Internet bên ngoài. Security group được áp dụng lên nó chứa các luật mở cổng. Trong quá trình tạo máy ảo, AWS cho phép bạn xem và thực hiện các thay đổi cần thiết cho security group, nhưng có vẻ bạn đã bỏ qua việc đó mất rồi!

Đừng lo, bạn có thể thay đổi lại security group tương ứng với instance bạn đã tạo, để mở cổng trên máy ảo, cho phép bạn kết nối đến máy ảo đó, qua cổng bạn cần. Nếu ban đầu bạn không có thay đổi gì, thì security group được áp dụng cho instance EC2 bạn cần kết nối đã chứa sẵn luật mở cổng SSH (22) cho bất cứ địa chỉ IPv4 nào kết nối đến. Ví dụ, bây giờ bạn mới cài xong một phần mềm server, nó có trang quản trị riêng truy cập được bằng trình duyệt web qua cổng 8080, và bạn loay hoay không tìm được cách vào, trong khi phần mềm tường lửa thì bạn đã cài đâu…

Tiếp tục đọc

Dịch vụ hosting miễn phí, và trải nghiệm mới với server riêng!

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í.

Tiếp tục đọc