|
||||||||
|
||||||||
|
|
Công Cụ | Xếp Bài |
06-05-2013, 04:22 PM | #1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Guest
Trả Lời: n/a
|
Hướng dẫn cài đặt Nginx + Apache + memcache tăng tốc VPS
Hướng dẫn cài đặt Nginx + Apache + memcache tăng tốc VPS Bài này mình sử dụng nhiều nguồn khác nhau và đã cài đặt cho daivietpda và thấy hiểu quả rất tốt Nginx là gì ? Nginx là một máy chủ web như apache nhưng chạy rất nhẹ và không tốn tài nguyên như apache Igor Sysoev phát triển nginx từ cách đây hơn 9 năm. Vào tháng 10/2004, phiên bản 0.1.0 được phát hành rộng rãi theo giấy phép BSD. Công dụng của nginx ngoài máy chủ web, còn có thể làm proxy nghịch cho Web và làm proxy email (SMTP/POP3/IMAP). Theo thống kê của Netcraft, trong số 1 triệu website lớn nhất thế giới, có 6,52% sử dụng nginx. Tại Nga, quê hương của nginx, có đến 46,9% sử dụng máy chủ này. Nginx chỉ đứng sau Apache và IIS (của Microsoft). Cho đến thời điểm này, công việc phát triển nginx chủ yếu vẫn do một mình Igor Sysoev đảm nhiệm. Cùng với việc phát hành phiên bản 1.0.0, Igor cũng công bố kho lưu trữ mã nguồn nginx, bao gồm chi tiết từng thay đổi trong mã nguồn của phần mềm này trong suốt 9 năm qua. Tại sao phải cài Nginx + Apache ? Chính vì nginx cho hiệu suốt làm việc trên các file tĩnh tốt hơn , giảm tải cho server mà chúng ta mới phải dùng , nginx sẽ làm proxy cho apache vì daivietpda chạy forum vbb cho nên không thể dùng nginx hoàn toàn được , chúng ta sẽ cáu hình cho apache chạy các file .php còn nginx sẽ đảm nhiệm các file tĩnh như .css , .zip .các file ảnh và file khác Nói đến đây thôi nhỉ đây là bài viết mình lấy nguồn từ cachcaidat.com Sử dụng Nginx và memcached để tăng tốc Apache trên Debian Lenny Trong bài viết này, tôi giới thiệu cách thức cài đặt Nginx kết hợp với memcached trên Debian “lenny” 5.0 nhằm tăng hiệu năng phục vụ của web server mà ở đây là Apache 2.2. Bài viết này là tổng hợp từ nhiều nguồn khác nhau trên Internet và là bản ghi chép của tôi trong quá trình nâng cấp một web server thực tế có lượng truy cập lớn. 1. Giới thiệu Gần đây, web server mà tôi quản lí (phi vụ lợi) có lượng truy cập tăng đột biến mà không phải vì bị tấn công. Tải (load) của server những lúc cao điểm thường lên ~40 trong khi chỉ có 8 cores phục vụ với 8GB RAM. Công việc tối ưu bắt đầu. Chúng tôi chỉ có một server duy nhất nên web server, db server được đặt chung với nhau. Điều này là một bất lợi lớn. Nhưng không sao, chúng ta phải chấp nhận vì có một server tốt như thế để hoạt động phi vụ lợi là rất tốt rồi. Ban đầu, tôi tưởng rằng vấn đề nằm ở DB server (MySQL) vì theo dõi thấy có rất nhiều lệnh thực hiện rất lâu, đặc biệt là các lệnh thực hiện phép nối bảng lớn. Chúng tôi đã tiến hành tối ưu MySQL rồi đặt cron để tối ưu toàn bộ CSDL 2 ngày một lần. Vấn đề có vẻ như được giải quyết khi server chạy liên tục 2 tháng liền mà không gặp bất cứ trục trặc gì. Tuy nhiên, gần đây thì tình trạng tải tăng cao lại tiếp tục diễn ra, đặc biệt là quãng 20-24h (giờ Việt Nam). Tôi đã xem xét lại chi tiết và phát hiện ra rằng, những lúc tải tăng cao thì DB server không hoạt động mấy, rất ít câu lệnh được thực hiện (lúc tải < 20). Tuy nhiên khi tải ~30-40 thì một số câu lệnh SQL đột nhiên thực hiện rất lâu, điều này có thể giải thích là các tiến trình của web server đã chiếm hết tài nguyên rồi thì làm sao db server chạy nhanh được nữa. Như vậy thì ta phải tối ưu web server thôi. Sau một hồi hỏi anh Google và chị Bing, tôi quyết định sẽ sử dụng Nginx để làm proxy ngược (reverse proxy) cho Apache và kết hợp sử dụng memcached để lưu những dữ liệu tĩnh (static file) vào trong bộ nhớ. Theo định nghĩa trên Wikipedia thì:
Trên server của tôi có chứa nhiều website (shared server) và để chống hack local thì chúng tôi sử dụng ACL kết hợp mpm-itk để tăng cường bảo mật. Khi sử dụng mpm-itk thì mỗi website sẽ được chạy dưới một uid và gid riêng. Điều này không tương thích với Nginx vì nó chỉ chạy được với một uid và gid duy nhất., do vậy không có đủ quyền để truy cập trực tiếp vào thư mục của các website Do vậy chúng tôi phải sử dụng giải pháp memcached để giúp Nginx có thể phục vụ trực tiếp client với các file tĩnh. Các bạn cũng nên lưu ý là khi cài đặt memcached rồi thì có rất nhiều phần mềm mã nguồn mở sử dụng được cái này để tăng hiệu năng như Drupal, vBulletin, phpBB,… và không kể hết… 2. Cài đặt Trong bài viết này, tôi chỉ hướng dẫn cài đặt trên Debian “lenny” 5.0. Cài đặt trên Ubuntu “chắc” cũng tương tự, nếu có thì chỉ là thay đổi chút ít. Ở đây tôi không hướng dẫn cài ACL và mpm-itk mà sẽ giới thiệu trong một dịp khác. Trước hết, chúng ta phải cài đặt Apache, PHP, Nginx và memcached.
Bây giờ chúng ta sẽ phải sửa file cấu hình của apache2 để cho nó chạy trên cổng 8080. Mở file /etc/apache2/ports.conf, thay 80 bằng 8080 ở hai dòng sau:
Trước hết, ta tạo file cấu hình cho module proxy của Nginx. Các thông tin này lấy từ web site của Nginx.
Kích hoạt domain trên:
Khởi động lại Nginx:
Trong file cấu hình ở trên, chúng ta đã cấu hình để những yêu cầu tới file có đuôi là .php sẽ được chuyển cho Apache phục vụ. Các file tĩnh (với đuôi được liệt kê ở trước đó) thì được tìm kiếm trong memcached, nếu memcached không có thì sẽ chuyển cho Apache phục vụ (lỗi 404 chuyển qua /fallback). Việc tìm kiếm này sử dụng key là URL đầy đủ của file tương ứng, bao gồm scheme (http, https), host (blog.cuongnv.com), uri đầy đủ (uri và query string). Tuy nhiên, cần phải đặc biệt chú ý, Nginx không hề giúp ta cache các file vào trong memcached một cách tự động mà ta phải tự tay làm việc đó. Trong hệ thống của tôi thì tôi sử dụng một script để cache tất cả các file tĩnh cần thiết vào trong bộ nhớ. Việc này được thực hiện định kì một lần mỗi ngày. Script này tôi tham khảo từ blog của Levent Serinol viết bằng PHP. Hiện tại tôi đang viết một script khác có thể duyệt qua tất cả các virtual host hiện tại và cache cho toàn bộ các host đó với các file có đuôi và độ lớn nhỏ hơn một ngưỡng cho trước. Tôi sẽ public script này trong một vài ngày tới. Cài đặt php5-cli để chạy được các file php trên dòng lệnh:
Ngoài ra các bạn có thể tham khảo thêm bài viết này của người nga [h=1]apache 2 + nginx + php 5 + MySQL + memcached + eaccelerator + sphinx trên Ubuntu[/h] http://rubuntu.ru/blog/server/435/n...l-memcached-eaccelerator-sphinx-v-ubuntu.html |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|