天天看點

Nginx的使用

一、Nginx簡介

1、Nginx("engine x")是俄羅斯人編寫的一款高性能的HTTP和反向代理伺服器。Nginx能夠

選擇高效的epoll(Linux 2.6核心)、kqueue(FreeBSD)、eventport(Solaris 10)作為網絡

I/O模型,在高連接配接并發的情況下,Nginx是Apache伺服器不錯的替代品,它能支援高達50 000

個并發連接配接數的響應,而記憶體、CPU等系統資源消耗卻非常低,運作非常穩定。

國内,已經有新浪、網易、Discuz、六間房等著名公司使用Nginx作為Web伺服器或反向代理伺服器。

2、為什麼選擇Nginx

1)它可以高并發連接配接

2)記憶體消耗少

3)成本低廉,且開源

4)配置簡單、節省帶寬、穩定性高、支援熱部署

二、Nginx安裝 

1、目前分為三個版本:舊的穩定版(0.6.x)、最新的穩定版(0.7.x)、開發版(0.8.x)

(這裡使用0.7.x版本為例)

2、GCC編譯器及相關工具

#yum -y install gcc gcc-c++ autoconf automake

3、子產品依賴

Nginx的一些子產品需要其他第三方庫的支援

#yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

4、源碼安裝Nginx

#tar zxvf nginx-0.7.67.tar.gz

#cd nginx-0.7.67

#./configure

#make

#make install

(預設安裝在/usr/local/nginx目錄,編輯.bash_profile,添加

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/nginx/sbin/nginx,并激活)

四、Nginx的啟動、停止、平滑重新開機

Linux下,Nginx服務主要的操作就是啟動、停止和平滑重新開機

1、啟動:nginx -c /usr/local/nginx/conf/nginx.conf

netstat -tunlp檢視80端口是否開啟

2、停止:ps -ef|grep nginx

或kill - TERM `cat /usr/local/nginx/logs/nginx.pid`

或強制停止:pkill -9 nginx

3、Nginx的平滑重新開機

先測試文法:

[root@localhost ~]# nginx -t 

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

configuration file /usr/local/nginx/conf/nginx.conf test is successful

此出現則ok

重新開機:

kill -HUP Nginx的主程序号(即nginx: master process /usr/local/nginx/sbin/nginx)

或kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

五、Nginx的虛拟主機配置

(/usr/local/nginx/conf/nginx.conf)

1、基于ip的虛拟主機配置

#ifconfig eth0:0 192.168.0.4/24

#route add -host 192.168.0.4 dev eth0:0

#ifconfig eth0:1 192.168.0.5/24

#route add -host 192.168.0.5 dev eth0:1

重新開機失效,可添加到/etc/rc.local

(nginx.conf)

http {

    #第一個虛拟主機

    server {

        listen       192.168.0.3:80;

        server_name  192.168.0.3;

access_log  logs/server1.access.log combined;

        location / {

            root   /data0/htdocs/server1;

            index  index.html index.htm;

        }

}

#第二個虛拟主機

        listen       192.168.0.4:80;

        server_name  192.168.0.4;

access_log  logs/server2.access.log combined;

            root   /data0/htdocs/server2;

#第三個虛拟主機

        listen       192.168.0.5:80;

        server_name  192.168.0.5;

access_log  logs/server3.access.log combined;

            root   /data0/htdocs/server3;

      }

2、配置基于域名的虛拟主機

        listen       80;

        server_name  a.sea.com;

access_log   logs/a.sea.com.access.log combined;

            root   /data0/htdocs/a.sea.com;

        server_name  b.sea.com;

access_log   logs/b.sea.com.access.log combined;

        server_name  c.sea.com;

access_log   logs/c.sea.com.access.log combined;

            root   /data0/htdocs/c.sea.com;

六、Nginx負載均衡及反向代理

1、負載均衡

Upstream子產品是Nginx負載均衡的主要子產品,它提供了一個簡單方法來實作在輪詢和用戶端ip之間的後端

伺服器負載均衡,并可以對後端伺服器進行健康檢查。

