Nginx简介:
Nginx由俄罗斯lgor Sysoev开发。是一款轻量级的HTTP服务器软件,其专为性能优化开发,其最知名的是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可以支持30000-50000个并发
Nginx相对于Apache优点:
1 高并发响应性能非常好,官方Nginx处理静态文件并发5w/s
2 反向代理性能非常强。 (可用于负载均衡)
3 内存和cpu占用率低 。 (为Apache的1/5-1/10)
4 对后端服务有健康的见检查功能。
5 支持PHPcgi方式和fastcgi方式
6 配置代码简洁上手。
Nginx官方网站http://www.nginx。org/下载
本章以1.6.0为例
1 编译安装Nginx
1-1安装支持软件
yum -y install pcre-devel zlib-devel
1-2 创建用户和组 (Nginx服务程序默认以nobody 身份运行 建议为其创建专用用户和组,以便更准确的控制其访问权限,降低安全风险。创建一个nginx的用户,不建立宿主文件夹,也禁止登陆Shell环境)
useradd -M -s /sbin/nologin nginx
1-3 编译安装Nginx
tar zxvf nginx-1.6.0.tar。gz
cd nginx-1.6.0
./configure - -prefix=/usr/local/nginx - -user=nginx - - group=nginx - -with-http_stub_status_module
make && make install
1-4优化主程序nginx的路径 (也就是为nginx创建连接文件,以便管理员直接执行 “nginx”命令调用Nginx的主程序)
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
ls -l /usr/local/sbin/nginx (查看优化结果)
lrwxrwxrwx 1 root root 27 7月 28 18:38 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
这样的结果就是成功了
1-4 Nginx的运行控制
nginx -t (检测 主配置文件是否有错误)
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
要是检测报告这两条说明没问题(在修改完成nginx的主配置文件后使用这条命令检查,如果ok就没问题 另如报错根据提示修改主配置文件)
nginx (启动nginx服务)
通过检测Nginx程序的监听状态 检测是否运行
netstat -anpt | grep nginx
命令结果为
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 73222/nginx
则为启动 如果不显示则为没有启动
Nginx的重新加载与关闭
kallall -s HUP nginx (重新加载)
kallall -s QUIT nginx (关闭)
nginx (开启)
1-5 使用Nginx服务脚本
vim /etc/init.d/nginx
PROG=”/usr/local/nginx/sbin/nginx”
PIDF=”/usr/local/nginx/logs/nginx/nginx.pid”
case “$
1” in
start)
$PROG
;;
stop)
kill –s QUIT $
(cat $PIDF)
;;
restart)
$
0 stop
$
0 start
;;
reload)
kill –s HUP $
(cat $
PIDF)
;;
*)
echo “Usage: $0 {start|stop|restart|reload}”
exit 1
esac
exit 0
这个脚本执行后可能会报错
cat: /usr/local/nginx/logs/nginx/nginx.pid: No such file or directory
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec … or kill -l [sigspec]
有的就不报 可能是我的脚本有问题 如果有大佬看出问题请评论
我个人的解决方法是 将脚本内的 $
(cat $
PIDF) 都改为 “nginx” 就可以控制自如了
chmod +x /etc/init.d/nginx
chkconfig - -add nginx
就可以由chkconfig 和service 管理了
1-6 配置文件nginx.conf
Nginx的主配置文件在/usr/local/nginx/conf/nginx.conf 内容如下
全局配置
worker_processes 1; //工作进程数量
I/O事件配置
events {
use epoll; //使用epoll模型
worker_connections 1024; //每进程处理1024个链接 一般在10000以下默认为 1024
}
HTTP配置
http {
include mime.types;
default_type application/octet-stream;
#log_format main ‘$
remote_addr - $
remote_user [$
time_local] “$
request” ’
# ‘$
status $
body_bytes_sent “$
http_referer” ’
# ‘”$
http_user_agent” “$
http_x_forwarded_for”’;
#access_log logs/access.log main; //访问日志文件位置
sendfile on; //支持文件发送(下载)
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; //保持连接数
#gzip on;
//虚拟Web主机 PHP解析等一系列设置 其中大部分在 sever {}内
server {
listen 80; //Web服务监听配置 监听地址及端口
server_name localhost; //网站名称
#charset koi8-r; //网页的默认字符集
#access_log logs/host.access.log main;
location / { //根目录配置
root html; //网站根目录位置
index index.html index.htm; //默认首页
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 //50x.html; //内部错误反馈页面
location = /50x.html { //错误页面配置
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ { //访问.php页面的配置段
# proxy_pass http://127.0.0.1; //apache/nginx服务器的监听地址
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ { //访问.php页面的配置段
# root html; //PHP网页文档根目录
# fastcgi_pass 127.0.0.1:9000; //php-fpm的监听覅在
# fastcgi_index index.php; //PHP首页文件
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params; //包括fastcpg.conf样本文件
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
2安装mysql数据库
2-1 为了与Nginx PHP 环境保持一致 仍选择采用源代码安装Mysql组件。
以5.5.22为例
安装一个依赖包
yum –y install ncurses
编译安装mysql需要cmake这个编译工具先编译安装cmake
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
gmake
gmake install
完成对cmake的安装后
2-2开始编译安装mysql
tar zxvf mysql-5.5.22.tar.gz -C /usr/src/
将mysql解压到/usr/src/
然后进入
cd /usr/src/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-3 优化调整
cp support-files/my-medium.cnf /etc/my.cnf
将mysql添加为系统服务方便管理
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig - -add mysqld
echo “PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile
. /etc/profile
2-4 初始化数据库
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
2-5开始启动mysql服务
service mysqld start
因为数据库默认是没有密码使用要更改数据库密码
mysqladmin -u root password ‘123.com’
登陆数据库
mysql -uroot -p
Enter password: 出现这个就输入改的密码 默认是看不见的
(第一次看见先回车 可能是让输入原始密码,如果报错尝试新密码)
3安装PHP
较新的版本如(5.3)的PHP已经自带FPM(FastCGL Process Manager ,FastCGL的进程管理器)
用来对PHP解析实例进行管理,优化解析效率,单服务器的LNMP 架构通常使用这种方式因此在配置PHP编译时应添加 “—enable-fpm“启用此模块
以源码包php-5.3.28为例 为了提高PHP解析效率建议安装ZendGuardLoader也装上
3-1 安装PHP解析环境
编译安装PHP
先装上相关的依赖包
yum -y install libxml2-devel libjpeg-devel libpng-devel
开始编译安装PHP
tar zxvf php-5.3.28.tar.gz -C /usr/src/
cd /usr/src/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
3-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-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
3-4 配置Nginx 支持 PHP环境
若要Nginx能够解析PHP网页 有两种方法选择
第一 充当中介,将访问PHP页面的Web请求交给其他服务器LNMP 去处理
第二 就是使用PHP的FPM模块来调用本机的PHP环境
我们使用第二中 启用 php-fpm进程
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php
vim php-fpm.conf
pid = run/php-fpm.pid //确认pid文件位置
user = php //运行用户
group = php //运行组
pm.max_children = 50
pm.start_servers = 20 //启动时开启的进程数
pm.min_spare_servers = 5 //最少空闲进程数
pm.max_spare_servers = 35 //最多空闲进程数
(文件数据庞大 可在非编辑的模式下 通过“/“查询关键字 pgUp/pgDn上下翻页编辑)
启用模块
usr/local/sbin/php-fpm
通过修改Nginx的服务脚本将php-fpm进程也添加进去 如下
这样php-fpm就可以随nginx启动关闭。
vim /etc/init.d/nginx
PROG=”/usr/local/nginx/sbin/nginx”
PIDF=”/usr/local/nginx/logs/nginx/nginx.pid”
PROG_FPM=”/usr/local/sbin/php-fpm”
PIDF_FPM=”/usr/local/php5/var/run/php-fpm.pid”
case “$
1” in
start)
$
PROG
$
PROG_FPM
;;
stop)
killall -s QUIT “nginx”
kill -s QUIT (cat ( c a t PIDF_FPM)
;;
restart)
0stop 0 s t o p 0 start
;;
reload)
killall -s HUP “nginx”
– 插入 –
3-5 配置nginx支持php解析
只需要在nginx.conf文件配置这几行 并将#去掉启用就可以用php了
前面说的第一种方法的配置
# proxy_pass http://127.0.0.1; //apache/nginx服务器的监听地址
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
第二种方法配置
location ~ .php$ { //访问.php页面的配置段
root var/www/accp; //PHP网页文档根目录
fastcgi_pass 127.0.0.1:9000; //php-fpm的监听覅在
fastcgi/_index index.php; //PHP首页文件
include fastcgi.conf; //包括fastcpg.conf样本文件
}
根据配置 必须有accp这个目录
首先先创建出这个目录
mkdir /var/www/accp
然后在accp里面编写一个 PHP首页文件
vim /var/www/accp/test.php
$
link=mysql_connect(‘localhost’,’root’,’123.com’);
If($link) echo “恭喜你 数据哭连接成功“;
mysql_close();
?>
然后点开浏览器先访问 127.0.0.1看看nginx是否正常
然后访问127.0.0.1/test.php
记得把字符集调utf8
不然是乱码
好了LNMP平台部署完成了 发现什么错误 或者有什么建议 直接评论或者联系
搭建环境一帆风顺未必是好,排查错误 修改 也是很重要的。感谢大神来访