首先配置linux环境,我这里是刚刚装好linux,所以一次性安装了一系列我需要到的环境;
yum install
pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel lua-devel
autoconf libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libidn libidn-devel libtool libtool-libs libevent-devel libevent openldap openldap-devel nss_ldap openldap-clients openldap-servers libtool-ltdl libtool-ltdl-devel bison libgcrypt php-mcrypt libmcrypt libmcrypt-devel cmake gcc gcc-c++ ncurses-devel perl-Data-Dumper libicu-devel libquadmath-devel python-devel bzip2-devel
1.到http://nginx.org/en/download.html官网下载一个nginx
2.tar -zxvf nginx-1.13.4.tar.gz 解压到/usr/local/nginx-1.13.4.tar.gz
3.cd nginx-1.13.4 进入目录
4编译安装,执行:
./configure --prefix=/usr/local/nginx-1.13
--with-pcre
--with-ipv6
--with-http_v2_module
--with-http_ssl_module
--with-http_dav_module
--with-http_sub_module
--with-http_realip_module
--with-http_addition_module
--with-http_stub_status_module
--add-module=/mnt/root/src/nginx.package/ngx_log_if # 指定不写入的某些日志
--add-module=/mnt/root/src/nginx.package/ngx_devel_kit
--add-module=/mnt/root/src/nginx.package/form-input-nginx-module # 在请求中获取POST的参数
--add-module=/mnt/root/src/nginx.package/echo-nginx-module # 在nginx中方便调试
--add-module=/mnt/root/src/nginx.package/set-misc-nginx-module # set value
--add-module=/mnt/root/src/nginx.package/lua-nginx-module # lua模块
以上编译命令中的(--add-module=)这些模块需要自行预先下载放在/mnt/root/src/nginx.package/(此路径不是必须,可自定义)文件夹里面才能编译,如果没有会报错;
根据自己需求,如果不需要(--add-module=)这些模块可以直接编译:
./configure --prefix=/usr/local/nginx-1.13
--with-pcre
--with-ipv6
--with-http_v2_module
--with-http_ssl_module
--with-http_dav_module
--with-http_sub_module
--with-http_realip_module
--with-http_addition_module
--with-http_stub_status_module
编译之后执行make && make install 安装完成!
注意如果需要编译lua-nginx-module模块:
还需要下载LuaJIT-2.1.0-beta3.tar.gz编译make && make install并安装
之后编译nginx之前先指定lua的路径
//先导入环境变量,告诉nginx去哪里找luajit
常见错误:
# /usr/local/nginx/sbin/nginx -v
启动测试:
80端口需要root账户才有权限启动;
问题一: 启动之后无法在虚拟机外访问
CentOS 7.0默认使用的是firewall作为防火墙
首先检查防火墙是否开启80端口
命令:firewall-cmd --list-ports
或者:firewall-cmd --list-all
没有开启就需要先开启
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
然后重启防火墙
更新防火墙规则:# firewall-cmd --reload
# firewall-cmd --complete-reload
两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务
之后输入命令:firewall-cmd --list-ports 查看端口有没有;
如果有了就可以访问在虚拟机外访问nginx了。
问题二: 能访问80端口,但是不能访问其他端口;
解决办法;使用哪个端口就开启哪个端口
假如是在本地开发,嫌麻烦的话可以把firewall防火墙关闭即可;
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd --state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
nginx访问403问题:
这是权限问题,设置好访问权限就行了chmod 755.......