nginx 的离线编译安装

下载

官网站点下载nginx安装包,下载最新稳定版(Stable version)。
或者访问站点下载rpm版本。
本文以 CentOS7 使用 rpm 版本安装为例。

安装

安装nginx软件的方式一般分三种方法,对于 yumrpm 这两种方式安装均需要 root 用户,因为默认写入的文件目录普通用户没有权限。这两种方式也是最为简单的方式,其中 yum 需要你的机器可以联网,rpm 方式不需要机器联网,但是你需要下载和系统对应的rpm文件。这两种方式资料很多也很简单,本文不做赘述,如有需要请自行查阅资料。

注意:如果使用root用户安装和启动nginx,请把nginx配置文件第一行的修改为 user nobody 意思是让nginx 以 nobody 用户运行,nobody是Linux一个不能登录的默认用户,这样可以避免一定的安全问题。

本文重点针对异常环境(非root用户并且不能联网的服务器)的安装方法进行说明。

编译环境的准备

gcc 编译环境

  • 在一个可以联网的,和目标服务器操作系统版本一致的服务器上进行编译生成文件包(当然了如果你直接在不能联网的机器上直接捣鼓也是可以的,只是离线安装 gcc 会非常麻烦浪费时间,所以随便找一个可以联网虚拟机更简单)。
  • 如果你的目标服务器是可以联网的,请直接按照下文步骤操作。
  • 如果你的目标服务器自带 gcc 编译环境(命令 gcc --version 判断系统是否已经安装),请直接按照下文步骤操作。

相关文件包

编译安装

在 gcc 服务器上编译

首先确定你目标服务器的 非root用户名,本文的非root用户名以 shanhy 为例,具体的名字随意。
1、创建用户并设置密码
使用root用户创建用户并设置密码,如果你已经被分配好一个用户,则跳过该步

useradd shanhy
passwd shanhy

2、安装gcc编译环境
使用root用户安装gcc

yum install -y gcc-c++

3、切换到非root用户进行编译和后续操作
切换用户

su - nginx

解压压缩包

tar -xzvf nginx-1.18.0.tar.gz
tar -xzvf openssl-1.0.2s.tar.gz
tar -xzvf pcre-8.44.tar.gz
tar -xzvf zlib-1.2.11.tar.gz

配置

cd nginx-1.18.0
./configure \
    --prefix=/home/shanhy/nginx \
    --with-pcre=../pcre-8.44 \
    --with-zlib=../zlib-1.2.11 \
    --with-openssl=../openssl-1.0.2s \
    --user=shanhy \
    --group=shanhy \
    --with-file-aio \
    --with-http_v2_module \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_sub_module \
    --with-http_gzip_static_module \
    --with-http_stub_status_module

其中 --prefix 设定你 nginx 最终需要安装到的目录,这个目录一定要和你最后需要拷贝到的目标服务器上计划放置的目录一致,因为编译后这种配置是默认打入二进制文件中的不便修改。--user--group 使用你的非root用户名和其所在的用户组名称,下面是查看用户所在用户组的方法(示例):
[shanhy@cib-server1 sbin]$ cat /etc/passwd | grep shanhy
shanhy:x:1002:1003::/home/shanhy:/bin/bash
[shanhy@cib-server1 sbin]$ cat /etc/group | grep 1003
shanhy:x:1003:
更多参数请查阅相关资料。

编译

make && make install

安装

make install

安装后 --prefix 指定的目录中会出现包括但不限于 conf|html|sbin|logs 几个目录。

使用root用户授权

非root用户运行nginx不能监听1024以下的端口号,因为我们的nginx需要使用 80和443 端口,所以需要使用root用户授权。当然如果你nginx使用大端口你可以跳过这步。

su - root
cd /home/shanhy/nginx/sbin
chown root:root nginx
chmod 755 nginx
chmod u+s nginx

启动服务

使用非root用户,进入目录并启动服务

su - shanhy
cd /home/shanhy/nginx
./sbin/nginx

打开浏览器访问 http://{服务器IP} 正常应该可以看到 nginx 的默认页。

常用管理命令:
查看版本:nginx –V
停止服务:nginx -s stop 或者是通过 kill nginx 进程号
测试配置:nginx -t
刷新配置:nginx -s reload

打包文件发送到目标服务器部署

  • 将编译后的文件包进行打包,发送到纯内网的目标服务器上并解压。
  • 在目标服务器上使用 root 用户为 nginx 文件授权。
  • 启动服务。

至此,服务安装结束。


配置

nginx 的默认的主配置文件为 conf/nginx.conf,我们一般创建一个 conf.d 文件夹这样的方式来区分主配置文件和子配置文件,conf.d 中存放多个子配置文件:

使用如下配置文件替换默认配置文件:

#user  nobody;
worker_processes  1;

error_log  logs/error.log warn;
pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       ./mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include ./conf.d/*.conf;
}

注意:如果你的nginx使用的是root用户安装和启动的,配置文件的第一行 user nobody 请去掉前面的 # 注释,这个在上文中已做说明。

然后创建目录 conf/conf.d,将如下文件 default.conf 放入其中

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

配置文件如果有变动修改,修改后先使用 sbin/nginx -t 测试语法然后再 sbin/nginx -s reload 刷新配置即可。


(END)

猜你喜欢

转载自blog.csdn.net/catoop/article/details/107660513