一、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;
}
}
#第二个虚拟主机
server {
listen 192.168.0.4:80;
server_name 192.168.0.4;
access_log logs/server2.access.log combined;
location / {
root /data0/htdocs/server2;
index index.html index.htm;
}
}
#第三个虚拟主机
server {
listen 192.168.0.5:80;
server_name 192.168.0.5;
access_log logs/server3.access.log combined;
location / {
root /data0/htdocs/server3;
index index.html index.htm;
}
}
}
2、配置基于域名的虚拟主机
http {
#第一个虚拟主机
server {
listen 80;
server_name a.sea.com;
access_log logs/a.sea.com.access.log combined;
location / {
root /data0/htdocs/a.sea.com;
index index.html index.htm;
}
}
#第二个虚拟主机
server {
listen 80;
server_name b.sea.com;
access_log logs/b.sea.com.access.log combined;
location / {
root /data0/htdocs/a.sea.com;
index index.html index.htm;
}
}
#第三个虚拟主机
server {
listen 80;
server_name c.sea.com;
access_log logs/c.sea.com.access.log combined;
location / {
root /data0/htdocs/c.sea.com;
index index.html index.htm;
}
}
}
六、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;
}
http {
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;
}
#第一个虚拟主机,反向代理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
{
listen 80;
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
{
listen 80;
server_name bbs.sea.com *.bbs.sea.com;
location /
{
proxy_pass http://bbs_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
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
make && make install
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
make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
tar jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9/
./configure
make
make install
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/
/sbin/ldconfig
./configure
make
make install
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/
make && make install
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/
make && make install
安装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
/usr/local/web_server/php5/bin/phpize
./configure --prefix=/usr/local/web_server --with-php-config=/usr/local/web_server/php5/bin/php-config --enable-memcache
make && make instal
tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/web_server/php5/bin/phpize
./configure --prefix=/usr/local/web_server/ --enable-eaccelerator=shared --with-php-config=/usr/local/web_server/php5/bin/php-config
make
make install
按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/
/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-pdo-mysql=/usr/local/web_server/mysql
make
make install
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/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-pdo-pgsql=/usr/local/web_server/pgsql/
make
make install
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure --prefix=/usr/local/web_server/
make
make install
tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0/
/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-imagick=/usr/local/web_server/
make
make install
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
make
make install
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/
/usr/local/web_server/php5/bin/phpize
./configure --with-scws=/usr/local/web_server/scws/ --with-php-config=/usr/local/web_server/php5/bin/php-config
make
make install
转载于:https://blog.51cto.com/negiup/532309