upstream backend {

server backend1.example.com weight=5

server backend2.example.com:8080;

server unix:/tmp/backend3;

server {

location / {

proxy_pass http://backend;

2、反向代理

worker_processes  10;

error_log /data1/logs/nginx_error.log crit;

pid /usr/local/nginx/nginx.pid;

worker_rlimit_nofile 51200;

events {

    use epoll;

    worker_connections  51200;

    include       mime.types;

    default_type  application/octet-stream;

    server_name_hash_bucket_size 128;

    client_header_buffer_size 32k;

    large_client_header_buffers 4 32k;

    sendfile on;

    keepalive_timeout  65;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.1;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

limit_zone crawler $binary_remote_addr 10m;

client_max_body_size 300m;

client_body_buffer_size 128k;

proxy_connect_timeout 600;

proxy_read_timeout 600;

proxy_send_timeout 600;

proxy_buffer_size 16k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

upstream php_server_pool {

server 192.168.0.10:80 weight=4 max_fails=2 fail_timeout=30s;

server 192.168.0.11:80 weight=4 max_fails=2 fail_timeout=30s;

server 192.168.0.12:80 weight=4 max_fails=2 fail_timeout=30s;

upstream message_server_pool {

server 192.168.0.13:3245;

server 192.168.0.14:3245 down;

upstream bbs_server_pool {

server 192.168.0.15:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.0.16:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.0.17:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.0.18:80 weight=1 max_fails=2 fail_timeout=30s;

#第一個虛拟主機,反向代理php_server_pool這組伺服器

server

{

listen 80;

server_name www.sea.com;

location /

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_pass http://php_server_pool;

proxy_set_header Host www.sea.com;

proxy_set_header X-Forwarded-For $remote_addr;

access_log /data1/logs/www.sea.com_access.log;

#第二個虛拟主機 

server_name www1.sea.com;

location /message/

proxy_pass http://message_server_pool;

proxy_set_header Host $host;

access_log /data1/logs/message.sea.com_access.log;

server_name bbs.sea.com  *.bbs.sea.com;

proxy_pass http://bbs_server_pool;

access_log off;

七、編譯安裝MySQL 5.1.44

 /usr/sbin/groupadd mysql

 /usr/sbin/useradd -g mysql mysql

 tar zxvf mysql-5.1.44.tar.gz

 cd mysql-5.1.44/

 ./configure --prefix=/usr/local/web_server/mysql/ --enable-shared --enable-assembler --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase --with-charset=utf8 --with-extra-charsets=gbk,gb2312,utf8 --with-mysqld-user=mysql

 make && make install

 mkdir /usr/local/web_server/mysql/var

 mkdir /usr/local/web_server/mysql/tmp

 mkdir /usr/local/web_server/mysql/logs

 mkdir /usr/local/web_server/mysql/etc

 chmod +w /usr/local/web_server/mysql/

 chown -R mysql:mysql /usr/local/web_server/mysql/

 cp support-files/mysql.server /etc/init.d/mysqld

 chmod 700 /etc/init.d/mysqld

 cp support-files/my-huge.cnf /etc/my.cnf

 /usr/local/web_server/mysql/bin/mysql_install_db --basedir=/usr/local/web_server/ --datadir=/usr/local/web_server/mysql/var --user=mysql

 登陸到mysql,執行一下語句:

 grant all PRIVILEGES on *.* to mysql@'localhost' identified by '123456';

 grant all PRIVILEGES on *.* to mysql@'%' identified by '123456';

 執行了上面的語句後,再執行下面的語句,方可立即生效。

 flush privileges;

3. 安裝postgresql

 /usr/sbin/groupadd postgres

 /usr/sbin/useradd -g postgres postgres

 tar jxvf postgresql-8.3.12.tar.bz2

 cd postgresql-8.3.12

 ./configure --prefix=/usr/local/web_server/pgsql

 chmod +w /usr/local/web_server/pgsql/

 chown -R postgres:postgres /usr/local/web_server/pgsql/

八、編譯安裝PHP(FastCGI模式)

1、php-5.2.14.tar.bz2

php-5.2.14-fpm-0.5.14.diff.gz

mysql-5.1.46-linux-i686-glibc23.tar.gz

libiconv-1.13.1.tar.gz

libmcrypt-2.5.7.tar.gz

mcrypt-2.6.8.tar.gz

memcache-2.2.5.tgz

mhash-0.9.9.9.tar.bz2

eaccelerator-0.9.6.1.tar.bz2

PDO_MYSQL-1.0.2.tgz

ImageMagick.tar.gz

imagick-2.2.2.tgz

tar zxvf libiconv-1.13.1.tar.gz

cd libiconv-1.13/

./configure --prefix=/usr/local

make 

make install

tar zxvf libmcrypt-2.5.7.tar.gz

cd libmcrypt-2.5.7/

./configure

make

/sbin/ldconfig

cd libltdl/

./configure --enable-ltdl-install

tar jxvf mhash-0.9.9.9.tar.bz2

cd mhash-0.9.9.9/

cd ../

ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la

ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a

ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la

ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so

ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

2、

 tar zxvf php-5.2.13.tar.gz

 gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1

 cd php-5.2.13

 ./configure --prefix=/usr/local/web_server/php5 --with-config-file-path=/usr/local/web_server/php5/etc --with-pgsql=/usr/local/web_server/pgsql --with-pdo-pgsql=/usr/local/web_server/pgsql --with-iconv-dir=/usr/local/web_server/ --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --with-libevent=/usr/local/web_server/libevent/ --enable-force-cgi-redirect --enable-mbstring=all --with-mcrypt=/usr/local/web_server/ --with-gd --enable-gd-native-ttf --with-openssl --with-pcre-dir=/usr/local/web_server/pcre/ --with-pcre-regex=/usr/local/web_server/pcre --with-mhash --enable-pcntl --enable-sockets --without-sqlite --without-pdo-sqlite --enable-memcache --enable-zip --with-mysql=/usr/local/web_server/mysql --with-mysqli=/usr/local/web_server/mysql/bin/mysql_config --with-pdo-mysql=shared,/usr/local/web_server/mysql --enable-sysvshm

  ZEND_EXTRA_LIBS='-liconv' make

  (如果出現錯誤,按照以下方式做

  編輯 Makefile 大約 70 行左右的地方:

  EXTRA_LIBS = ….. -lcrypt

  在最後加上 -liconv,例如:

  EXTRA_LIBS = ….. -lcrypt -liconv

  然後重新再次 make 即可,不用make clean 直接make)

 make install

 cp php.ini-dist /usr/local/web_server/php5/etc/php.ini

5、編譯安裝PHP5擴充子產品    (參考:http://willko.javaeye.com/blog/332993)

 安裝memcached (memcached: http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz )

 tar zxvf memcached-1.4.5.tar.gz   

 cd memcached-1.4.5 

 ./configure --prefix=/usr/local/web_server/memcached --enable-threads --enable-64bit --with-libevent=/usr/local/web_server/libevent/

php安裝對memcached的支援 

   php有兩個版本的memcached用戶端 

 1.memcached 

 這個是新版的用戶端基于libmemcached,是以必須要安裝libmemcached 

 先安裝libmemcached 

 下載下傳位址:http://download.tangent.org/libmemcached-0.44.tar.gz 

 tar zxvf libmemcached-0.44.tar.gz

 cd libmemcached-0.44

 ./configure --prefix=/usr/local/web_server/libmemcached/ --with-memcached --with-libevent-prefix=/usr/local/web_server/libevent/

 安裝php memcached用戶端 

 下載下傳位址:http://pecl.php.net/get/memcached 

 tar zxvf memcached-0.1.4.tgz

 cd memcached-0.1.4

 /usr/local/web_server/php5/bin/phpize

 ./configure --prefix=/usr/local/web_server --with-php-config=/usr/local/web_server/php5/bin/php-config --with-libmemcached-dir=/usr/local/web_server/libmemcached/ --enable-memcached

 make && make instal

 2.memcache 

 下載下傳位址:http://pecl.php.net/get/memcache 

 tar zxvf memcache-2.2.5.tgz

 cd memcache-2.2.5

 ./configure --prefix=/usr/local/web_server --with-php-config=/usr/local/web_server/php5/bin/php-config --enable-memcache

 tar jxvf eaccelerator-0.9.6.1.tar.bz2

 cd eaccelerator-0.9.6.1/

 ./configure --prefix=/usr/local/web_server/ --enable-eaccelerator=shared --with-php-config=/usr/local/web_server/php5/bin/php-config

 make

 按shift+g鍵跳到配置檔案(php.ini)的最末尾,加上以下配置資訊:

 引用

 [eaccelerator]

 zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

 eaccelerator.shm_size="64"

 eaccelerator.cache_dir="/usr/local/eaccelerator_cache"

 eaccelerator.enable="1"

 eaccelerator.optimizer="1"

 eaccelerator.check_mtime="1"

 eaccelerator.debug="0"

 eaccelerator.filter=""

 eaccelerator.shm_max="0"

 eaccelerator.shm_ttl="3600"

 eaccelerator.shm_prune_period="3600"

 eaccelerator.shm_only="0"

 eaccelerator.compress="1"

 eaccelerator.compress_level="9"

 tar zxvf PDO_MYSQL-1.0.2.tgz

 cd PDO_MYSQL-1.0.2/

 ./configure --prefix=/usr/local/web_server/ --with-php-config=/usr/local/web_server/php5/bin/php-config --with-pdo-mysql=/usr/local/web_server/mysql

 cd PDO_MYSQL-1.0.2

 ./configure --prefix=/usr/local/web_server/ --with-php-config=/usr/local/web_server/php5/bin/php-config --with-pdo-pgsql=/usr/local/web_server/pgsql/

 tar zxvf ImageMagick.tar.gz

 cd ImageMagick-6.5.1-2/

 ./configure --prefix=/usr/local/web_server/

 tar zxvf imagick-2.3.0.tgz

 cd imagick-2.3.0/

 ./configure --prefix=/usr/local/web_server/ --with-php-config=/usr/local/web_server/php5/bin/php-config --with-imagick=/usr/local/web_server/

 wget http://www.ftphp.com/scws/down/scws-dict-chs-utf8.tar.bz2

 wget http://www.ftphp.com/scws/down/scws-dict-chs-gbk.tar.bz2

 tar jxvf scws-1.1.3.tar.bz2

 cd scws-1.1.3

 ./configure --prefix=/usr/local/web_server/scws

 cd /usr/local/src

 tar jxvf scws-dict-chs-utf8.tar.bz2 -C /usr/local/web_server/scws/etc/

 tar jxvf scws-dict-chs-gbk.tar.bz2 -C /usr/local/web_server/scws/etc/

 cd scws-1.1.3/phpext/

 ./configure --with-scws=/usr/local/web_server/scws/ --with-php-config=/usr/local/web_server/php5/bin/php-config

繼續閱讀