Nginx 有三大显著特点:1.稳定性
2.低系统资源损耗
3.对HTTP并发连接的高处理能力(单台30000-50000并发请求)
Nginx 主要是静态网站的解析,和提交动态请求 FPM(fastcgi进程管理器)解析动态网站
在LNMP平台上可以结合xcache加速PHH解析速度,提高页面生成速度2-5倍
安装前的准备工作:yum -y install pcre-devel zlib-devel gcc gcc-c++
Nginx 的配置及运行需要pcre ,zlib 等软件包的支持,以便提供相应的库和头文件,也需要gcc的支持
挂载CentOs系统的YUM时,注意CentOs的YUM 配置会首先检查自带的网络配置,也就是Centos-Base.repo,所以要想让本地YUM 生效,就是删除Base.repo或给其改名(Redhat 无需如此)
另:如果我们防火墙规则不是太熟练,可以事先清空防火墙规则及修改/etc/sysconfig/selinux的安全制
一、编译安装Nginx (建议使用nginx_install.sh 脚本)
[root@rhel6 ~]# nginx �Ct //测试是否安装正确
[root@rhel6 ~]# nginx // 启动服务
[root@rhel6 ~]# netstat -anpt |grep nginx //查看端口 (或服务器中已装有httpd 等其它Web服务软件,应采取措施(修改端口,停用或卸载),避免冲突
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13440/nginx
[root@rhel6 ~]# elinks http://192.168.1.226 测试网页
Welcome to nginx!
主程序Nginx支持标准的进程信号,通过kill或killall命令发送HUP信号表示重载配置,QUIT信号表示退出进程,KILL信号表示杀死进程,例:
#killall -s HUP nginx //选项 -s HUP 等同于-1 重载
#killall -s QUIT nginx //选项-s QUIT 等同于-3 杀死
当然为了使Nginx服务的启动,停止,重载方便也可以使用服务脚本。
二、配置文件Nginx.conf
在Nginx服务器的主配置文件/usr/local/ngixn/conf/nginx.conf中,包括全局配置,I/O配置和HTTP配置这三大块内容
http{}包括访问日志,HTTP端口,网页目录,默认字符集,连接保持,以及虚拟主机,PHP解析等一系列设置,大部分配置都包含在子界定标记server{}内
Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况,配置编译参数时可添加--with-http_stub_status_module来启动此模块。当然还要修改nginx.conf配置文件,指定访问位置并打开stub_stauts配置
基于域名的虚拟主机 1.准备网站目录及测试文件
例:#mkdir -p /var/www/benet
#echo “<h1>WWW.BENET.COM</h1>” >/var/www/benet.com/index.html
2.调整nginx.conf的配置文件 (此处要去掉配置文件中pid ,log前的注释,还要特别注意http,server开始结束的{}符号)
[root@rhel6 ~]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.benet.com;
charset utf-8;
location / {
root /var/www/benet;
index index.html index.php;
}
用域名访问少不了DNS或host文件的修改(略)
二、安装MySQL数据库 (建议使用install_mysql.sh 脚本)
yum -y remove mysql-server mysql
yum -y install compat-libtermcap ncurses-devel
1)这里借用的cmake配置编译安装Myqal的源码包
#cd cmake-2.8.6
#./configure
#gmake && gmake install
#cd mysql-5.5.22
#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
#make && make install
2)优化调整
rm -rf /etc/my.cnf
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --level 35 mysqld on
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile 或者 source /etc/profile
3))初始化数据库
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
chown -R mysql:mysql /usr/local/mysql/
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql
4)启动数据库
service mysqld start
mysqladmin -u root password 'pwd123'
mysql -u root -p
三、安装PHP环境 (建议使用install_php.sh 脚本、install_zend.sh 脚本)
yum -y remove php
yum -y install libxml2-devel libpng-devel pcre-devel
yum -y install gd libxml2 libxml2-devel libjpeg-devel libpng-devel
tar zxvf php-5.3.28.tar.gz
cd php-5.3.28
./configure --prefix=/usr/local/php5/ --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
make && make install
测试:make test
2)安装后的调整
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/
3)安装ZendGuardLoader
tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
cd ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/
cp ZendGuardLoader.so /usr/local/php5/lib/php/
vim /usr/local/php5/php.ini
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
Killall -3 nginx
nginx
[root@localhost ~]# vi /usr/local/php5/etc/php-fpm.conf
pid = run/php-fpm.pid
user = nginx
group = nginx
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
[root@rhel6 ~]# /usr/local/sbin/php-fpm 启动php-fpm进程
[root@rhel6 ~]# vim /usr/local/php5/php.ini
date.timezone ="PRC"
//PRC,People’s Republic of China,中华人民共和国,也就是日期使用中国的时区。
四、配置Nginx 支持PHP环境
1、修改Nginx服务脚本,以便在启动、停止Nginx服务时将php-fpm进程启动、停止
[root@rhel6 ~]# vim /etc/init.d/nginx (参考脚本nginx.initscript)
#!/bin/bash
# chkconfig: 35 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PROG_FPM="/usr/local/sbin/php-fpm"
PIDF="/usr/local/nginx/logs/nginx.pid"
PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"
case "$1" in
start)
$PROG
$PROG_FPM
;;
stop)
kill -s QUIT $(cat $PIDF)
kill -s QUIT $(cat $PIDF_FPM)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@rhel6 ~]# chmod a+x /etc/init.d/nginx
2、配置Nginx支持PHP解析
[root@rhel6 ~]# vim /usr/local/nginx/conf/nginx.conf
index index.html index.php;
location ~ \.php$ {
root /var/www/benet;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
注意:解析时可能会出现一些常见的错误,比如404找不到文件,5XX就是动态解析的原因了
LNMP 测试:
[root@rhel6 ~]# vim /var/www/benet/test.php
<?php
$link=mysql_connect('localhost','root','666666'); //单引号
if($link)
echo "congratulation!!!";
mysql_close();
?>
[root@rhel6 ~]# vim /var/www/benet/testphpinfo.php
<?php
phpinfo();
?>
五、安装部署电影服务器
[root@rhel6 benet]# mysql -u root -p
mysql> create database skyucdb;
[root@rhel6 benet]# tar -jxvf SKYUC_3.2.2_Free_For_PHP5.3.tar.bz2
[root@rhel6 ~]# cp -ap SKYUC_3.2.2_Free_For_PHP5.3/wwwroot/* /var/www/benet/
[root@rhel6 wwwroot]# cd /var/www/benet/
[root@rhel6 benet]# chmod -R 777 data/
[root@rhel6 benet]# chmod -R 777 templates/
[root@rhel6 benet]# chmod -R 777 admincp/
[root@rhel6 benet]# chmod -R 777 upload/
#mysql -u -p
Mysql> create database skyucdb;
Mysql> grant all on skyucdb.* to runskyuc@localhost identified by ‘sky@uc123’;