Nginx安装


1、安装

1.1 下载源码

打开下载地址:http://nginx.org/en/download.html

找到稳定版Stable version,拷贝一下源码地址,然后下载、解压

$ cd /usr/localsoft
$ sudo mkdir nginx
$ cd /usr/localsoft/nginx
$ sudo wget http://nginx.org/download/nginx-1.20.1.tar.gz
$ sudo tar zxvf nginx-1.20.1.tar.gz

1.2 修改源码

修改src/http/ngx_http_header_filter_module.c

$ sudo vim src/http/ngx_http_header_filter_module.c

将其中的内容

static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;

修改为

static u_char ngx_http_server_string[] = "Server: huahansoft" CRLF;
static u_char ngx_http_server_full_string[] = "Server: huahansoft" CRLF;
static u_char ngx_http_server_build_string[] = "Server: huahansoft" CRLF;

修改src/core/nginx.h

$ sudo vim src/core/nginx.h

将下边的内容

define NGINX_VERSION      "1.16.0"
    #define NGINX_VER          "NGINX/" NGINX_VERSION
    #NGINX_VAR                 "NGINX"

修改

#define NGINX_VERSION      "1.16.0"
       #define NGINX_VER          "huahansoft/" NGINX_VERSION
       #NGINX_VAR                 "huahansoft"

1.3 下载实时压缩图片库

# 下载实时压缩图片库
$ sudo wget https://github.com/oupula/ngx_image_thumb/archive/master.zip
# 注意:这个是直接从github官网上下载的,如果服务器在国外的话,应该会很快就可以下载下来,如果是国内的服务器,那么需要换一个镜像
$ sudo wget https://hub.fastgit.org/oupula/ngx_image_thumb/archive/master.zip

# 解压
$ sudo unzip master.zip
# 拷贝文件到nginx安装包中
$ sudo cp -r /usr/localsoft/nginx/ngx_image_thumb-master /usr/localsoft/nginx/nginx-1.20.1

上边是把实时压缩裤拷贝到了nginx的源码包中,后边会当一个模块来用,用这个模块之前,需要先确保下边的命令执行过了

$ sudo apt-get install build-essential m4 autoconf automake make 
$ sudo apt-get install libgd2-noxpm-dev libcurl4-openssl-dev libpcre3-dev

1.4 编译安装

# 检查编译环境
$ cd nginx-1.20.1
$ sudo ./configure --prefix=/usr/local/nginx-1.20.1 --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-stream --with-mail=dynamic --add-module=./ngx_image_thumb-master

这个里边有可能会缺少一些包

# ./configure: error: the HTTP rewrite module requires the PCRE library
$ sudo apt-get install libpcre3 libpcre3-dev

# ./configure: error: the HTTP image filter module requires the GD library.
$ sudo apt-get install -y libgd-dev

configrue成功后,执行安装即可

$ sudo make

# 这个过程中可能会出现 ./ngx_image_thumb-master/ngx_http_image_module.c:34:10: fatal error: curl/curl.h: No such file or directory
# 安装缺少的库即可
$ sudo apt-get install libcurl4-openssl-dev

$ sudo make install

1.5 测试程序

安装完成后,会在/usr/local/nginx-1.20.1文件夹中,执行下边的命令启动nginx

$ sudo /usr/local/nginx-1.20.1/sbin/nginx

如果没有返回错误信息,执行下边的两个命令

$ curl http://localhost   # 查看首页信息

$ curl -I localhost   # 查看主机头信息,看看我们上边修改的Server 是否是huahansoft

没有问题以后,记得停止程序,要不后边的服务创建不成功

$ sudo /usr/local/nginx-1.20.1/sbin/nginx -s stop

1.6 创建nginx启动用户

$ sudo groupadd nginx
$ sudo useradd -s /sbin/nologin -g nginx nginx        #-s:不能使用该账号登录系统
$ id nginx                                #查看刚才建立的nginx用户是否成功

# 设置/usr/local/nginx-1.20.1目录为nginx用户

$ sudo chown -R nginx.nginx /usr/local/nginx-1.20.1

1.7 创建服务

$ sudo touch /etc/systemd/system/nginx-1.20.1.service
$ sudo vim /etc/systemd/system/nginx-1.20.1.service

将下边的内容拷贝到nginx-1.20.1.service文件中

[Unit]
Description=nginx -high performance web server

[Service]
Type=forking
ExecStart=/usr/local/nginx-1.20.1/sbin/nginx -c /usr/local/nginx-1.20.1/conf/nginx.conf
ExecReload=/usr/local/nginx-1.20.1/sbin/nginx -s reload
ExecStop=/usr/local/nginx-1.20.1/sbin/nginx -s stop
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

服务管理

#启动nginx服务
$ sudo systemctl start nginx-1.20.1.service

# 设置开机启动
$ sudo systemctl enable nginx-1.20.1.service

#禁用开机自启动
$ sudo systemctl disable nginx-1.20.1.service

#查看服务状态
$ sudo systemctl status nginx-1.20.1.service

#重启服务
$ sudo systemctl restart nginx-1.20.1.service

#查看所有服务信息
$ sudo systemctl list-units --type=service

2 修改配置文件

2.1 修改进程数量

nginx默认是一个主进程,多个工作进程的模式,为了使nginx性能更高,我们需要修改工作进程数量

$ cd /usr/local/nginx-1.20.1/conf
$ sudo vim nginx.conf

找到 worker_processes 这个选项,默认是1个工作进程,这个值一般的是跟服务器的CPU的物理核心数一致

# 查看CPU核数
$ cat /proc/cpuinfo

执行过这个命令后,里边会有一个cpu cores的选项,这个就是CPU核心个数

如果是8的话,修改成8即可

worker_processes  8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

上边我改成8了,下边那个是为了解决同样一个连接,每次请求过来,尽量能走同样一个CPU的内核,这样的话,速度会快很多。

2.2 修改pid和events

pid        logs/nginx-1.20.1.pid;

events {
    worker_connections  1024;
}

把pid前边的#放开,是为了将来在进程中查看的时候,更方便查看

下边那个注意了,这个选项的意思是每个工作进程能处理几个连接,默认是1024,由于上边我们设置的工作进程的数量是8,那么总的能处理的连接数就是1024*8

这个根据实际需要进行修改就可以,没有特殊情况,默认就是1024就可以了。

2.3 修改支持多配置文件和开启gzip

配置server的时候,如果全在这一个文件中配置,会显得这个文件比较臃肿,所以我们一般是在这个配置文件中,导入另外一个文件夹,然后将具体的server的配置以不同的文件的形式都放到那个文件中

#keepalive_timeout  0;
keepalive_timeout  65;

gzip  on;
gzip_http_version 1.0;
gzip_disable 'MSIE[1-6].';
gzip_types text/css text/javascript application/javascript image/jpeg image/png image/gif;
gzip_buffers 4 8k;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_vary on;
gzip_proxied off;

include /usr/local/nginx-1.18.0/conf/webhosts/*.conf;

看清楚位置,这个是在http节点中配置的,上边的include就是我们自己指定的文件夹,*的意思是加载配置文件的时候,把webhosts这个文件夹中的所有文件都读取出来。

include上边是gzip的配置,这个是固定写法,加上就可以了。

results matching ""

    No results matching ""