yum安装
- 添加nginx到yum
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 安装nginx
yum install -y nginx
- 启动nginx
service nginx start
- 查看是否启动成功
ps -aux | grep nginx
[root@VM_90_159_centos ~]# ps -aux | grep nginx
root 1963 0.0 0.0 46364 964 ? Ss 18:15 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 1964 0.0 0.1 48848 1992 ? S 18:15 0:00 nginx: worker process
root 1968 0.0 0.0 112660 972 pts/0 R+ 18:15 0:00 grep --color=auto nginx
yum 在线安装会将 nginx 的安装文件放在系统的不同位置,可以通过命令 rpm -ql nginx 来查看安装路径如下,安装的比较分散,如果我们想集中管理nginx,可以使用安装包的方式安装nginx
[root@VM_90_159_centos nginx]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.14.0
/usr/share/doc/nginx-1.14.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
源码安装
- 安装gcc环境
源码安装nginx依赖于gcc环境,如果没有gcc环境,需要安装:
yum install -y gcc-c++
- 安装 PCRE
nginx的http模块使用pcre来解析正则表达式,pcre-devel是使用pcrel来开发的二次开发库。
yum install -y pcre pcre-devel
- 安装 zlib
nginx 使用zlib把http包压缩成gzip。
yum install -y zlib zlib-devel
- 安装openssl
nginx 不仅支持 http 协议,还支持 https,而https协议是基于ssl协议传输的http,openssl是ssl协议的实现,是一个强大的安全套接字密码库。
yum install -y openssl openssl-devel
- 下载并解压nginx源码
cd /usr/local/src
wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar -zxvf nginx-1.10.2.tar.gz
- 设置 nginx 的安装路径,生成makefile
./configure --prefix=/usr/local/server/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
在这里我设置的安装路径是 /usr/local/server/nginx - 编译
make
- 安装
make install
- 启动
cd /usr/local/server/nginx/sbin
./nginx
nginx目录结构
安装后的nginx,我们通过tree /usr/local/server/nginx命令可以看到它的目录结构.
/usr/local/nginx
├── client_body_temp #上传的文件如果过大的缓存目录
├── conf # Nginx所有配置文件的目录
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default # 所有结尾为default的文件都是备份文件
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types # 媒体类型,
│ ├── mime.types.default
│ ├── nginx.conf # Nginx主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx命令目录
│ └── nginx # Nginx的启动命令
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
fastcgi
在上面的目录结构中,我们可能发现很多fastcgi的东西,那到底是什么东西呢?要理解fastcgi,首先要理解cgi,cgi是一种协议,它规定了web server(nginx)和CGI程序(比如php解析器和python解析器)之间要怎么通信,web server要传什么东西给CGI程序(比如url, url参数, http header 等),要以什么格式传给cgi程序.
CGI程序反复加载是CGI性能低下的主要原因,如果CGI程序保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。
FASTCGI是常驻型的CGI,它可以一直运行,在请求到达时,不会花费时间去fork一个进程来处理。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,将CGI解释器进程保持在内存中,以此获得较高的性能。
一般情况下,FastCGI的整个工作流程是这样的:
1、Web Server启动时载入FastCGI进程管理器
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待WebServer的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,php-cgi在此便退出了。
网友评论