概述
部分内容参考博客: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=<path> 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-devel
yum 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 80
CMD显示:无法连接到 .... 端口: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
再次浏览器验证:Welcome to 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端口:
至此,安装完美完成。
Thanks for reading!
最后
以上就是欢喜翅膀为你收集整理的nginx安装的全部内容,希望文章能够帮你解决nginx安装所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复