Nginx安装
Nginx优点:
在性能上nginx占用更少的系统资源,在特定的场景应用中(静态数据)能支持更多的并发连接,达到更改的访问效率。在功能上,nginx是一个优秀的代理服务器和负载均衡服务器,还可以作为缓存服务器。最主要的优点是支持kqueue,epoll等网络IO事件模型,由此来支持高并发。
作为web服务器:nginx能支持更多的并发连接(针对静态数据),而且占用的资源很少,效率更高。作为负载均衡服务器:nginx可以作为代理服务器,类似专业的haproxy软件功能。nginx同时也是一款优秀的邮件代理服务器。 nginx还可以作为缓存服务器使用。nginx安装非常简单,配置文件简介,配置灵活
Nignx的工作模式为一个master主进程+N个worker进程
安装Pcre库
官方网站 http://www.pcre.org 安装prce是为了使Nginx支持http rewrite模块。
[root@lnmp ~]#mkdir /tools [root@lnmp~]#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz [root@lnmp ~]#tar zxvf pcre-8.30.tar.gz [root@lnmp ~]# cd pcre-8.30 [root@lnmp ~]#./configure [root@lnmp ~]# make && make install
安装nginx
官方网站:http://nginx.org/en/download.html
下载站点:http://nginx.org/download/nginx-1.2.9.tar.gz
[root@lnmp ~]# useradd nginx -s /sbin/nologin -M [root@lnmp ~]#tar zxvf nginx-1.2.9.tar.gz [root@lnmp ~]#cd /nginx-1.2.9 [root@lnmp ~]#./configure --prefix=/application/nginx-1.2.9 --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module [root@lnmp ~]#make && make install [root@lnmp ~]#ln -s /application/nginx-1.2.9/ /application/nginx
--with-http_stub_status_module #激活状态模块
--with-http_ssl_module #激活ssl功能
[root@lnmp ~]#/application/nginx/sbin/nginx -t #检查语法 /application/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
报错信息,提示缺少libpcre.so.l库。
解决方法
[root@lamp ~]#find / -name "libpcre.so.1"
/usr/local/lib/libpcre.so.1
[root@lamp ~]#vi /etc/ld.so.conf
将下面库的路径
/usr/local/lib 放到文件最后,保存退出
执行ldconfig命令,是上面的更改生效
[root@lnmp ~]#/application/nginx/sbin/nginx -t #再检查语法 [root@lnmp ~]#/application/nginx/sbin/nginx #启动nginx
检查是否启动成功
[root@lnmp ~]# ps -ef | grep nginx root 10858 1 0 Aug22 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx nginx 10859 10858 0 Aug22 ? 00:00:00 nginx: worker process root 28189 27736 0 02:10 pts/1 00:00:00 grep nginx [root@lnmp ~]# netstat -lnt | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN [root@lnmp ~]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME nginx 10858 root 6u IPv4 32556 TCP *:http (LISTEN) nginx 10859 nginx 6u IPv4 32556 TCP *:http (LISTEN)
浏览器,输入服务器地址,检查是否成功
如果启动的时候出现错误:nginx: [emerg] gerpwnam("nginx") failed
表示没有创建用户
[root@lnmp ~]#pkill nginx 杀掉进程
[root@lnmp ~]#/application/nginx/sbin/nginx 重新启动nginx
nginx错误日志地址:/application/nginx/logs/error.log
Nginx配置说明
|-- conf #nginx的所有配置文件目录
| |-- fastcgi.conf #fastcgi的配置文件
| |-- fastcgi.conf.default
| |-- fastcgi_params #fastcgi的参数文件
| |-- fastcgi_params.default
| |-- koi-utf
| |-- koi-win
| |-- mime.types
| |-- mime.types.default
| |-- nginx.conf #nginx的主配置文件
| |-- nginx.conf.default
| |-- scgi_params
| |-- scgi_params.default
| |-- uwsgi_params
| |-- uwsgi_params.default
| `-- win-utf
|-- html #这是编译安装时nginx的默认站点目录
| |-- 50x.html #错误页面优雅代替显示文件,例如:出现502错误会调用此页面
| |-- index.html#默认的首页文件。首页文件时在nginx.conf中事先定义好的。具体参数为
indexindex.html index.htm,注意与apache参数的不同
DirectoyIndexindex.html
|-- logs #这是nginx默认的日志路径,报错错误日志及访问日志
| |-- access.log#nginx的默认访问日志文件
| |-- error.log#nginx的默认错误日志文件
| `-- nginx.pid#nginx的pid文件,nginx进程启动后,会把所有进程的ID号写到此文件
|-- sbin #nginx的命令目录
| `-- nginx#nginx的启动命令
Nginx的主配置文件nginx.conf
user nginx nginx; #指定用户和组
worker_processes 1; #启动nginx开启多少个进程
events { #事件
use epoll;
worker_connections 1024;
}
http { #http的标签
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server { #server 标签,即虚拟主机的配置 相当于apache的vhost配置,都要放在http{}中
listen 80;
server_name bbs.pengzai.cn pengzai.cn; #网站名称 别名
location / {
root /www;
index index.html index.htm;
}
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root html;
}
}
}
创建站点目录
[root@lnmp ~]#mkdir -p /www/{bbs,blog}
给站点目录授权
[root@lnmp ~]#chown -R nginx.nginx /www/
创建日志路径
[root@lnmp ~]#mkdir -p /app/logs
建立index主文件
[root@lnmp ~#]echo "I am addam" >/www/blog/index.html
然后检查语法:
[root@lnmp ~]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.2.9/conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.2.9/conf/nginx.conf test is successful
然后平滑重启nginx:
[root@lnmp ~]# /application/nginx/sbin/nginx -s reload
检查启动结果:
[root@lnmp ~]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME nginx 10858 root 6u IPv4 32556 TCP *:http (LISTEN) nginx 28394 nginx 6u IPv4 32556 TCP *:http (LISTEN) nginx 28395 nginx 6u IPv4 32556 TCP *:http (LISTEN) nginx 28396 nginx 6u IPv4 32556 TCP *:http (LISTEN)
[root@lnmp ~]# netstat -lnt|grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
Nginx虚拟主机配置
vi [root@lnmp ~]#
user nginx nginx; #指定用户和组
worker_processes 2; #启动nginx开启多少个进程
error_log /app/logs/nginx_error.log crit; #crit严重日志级别,错误日志地址
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format commonlog '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.pengzai.cn pengpeng.cn; #网站名称 别名
location / {
root /www/blog; #站点目录
index index.html index.htm;
access_log /app/logs/pengzai_access.log commonlog;
}
}
server {
listen 80;
server_name www.addam.com;
location / {
root /www/bbs/;
index index.html index.htm;
access_log /app/logs/addam_access.log commonlog;
}
}