本文共 10534 字,大约阅读时间需要 35 分钟。
部分内容参考博客:http://www.cnblogs.com/skynet/p/4146083.html
下载nginx安装包:
http://www.nginx.org本人下载了最新版本:nginx-1.10.1.tar.gz将安装包放到安装目录下,这里是/install
环境:
[root@vm-xiluhua][/]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
系统工具:gcc,automake工具
查看gcc版本:
[xiluhua@vm-xiluhua][~]$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
查看automake工具版本:
[xiluhua@vm-xiluhua][~]$ rpm -qf /usr/bin/autoconf
autoconf-2.69-11.el7.noarch
nginx对第三方库的依赖:
nginx rewrite模块:pcre库
nginx gzip模块:zlib库
nginx ssl模块:openssl库
查看当前系统以上三个库的安装情况:
[xiluhua@vm-xiluhua][~]$ rpm -q pcre
pcre-8.32-15.el7.x86_64
[xiluhua@vm-xiluhua][~]$ rpm -q zlib
zlib-1.2.7-15.el7.x86_64
[xiluhua@vm-xiluhua][~]$ rpm -q openssl
openssl-1.0.1e-42.el7.9.x86_64
遗憾的是,由于安装包太新,系统内的这三个库都没法用。
执行安装包内的
./configure
显示没有找到这两个库[pcre,zlib]:(以zlib举例)
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=option.
到官网上下或直接yum
到官网上下:
1.1.安装pcre
1. 获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
2. 解压缩pcre-xx.tar.gz包。
3. 进入解压缩目录,执行./configure。
4. make & make install
1.2.安装openssl
1. 获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
2. 解压缩openssl-xx.tar.gz包。
3. 进入解压缩目录,执行./config。
4. make & make install
1.3.安装zlib
1. 获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
2. 解压缩openssl-xx.tar.gz包。
3. 进入解压缩目录,执行./configure。
4. make & make install
直接yum
yum install pcre-develyum install zlib-devel
以上两个yum后执行.configure,显示Openssl没有安装:
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using builtin md5 code
+ sha1 library is not found
+ using system zlib library
继续yum
yum install openssl openssl-devel
yum install perl-Digest-SHA1.x86_64
再次执行.configure,显示Openssl还是没有安装:
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ md5: using system crypto library
+ sha1: using system crypto library
+ using system zlib library
原因:开启ssl 模块需要./configure执行时带上选项 --with-http_ssl_module
再次执行:
./configure --with-http_ssl_module
成功开启:
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx" #安装路径
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
执行make &make install
由于安装路径默认:/usr/local/nginx,而当前用户没有root权限,make失败
make[1]: 离开目录“/install/nginx-1.10.1”
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
mkdir: 无法创建目录"/usr/local/nginx": 权限不够
make[1]: *** [install] 错误 1
make[1]: 离开目录“/install/nginx-1.10.1”
make: *** [install] 错误 2
[1]+ 完成 make
重新./configure,添加指定安装目录:--prefix=/install/program/nginx-1.10.1
./configure --with-http_ssl_module --prefix="/install/program/nginx-1.10.1" --with-http_stub_status_module
执行结果:
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/install/program/nginx-1.10.1" #指定后的安装目录
nginx binary file: "/install/program/nginx-1.10.1/sbin/nginx"
nginx modules path: "/install/program/nginx-1.10.1/modules"
nginx configuration prefix: "/install/program/nginx-1.10.1/conf"
nginx configuration file: "/install/program/nginx-1.10.1/conf/nginx.conf"
nginx pid file: "/install/program/nginx-1.10.1/logs/nginx.pid"
nginx error log file: "/install/program/nginx-1.10.1/logs/error.log"
nginx http access log file: "/install/program/nginx-1.10.1/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
再次执行make &make install,成功完成。
[xiluhua@vm-xiluhua][/install/nginx-1.10.1]$ make & make install
[1] 106846
make -f objs/Makefile install
make -f objs/Makefile
make[1]: 进入目录“/install/nginx-1.10.1”
test -d '/install/program/nginx-1.10.1' || mkdir -p '/install/program/nginx-1.10.1'
test -d '/install/program/nginx-1.10.1/sbin' \|| mkdir -p '/install/program/nginx-1.10.1/sbin'
test ! -f '/install/program/nginx-1.10.1/sbin/nginx'\ || mv '/install/program/nginx-1.10.1/sbin/nginx' \'/install/program/nginx-1.10.1/sbin/nginx.old'
cp objs/nginx '/install/program/nginx-1.10.1/sbin/nginx'
make[1]: 进入目录“/install/nginx-1.10.1”
make[1]: 对“build”无需做任何事。
make[1]: 离开目录“/install/nginx-1.10.1”
test -d '/install/program/nginx-1.10.1/conf' \|| mkdir -p '/install/program/nginx-1.10.1/conf'
cp conf/koi-win '/install/program/nginx-1.10.1/conf'
cp conf/koi-utf '/install/program/nginx-1.10.1/conf'
cp conf/win-utf '/install/program/nginx-1.10.1/conf'
test -f '/install/program/nginx-1.10.1/conf/mime.types' \ || cp conf/mime.types '/install/program/nginx-1.10.1/conf'
cp conf/mime.types '/install/program/nginx-1.10.1/conf/mime.types.default'
test -f '/install/program/nginx-1.10.1/conf/fastcgi_params' \ || cp conf/fastcgi_params '/install/program/nginx-1.10.1/conf'
cp conf/fastcgi_params \ '/install/program/nginx-1.10.1/conf/fastcgi_params.default'
test -f '/install/program/nginx-1.10.1/conf/fastcgi.conf' \|| cp conf/fastcgi.conf '/install/program/nginx-1.10.1/conf'
cp conf/fastcgi.conf '/install/program/nginx-1.10.1/conf/fastcgi.conf.default'
test -f '/install/program/nginx-1.10.1/conf/uwsgi_params' \|| cp conf/uwsgi_params '/install/program/nginx-1.10.1/conf'
cp conf/uwsgi_params \ '/install/program/nginx-1.10.1/conf/uwsgi_params.default'
test -f '/install/program/nginx-1.10.1/conf/scgi_params' \|| cp conf/scgi_params '/install/program/nginx-1.10.1/conf'
cp conf/scgi_params \ '/install/program/nginx-1.10.1/conf/scgi_params.default'
test -f '/install/program/nginx-1.10.1/conf/nginx.conf' \ || cp conf/nginx.conf '/install/program/nginx-1.10.1/conf/nginx.conf'
cp conf/nginx.conf '/install/program/nginx-1.10.1/conf/nginx.conf.default'
test -d '/install/program/nginx-1.10.1/logs' \ || mkdir -p '/install/program/nginx-1.10.1/logs'
test -d '/install/program/nginx-1.10.1/logs' \ || mkdir -p '/install/program/nginx-1.10.1/logs'
test -d '/install/program/nginx-1.10.1/html' \ || cp -R html '/install/program/nginx-1.10.1'
test -d '/install/program/nginx-1.10.1/logs' \ || mkdir -p '/install/program/nginx-1.10.1/logs'
make[1]: 离开目录“/install/nginx-1.10.1”
[1]+ 完成 make
启动nginx前测试配置是否正确:
[xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ ./nginx -t #测试配置是否正确
nginx: the configuration file /install/program/nginx-1.10.1/conf/nginx.conf syntax is ok
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
nginx: configuration file /install/program/nginx-1.10.1/conf/nginx.conf test failed
这是端口号的问题,在Linux中1024以下的端口号都需要root权限才能使用,所以普通用户启动程序绑定会报出权限问题。使用sudo解决:
[xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ sudo ./nginx -t
nginx: the configuration file /install/program/nginx-1.10.1/conf/nginx.conf syntax is ok
nginx: configuration file /install/program/nginx-1.10.1/conf/nginx.conf test is successful
启动nginx,没有报错,在bash下没有报错默认就是成功
[xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ sudo ./nginx
[sudo] password for xiluhua:
验证启动状态
浏览器验证:虚拟机ip为192.168.178.132,nginx.conf文件默认监听的是80端口
192.168.178.132:80浏览器显示:无法显示此网页主机telnet 192.168.178.132 80CMD显示:无法连接到 .... 端口:80
虚拟机内ps验证:显示已经启动成功
[xiluhua@vm-xiluhua][/install/program/nginx-1.10.1/sbin]$ ps -ef|grep nginx
root 107196 1 0 23:16 ? 00:00:00 nginx: master process ./nginx
nobody 107197 107196 0 23:16 ? 00:00:00 nginx: worker process
xiluhua 107199 97234 0 23:16 pts/0 00:00:00 grep --color=auto nginx
检查系统防火墙:显示开启状态
[root@vm-xiluhua][/install]# /bin/systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 六 2016-06-11 14:01:00 CST; 1 months 18 days ago
Main PID: 1024 (firewalld)
CGroup: /system.slice/firewalld.service
└─1024 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
关闭防火墙:
[root@vm-xiluhua][/install]# /bin/systemctl stop firewalld.service
[root@vm-xiluhua][/install]# /bin/systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 六 2016-07-30 23:34:43 CST; 9s ago
Main PID: 1024 (code=exited, status=0/SUCCESS)
重新浏览器验证:403点亮成功!
403原因是由于启动使用sudo命令,等于是root启动的,但是没有在ngingx.conf中配置可以运行nginx服务器的用户,最终导致无法正常显示nginx首页。
[xiluhua@vm-xiluhua][/install/program/nginx-1.10.1]$ ps -ef|grep nginx
root 110735 1 0 00:09 ? 00:00:00 nginx: master process sbin/./nginx 启动者:root
nobody 110736 110735 0 00:09 ? 00:00:00 nginx: worker process
xiluhua 110744 97234 0 00:09 pts/0 00:00:00 grep --color=auto nginx
使用root管理员账户需要在ngingx.conf中第一行配置user节点:
user root; #启动用户配置为root
再次浏览器验证:Welcometo nginx!点亮!
到这一步,nginx安装基本完成,但使用使用管理员账户root启动nginx始终不合适,解决方案:
第一步,将nginx的监听端口(nginx.conf)由80改回8080
第二步,通过Iptables实现80到8080的转发,命令为:
vi /etc/sysconfig/iptables
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
这样,用户访问80端口和8080端口其实都到8080端口了
使用非管理员账户启动nginx,ps验证:
[xiluhua@vm-xiluhua][/install/program/nginx-1.10.1]$ ps -ef|grep nginx
xiluhua 115761 1 0 08:05 ? 00:00:00 nginx: master process sbin/./nginx
xiluhua 119548 115761 0 08:17 ? 00:00:00 nginx: worker process
xiluhua 120809 114188 0 08:35 pts/0 00:00:00 grep --color=auto nginx
浏览器验证
80端口:
8080端口:
至此,安装完美完成。