Thứ hai, 23/09/2013 | 00:00 GMT+7

Cách biên dịch Nginx từ Nguồn trên VPS CentOS 6.4 x64

nginx được phát âm là “engine x” là một server Reverse Proxy và HTTP, cũng như một server proxy thư.


nginx là một web server nguồn mở sử dụng cơ chế epoll để phục vụ các client chứ không phải Apache sử dụng mô hình dựa trên stream ủy quyền các yêu cầu cho một version trong group stream . nginx đang được sử dụng nhiều hơn trên Apache vì tốc độ của nó. nginx chiếm hơn 13% thị phần và không ngừng tăng lên.

Tại sao phải biên dịch từ nguồn

Biên dịch từ mã nguồn hữu ích khi:

  1. Nâng cấp lên version mới nhất ngay sau khi phát hành.
  2. Sửa các lỗ hổng bảo mật
  3. Sửa các lỗi đã biết đang ảnh hưởng đến dịch vụ của bạn
  4. Sửa đổi các mặc định như tên server
  5. Áp dụng các bản vá có sửa các lỗi đã biết
  6. Kho phần mềm không được nâng cấp với version mới nhất do phân cấp phụ thuộc

Nó đau đớn vì:

  1. Bạn cần cập nhật các version phần mềm
  2. Phần mềm server của bạn có thể phụ thuộc vào các version cũ hơn trong cây phụ thuộc

Mô-đun và Mô-đun bên thứ 3

nginx có nhiều mô-đun bổ sung các tính năng trên VPS hiện có. Một số mô-đun của bên thứ 3 nổi tiếng là:

  • SPDY đã có trong nginx 1.5.0 (trước đó đã được cung cấp dưới dạng bản vá)
  • google pagespeed ( nguồn ) tăng tốc trang web và giảm thời gian tải trang bằng cách tự động áp dụng các phương pháp hay nhất về hiệu suất web cho các trang và nội dung liên quan (CSS, JavaScript, hình ảnh) mà không yêu cầu bạn sửa đổi nội dung hoặc quy trình làm việc hiện có của bạn
  • ModSecurity là một firewall ứng dụng web open-souce để giảm các cuộc tấn công đã biết vào server ứng dụng. * TCP Proxy cho phép nginx proxy thông qua server tcp thay vì chế độ socket mặc định.

Cài đặt VPS của bạn


Tạo một VPS mới hoặc chọn một VPS hiện có

Tạo một VPS mới với domain của bạn. Ta sẽ sử dụng 'example.com' làm domain hoặc bạn có thể sử dụng IP server thay vì tên server .

Cài đặt yêu cầu để biên dịch từ nguồn


Đăng nhập an toàn vào VPS của bạn

Bạn có thể đăng nhập vào VPS bằng password cho server lưu trữ của bạn .

ssh root@example.com 

Cài đặt phụ thuộc cho nginx

Ta có một số yêu cầu cần được cài đặt để biên dịch, bao gồm các thư viện phát triển cùng với các trình biên dịch mã nguồn.

yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel 

Đầu tiên ta hãy tạo một folder để lưu trữ mã nguồn của ta :

mkdir -p src && cd src 

Tổng hợp từ Nguồn


Download mã nguồn

Cho phép lấy số version nginx hiện tại từ http://nginx.org/en/download.html

Chạy các lệnh sau để download nguồn.

nginxVersion="1.5.5" wget http://nginx.org/download/nginx-$nginxVersion.tar.gz tar -xzf nginx-$nginxVersion.tar.gz  ln -sf nginx-$nginxVersion nginx 

Chuẩn bị nguồn nginx

Trước tiên, ta muốn chuẩn bị nginx với các tùy chọn cơ bản cần thiết.

Để có danh sách đầy đủ các tùy chọn, bạn có thể xem ./configure --help

Tùy chọn cho tên đường dẫn file cơ bản

Các tùy chọn này là các biến cơ bản mà ta overrides để sử dụng đường dẫn hệ thống mặc định tại /etc/ đảm bảo nó hoạt động simliar khi được cài đặt qua rpm . Tùy chọn usergroup được sử dụng để chạy các quy trình nginx worker ở chế độ không quyền .

--user --group --prefix --sbin-path --conf-path --pid-path --lock-path --error-log-path --http-log-path 

