源码编译Nginx

源码编译Nginx

一、检查

安装 nginx 之前,首先要检查安装 pcre(正则表达式库)、pcre-devel 和 libevent(提高应用程序的性能)、make 以及 openssl、openssl-devel

shell># rpm -qa | grep pcre*    
shell># rpm -qa | grep libevent*
shell># rpm -qa | grep openssl* //

如果缺少以上任何一种,可用 yum -y install 安装

二、安装

1、下载和配置

shell># cd /usr/local //进入目录
shell># wget http://nginx.org/download/nginx-1.15.6.tar.gz //下载
shell># tar -zxvf nginx-1.15.6.tar.gz //解压
shell># cd nginx-1.15.6 //进入目录
shell># ./configure --prefix=/usr/local/nginx    //默认就是这个目录   可以使用./configure直接执行

其他参数说明:(供参考)

./configure \
--prefix=/usr/local/nginx \  # 指明安装目录
--user=www \              # 默认的 nginx 使用的用户
--group=www \              # 默认组
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_image_filter_module \  # 这个还需要安装gd库 yum -y install gd-devel
--with-pcre \
--http-client-body-temp-path=/usr/local/nginx/tmp/client_body_temp \
--http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi_temp \
--http-proxy-temp-path=/usr/local/nginx/tmp/proxy_temp \
--http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/tmp/scgi_temp

2、make

报错如下:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.

说是缺少pcre

这里如果执行 yum install pcre 是无效果的,会显示已加载插件,无需任何处理

要执行 yum install pcre pcre-devel

3、make install

在/usr/local目录下会有nginx


源码编译Nginx_第1张图片
1564467151778.png

安装完成!

三、配置nginx

shell># cd /usr/local/nginx/conf
shell># vi nginx.conf   //修改配置文件

将server {}里的location 的root 配置你自己想要的目录,我习惯把项目放/var/www

location / {
   root   /var/www;
   index  index.html index.htm index.php; //追加 index.php
}

在http{}里面引入其他虚拟机的配置文件
include otherconf/*.conf; //在otherconf下的所有后缀名为.conf的文件
添加以下代码可以解决跨域请求icon图标出不来的问题

add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;

然后保存

在/usr/local/nginx/conf 目录下 mkdir otherconf ,将刚刚在配置文件引入的目录建立好 在otherconf目录下放置如下虚拟机配置----仅供参考

shell>#  vi  server1.conf

内容如下:

server {
 listen       7000;                                      #监听的端口-----根据需要修改
 server_name  localhost; //域名
 root /var/www/test/public;        #项目的根目录 --这里的使用的是laravel项目-----根据需要修改
​
 location / {
 index  index.html index.htm index.php;
 try_files $uri $uri/ /index.php?$query_string;
​
 }
 error_page   500 502 503 504  /50x.html;
 location ~ \.php$ {
 #fastcgi_pass   unix:/var/run/php/php7.2-fpm.sock;      #使用fpm
 fastcgi_pass   127.0.0.1:7010;                           #可把fpm切换为ip:端口
 fastcgi_index  index.php;
 include fastcgi.conf;
 #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 #include        fastcgi_params;
 }
}
  • 启动nginx /usr/local/nginx/sbin/nginx

  • 重新加载nginx /usr/local/nginx/sbin/nginx -s reload

  • 停止ngxin /usr/local/nginx/sbin/nginx -s stop

可用 ps -ef | grep nginx 查看是否开启

四、将ngxin安装为服务

shell># vim /etc/rc.d/init.d/nginx

内容如下(特别是 chkconfigdescription那两行代码,一定要写,否则无法加入服务):

#!/bin/sh
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
start() {
 echo 'Starting Nginx ...'
 /usr/local/nginx/sbin/nginx > /dev/null 2>&1 &
}
​
stop() {
 echo 'Stoping Nginx ...'
 /usr/local/nginx/sbin/nginx -s stop > /dev/null 2>&1 &
}
​
reload() {
 echo 'Reloading Nginx ...'
 /usr/local/nginx/sbin/nginx -s reload
}
​
if [ $# -ne 1 ]
 then
 echo 'please input one params like start|restart|stop|reload'
 exit 1
fi
​
case "$1" in
 'start')
 start
 ;;

 'stop')
 stop
 ;;

 'restart')
 stop
 sleep 2
 start
 ;;

 'reload')
 reload
 ;;

 '*')
 echo 'please input one params like start|restart|stop|reload'
 ;;
esac

保存之后执行以下命令

shell># chmod a+x /etc/rc.d/init.d/nginx   //配置权限并增加到开机启动
shell># chkconfig --add nginx         //

以后就可以直接用以下指令来完成日常管理了:

shell># service nginx start  //启动
shell># service nginx reload  //重载
shell># service nginx stop //停止

作者@发胖的向日葵

你可能感兴趣的:(源码编译Nginx)