Nginx+PHP+反向代理+负载均衡+HHVM

1. 安装 Ngnix
# 安装nginx
$ yum -y install nginx
# 随系统自启动
$ chkconfig –levels 235 nginx on
$ /etc/init.d/nginx start #启动
# 页面测试
打开 http://121.40.118.243/ 测试成功
# 平滑启动服务
$ /usr/local/www/nginx/sbin/nginx -xs reloadx
或是
$ killx -HUP `cat /usr/local/www/nginx/logs/nginx.pidx`
2. 安装PHP
特别说明:默认情况下Nginx和PHP他俩之间是一点感觉没有的,
而Nginx+PHP需要PHP生成可执行文件才可以,所以要利用fastcgi技术来实现Nginx与PHP的整合,PHP-FPM说白了是一个管理FastCGI的一个管理器,而且PHP要与PHP-FPM版本一致。

# PHP主程序
$ yum -y install yum install php php-fpm
$ echo “/etc/init.d/php-fpm start” >>/etc/rc.local
$ /etc/init.d/php-fpm start
# PHP模块
$ yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-curl php-mbstring
$ /etc/init.d/nginx restart
3. 配置PHP
# 如果/var/www/html目录不存在要新建)
$ echo “<?php phpinfo();?>” >> /var/www/html/index.php
$ vim /etc/nginx/conf.d/default.conf
——————————————–
location / {
root   /var/www/html;
index  index.php index.html index.htm;
}
…………………………………
location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
include        fastcgi_params;
}
——————————————–
$ /etc/init.d/php-fpm restart
$ /etc/init.d/nginx restart
打开 http://121.40.118.243/ 测试成功3. Mysql + PHPmyadmin + SVN + Vsftpd
详细查看:http://www.phpbin.cn/archives/420
4. 端口虚拟主机
$ cd /etc/nginx/conf.d
$ cp default.conf 121.40.118.243:8080.conf
$ vim 121.40.118.243:8080.conf
——————————————–
server {
listen       8080;
server_name  121.40.118.243;
…………………………………..
}
——————————————–
$ /etc/init.d/nginx restart
打开 http://121.40.118.243:8080 测试成功
5. 域名虚拟主机
$ cd /etc/nginx/conf.d
$ cp default.conf laowu.redianr.cn.conf
$ vim laowu.redianr.cn.conf
——————————————–
server {
listen       80;
server_name  laowu.redianr.cn;
…………………………………..
}
——————————————–
$ /etc/init.d/nginx restart
打开 http://laowu.redianr.cn/ 测试成功
6. 配置SSL
$ cd /etc/nginx/conf.d
$ cp default.conf laowu.redianr.cn.conf
$ vim laowu.redianr.cn.conf
——————————————–
server {
listen       443;
server_name  svn.binyun.net;
ssl on;
ssl_certificate /etc/nginx/certs/1_svn.binyun.net_bundle.crt;
ssl_certificate_key /etc/nginx/certs/2_svn.binyun.net.key;
}
——————————————–

7. 反向代理

$ cd /etc/nginx/conf.d
$ vim default.conf
——————————————–
location ~ \.php$ {
proxy_pass   http://www.phpbin.cn;
        proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;

}
———————————————
$ /etc/init.d/nginx restart
打开 http://121.40.118.243/ 测试成功
8. 负载均衡
$ cd /etc/nginx/conf.d
$ vim laowu.redianr.cn.conf
———————————————
http{
upstream laowu.redianr.cn {
#ip_hash;
server www.51jingying.com;
server www.51job.com weight=10 max_fails=3 fail_timeout=30s;
}
server {
listen 8080;
location / {
proxy_pass http://laowu.redianr.cn
}
}
———————————————
打开 http://laowu.redianr.cn 很有意思的效果
特别说明:upstream后面的名称要与proxy_pass后面的相关参数说明:
1).负载权重:weight是权重可以根据机器配置定义权重, weigth参数表示权值,权值越高被分配到的几率越大。
2).超时控制:这2个参数一起配合,来控制nginx怎样认为upstream中的某个server是失效的当在 fail_timeout的时间内,某个server连接失败了max_fails次, 则nginx会认为该server不工作了。同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。
负载算法:
1).轮询(默认)
2).IP Hash :需要在upstream的配置中指定”ip_hash;”,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3).fair:需要在upstream的配置中指定”fair;”按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4).URL hash:需要在upstream中配置指定 “hash $request_uri;hash_method crc32″按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器, 后端服务器为缓存时比较有效。
5).backup:指的是仅当其他serverdown或者忙时才会请求这台server,用于双机热备。
详细配置参数:http://www.phpbin.cn/archives/6058. squid,nginx,lighttpd反向代理的区别
9. 反向代理从传输上分可以分为2种:
1:同步模式(apache-mod_proxy和squid)
2:异步模式(lighttpd 和 nginx)
同步传输:浏览器发起请求,而后请求会立刻被转到后台,于是在浏览器和后台之间就建立了一个通道。在请求发起直到请求完成,这条通道都是一直存在的。
异步传输:浏览器发起请求,请求不会立刻转到后台,而是将请求数据(header)先收到nginx上,然后nginx再把这个请求发到后端,后端处理完之后把数据返回到nginx上,nginx将数据流发到浏览器,这点和lighttpd有点不同,lighttpd是将后端数据完全接收后才发送到浏览器。
特别说明:而lighttpd也和nginx不同的异步,lighttpd是先收完再转向客户浏览器,而nginx是边收数据边转向用户浏览器。
10.安装HHVM
$ yum -y install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
$ cd /etc/yum.repos.d
$ wget http://www.hop5.in/yum/el6/hop5.repo
$ yum clean all
$ yum install hhvm
若遇到错误
$ yum install http://pkgrepo.linuxtech.net/el6/release/x86_64/liblcms2-2.4-1.el6.x86_64.rpm
 

发表评论

邮箱地址不会被公开。 必填项已用*标注