Sự lựa chọn khác

  • --with-http_gzip_static_module tùy chọn cho phép nginx sử dụng gzip (Trước khi phân phối file từ đĩa đến client hỗ trợ gzip, module này sẽ tìm kiếm file được nén trước ở cùng một vị trí có kết thúc bằng “.gz”. Mục đích là để tránh nén cùng một file mỗi khi nó được yêu cầu.). [ được khuyến khích để giảm kích thước thông tin được gửi]

  • Tùy chọn --with-http_stub_status_module cho phép các plugin khác trên nginx cho phép ta nhận trạng thái (Mô-đun này cung cấp khả năng nhận một số trạng thái từ nginx.). [ được khuyến khích để nhận số liệu thống kê]

  • --with-http_ssl_module - bắt buộc nếu bạn muốn chạy server HTTPS. Xem Cách tạo certificate SSL trên nginx cho CentOS 6

  • Tùy chọn --with-pcre cho phép đối sánh các tuyến đường thông qua Đối sánh Cụm từ Thông dụng khi xác định các tuyến đường. [ được khuyến khích , bạn sẽ thấy việc sử dụng này nhiều hơn khi bạn bắt đầu thêm và kết hợp các tuyến đường]

  • --with-file-aio - bật I / O không đồng bộ, tốt hơn tùy chọn gửi file mặc định ( được khuyến khích nếu bạn đang cho phép user download file tĩnh)

  • --with-http_realip_module được sử dụng để lấy IP của client khi đứng sau bộ cân bằng tải. Điều này rất hữu ích khi cung cấp nội dung đằng sau các dịch vụ giống như CloudFlare .

  • --without-http_scgi_module - Tắt module SCGI (thường được sử dụng khi chạy tập lệnh CGI)

  • --without-http_uwsgi_module - Tắt module UWSGI (thường được sử dụng khi chạy các tập lệnh CGI)

  • --without-http_fastcgi_module - Tắt module FastCGI (thường được sử dụng khi chạy các tập lệnh CGI)

Tùy chọn cấu hình của ta

cd nginx  ./configure \ --user=nginx                          \ --group=nginx                         \ --prefix=/etc/nginx                   \ --sbin-path=/usr/sbin/nginx           \ --conf-path=/etc/nginx/nginx.conf     \ --pid-path=/var/run/nginx.pid         \ --lock-path=/var/run/nginx.lock       \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module        \ --with-http_stub_status_module        \ --with-http_ssl_module                \ --with-pcre                           \ --with-file-aio                       \ --with-http_realip_module             \ --without-http_scgi_module            \ --without-http_uwsgi_module           \ --without-http_fastcgi_module 

Biên dịch nguồn nginx

Khi ta có thể cấu hình nguồn thậm chí kiểm tra các yêu cầu bổ sung như trình biên dịch (gcc, g ++) mà ta đã cài đặt trong bước pre-requisites :

 make  make install 

