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:
- Nâng cấp lên version mới nhất ngay sau khi phát hành.
- Sửa các lỗ hổng bảo mật
- Sửa các lỗi đã biết đang ảnh hưởng đến dịch vụ của bạn
- Sửa đổi các mặc định như tên server
- Áp dụng các bản vá có sửa các lỗi đã biết
- 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ì:
- Bạn cần cập nhật các version phần mềm
- 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 user
và group
đượ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ụnggzip
(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 6Tù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
Thêm nginx user vào hệ thống. Đây là lệnh một lần:
useradd -r nginx
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
Đặt dịch vụ bắt đầu khi nào hệ thống khởi động:
chkconfig --add nginx chkconfig --level 345 nginx on
Cấu hình
types_hash_bucket_size
để cài đặt cáctypes_hash_bucket_size
vàserver_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;
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
Các tin liên quan
Cách biên dịch Nginx từ Nguồn trên VPS CentOS 6.4 x642013-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