编译安装Nginx 1.6.x-1.7.x
除了通过包管理器安装Nginx以外,还可以通过源代码编译安装的方法安装。编译安装的好处是可以自己定义模块的构成和支持,也可以加入第三方模块拓展Nginx的功能,是一种定制化比包安装更好的方式。接下来就Nginx源代码编译安装的步骤和注意事项进行说明。
在编译安装前,首先检查一下CentOS上有没有安装过的Nginx,使用命令
rpm -qa nginx
如果没有结果输出,则目前服务器系统上没有历史残留或予安装的Nginx。
建立Nginx用户以便运行服务(参数-g 为指定用户所属的组,参数-r为创建系统账户,本例中-r后的nginx才是需要创建的用户名,-g后的nginx其实是第一行创建的那个组的名字。)
groupadd -r nginx useradd -s /sbin/nologin -g nginx -r nginx
然后从nginx.org官方下载nginx编译源码,本文在撰写时官方的版本刚出稳定版是1.6.3,这里我们还是以编译1.6.2为主。通过wget获取源码包后,使用tar -zxvf解压,然后进入解压后的目录,对编译配置进行一些调整
[root@testsrv nginx-1.6.2]# ./configure \ > --prefix=/usr/local/nginx \ > --sbin-path=/usr/local/sbin/nginx \ > --conf-path=/etc/nginx/conf/nginx.conf \ > --pid-path=/usr/local/nginx/logs/nginx.pid \ > --error-log-path=/etc/nginx/logs/error.log \ > --http-log-path=/etc/nginx/logs/access.log \ > --user=nginx \ > --add-module=/tmp/nginx-rtmp-module \ > --with-http_ssl_module \ > --with-http_flv_module \ > --with-http_stub_status_module
注意上面的每行命令最后的 \ 一定要输入后再回车,否则即用剩余的默认参数编译nginx。
我们来一行行的分析上面的编译参数:
1、prefix= 这个参数用于定义nginx安装的目录位置
2、sbin-path=这个参数用于定义nginx的二进制可运行文件的位置
3、conf-path=这个显而易见就是指定nginx默认从哪个路径去读取配置文件
4、pid-path=这个用来定义nginx master的进程pid文件存放路径
5、error-log
6、http-log=这两行用于定义日志文件的存放路径
7、user= group= 用来指定运行nginx worker进程的用户和组,后期也可以在配置文件里修改
8、add-module=是用来加入视频流支持组件,不需要该功能的请不要加这条参数,关于视频流支持以后会专门出文补完教程。这个参数可以用来引入其他第三方模块的支持。
9、with-http_ssl 这个参数用来打开站点对ssl的支持
10、with-http_flv 这个参数用来提供伪流媒体文件支持
11、with-http_stub 用于给各类监控软件提取nginx运行状态数据,比如zabbix等,暂无此要求的建议先不编译这个模块。
================分割线===============
回车后,配置文件会进行予编译,最后使用
make && make install
完成编译,编译后的nginx默认没有出现在系统服务里,需要手动添加两个服务配置文件,这里直接提供下载,如果你更改过上述配置文件的路径,请你下载服务配置文件后打开并按照你的路径编辑好,保存后再上传到自己的服务器环境中。
nginx1.zip 该文件解压后上传至/tmp目录,然后
mv /tmp/nginx /etc/rc.d/init.d/ chown root:root /etc/rc.d/init.d/nginx chmod 755 /etc/rc.d/init.d/nginx chkconfig --add nginx chkconfig nginx on
nginx2.zip上面操作完后,再解压这个文件上传到/tmp目录,然后
mv /tmp/nginx /etc/sysconfig/ chown root:root /etc/sysconfig/nginx chmod 644 /etc/sysconfig/nginx sync reboot
系统重启后,就有了和包安装后一样的service nginx 一系列的服务命令操作功能。
编译参数里的各类目录,路径的指定,可以按照自己的需求来,上面的例子是我一般性在编译时使用的配置,也许并不是最合理的,请大家自行优化哦~如果你不能编译,估计是缺少开发工具组件,比如gcc这类常用的都要装哦,在这个帖子里可以找到开发工具的安装命令等实用信息。
/usr/local/nginx/sbin/nginx