Chạy VPS

  1. Thêm nginx user vào hệ thống. Đây là lệnh một lần:

    useradd -r nginx 
  2. Ta cần cài đặt file /etc/init.d/nginx để chạy khi hệ thống khởi động:

    #!/bin/sh # # nginx - this script starts and stops the nginx daemin # # chkconfig:   - 85 15 # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ #               proxy and IMAP/POP3 proxy server # processname: nginx # config:      /etc/nginx/nginx.conf # pidfile:     /var/run/nginx.pid # user:        nginx  # Source function library. . /etc/rc.d/init.d/functions  # Source networking configuration. . /etc/sysconfig/network  # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0  nginx="/usr/sbin/nginx" prog=$(basename $nginx)  NGINX_CONF_FILE="/etc/nginx/nginx.conf"  lockfile=/var/run/nginx.lock  start() {     [ -x $nginx ] || exit 5     [ -f $NGINX_CONF_FILE ] || exit 6     echo -n $"Starting $prog: "     daemon $nginx -c $NGINX_CONF_FILE     retval=$?     echo     [ $retval -eq 0 ] && touch $lockfile     return $retval }  stop() {     echo -n $"Stopping $prog: "     killproc $prog -QUIT     retval=$?     echo     [ $retval -eq 0 ] && rm -f $lockfile     return $retval }  restart() {     configtest || return $?     stop     start }  reload() {     configtest || return $?     echo -n $"Reloading $prog: "     killproc $nginx -HUP     RETVAL=$?     echo }  force_reload() {     restart }  configtest() {   $nginx -t -c $NGINX_CONF_FILE }  rh_status() {     status $prog }  rh_status_q() {     rh_status >/dev/null 2>&1 }  case "$1" in     start)         rh_status_q && exit 0         $1         ;;     stop)         rh_status_q || exit 0         $1         ;;     restart|configtest)         $1         ;;     reload)         rh_status_q || exit 7         $1         ;;     force-reload)         force_reload         ;;     status)         rh_status         ;;     condrestart|try-restart)         rh_status_q || exit 0             ;;     *)         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"         exit 2 esac 

    Theo tùy chọn, bạn có thể lấy nguồn từ:

    wget -O /etc/init.d/nginx https://gist.github.com/sairam/5892520/raw/b8195a71e944d46271c8a49f2717f70bcd04bf1a/etc-init.d-nginx 

    Tệp này phải được đặt ở chế độ thực thi để ta có thể sử dụng nó qua 'service nginx <command>':

    chmod +x /etc/init.d/nginx 
  3. Đặt dịch vụ bắt đầu khi nào hệ thống khởi động:

    chkconfig --add nginx chkconfig --level 345 nginx on 
  4. Cấu hình types_hash_bucket_size để cài đặt các types_hash_bucket_sizeserver_names_hash_bucket_size cần được tăng lên.

    http {     include       mime.types;     default_type  application/octet-stream;     # add the below 2 lines under http around line 20     types_hash_bucket_size 64;     server_names_hash_bucket_size 128; 
  5. Khởi động server . Thao tác này sẽ khởi động VPS trên cổng 80.

    service nginx start 

Cài đặt xong

Truy cập example.com hoặc địa chỉ IP của bạn trong trình duyệt. Bạn sẽ thấy:

Welcome to nginx! 

Xin chúc mừng! Server nginx hoàn toàn mới của bạn đã hoạt động.

Bảo trì

Khởi động lại server nginx khi binary nginx được sửa đổi:
khởi động lại dịch vụ nginx

Reload nginx khi nginx.conf được sửa đổi:
reload dịch vụ nginx

Cấu hình web server nginx

Nâng cấp lên version mới nhất

Hãy tải version nginx hiện tại từ http://nginx.org/en/download.html

Chạy các lệnh sau để download nguồn.

ssh root@example.com cd ~/src/ nginxVersion="1.5.5" # set the value here from nginx website wget http://nginx.org/download/nginx-$nginxVersion.tar.gz tar -xzf nginx-$nginxVersion.tar.gz rm nginx # removes the soft link ln -sf nginx-$nginxVersion nginx  cd nginx  ./configure \ --user=nginx                          \ --group=nginx                         \ --prefix=/etc/nginx                   \ --sbin-path=/usr/sbin/nginx           \ --conf-path=/etc/nginx/nginx.conf     \ --pid-path=/var/run/nginx.pid         \ --lock-path=/var/run/nginx.lock       \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module        \ --with-http_stub_status_module        \ --with-http_ssl_module                \ --with-pcre                           \ --with-file-aio                       \ --with-http_realip_module             \ --without-http_scgi_module            \ --without-http_uwsgi_module           \ --without-http_fastcgi_module  make make install  service nginx restart 

Tài nguyên khác trên nginx

Tài nguyên về nginx trên DigitalOcean


Tags:

Các tin liên quan

Cách biên dịch Nginx từ Nguồn trên VPS CentOS 6.4 x64
2013-09-23
Cách lưu trữ nhiều ứng dụng Node.js trên một VPS duy nhất với nginx, forever và crontab
2013-09-04
Cách tối ưu hóa Nginx với PHP Pools trên VPS Ubuntu 13.04
2013-08-21
Cách cấu hình ghi log và xoay vòng log trong Nginx trên VPS Ubuntu
2013-08-20
Cách cài đặt và cấu hình Django với Postgres, Nginx và Gunicorn
2013-08-14
Cách phát trực tuyến video với Nginx và JWPlayer trên CentOS 6
2013-05-31
Cách thiết lập xác thực HTTP với Nginx trên Ubuntu 12.10
2013-04-30
Cách cài đặt (LEMP) nginx, MySQL, PHP stack trên Arch Linux
2012-11-02
Cách thiết lập cân bằng tải Nginx
2012-08-27
Cách cấu hình Nginx làm Reverse Proxy cho Apache
2012-07-20