WebServer引擎之Nginx安装

简介

  • Nginx是一款轻量级的异步框架Web服务器中间件. 可用于负载平衡器, HTTP缓存和反向代理服务器等.由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用.
  • Nginx可以部署在网络上使用FastCGI脚本,SCGI处理程序,WSGI应用服务器或Phusion Passenger模块的动态HTTP内容.
  • Nginx使用异步事件驱动(epoll)的方法来处理请求,Nginx的模块化事件驱动架构可以在高负载下提供更可预测的性能.

安装

从发行版仓库安装

Nginx在各个Linux发行版官方仓库中均有提供,没有特殊需求的情况下,可以直接从官方仓库安装.以debian buster为例:

 # 刷新软件仓库
sudo apt update
# 通过apt show或者apt policy查看当前仓库中nginx的版本
# 目前debian buster中nginx主版本为: 1.14.2-2+deb10u1 bpo版本为: 1.14.1-1~bpo9+1
base@base1:~$ sudo apt show nginx  
Package: nginx
Version: 1.14.2-2+deb10u1
Priority: optional
.....

# 安装
sudo apt install nginx nginx-full
# 安装完成后配置文件在 /etc/nginx.conf 使用 systemctl start nginx 启动nginx即可

这种方式易于安全并且将后续的安全更新等相关操作交给发行版官方仓库比较省事但由于安装的是发行版预构建的二进制程序打包的.
如果需要添加或移除某些编译参数或者添加模块, 需要使用apt source把源码拉到本地重新构建, 较为麻烦. 如果需要特定版本或者定制编译参数, 需要单独进行编译安装.

编译安装

  1. 前往nginx官方下载源代码并解压.
# 进入当前用户家目录, 创建nginx_tarball文件夹并进入
cd && mkdir -p nginx_tarball && cd nginx_tarball
# 下载Nginx 1.18.0的源码
wget -O nginx_tarball.tar.gz -c https://nginx.org/download/nginx-1.18.0.tar.gz
# 解压
tar -zxf nginx_tarball.tar.gz
# 查看源码目录
tree nginx-1.18.0 -L 1

nginx-1.18.0
  ├── auto
  ├── CHANGES
  ├── CHANGES.ru
  ├── conf
  ├── configure
  ├── contrib
  ├── html
  ├── LICENSE
  ├── man
  ├── README
  └── src
  1. 安装编译工具链和依赖
sudo apt install -y build-essential git libpcre3 \
     libpcre3-dev openssl libssl-dev zlibc zlib1g \
     zlib1g-dev zlib1g-dbg libxml2 libxml2-dev \
     libxml2-utils libxslt1.1 libxslt1-dev
  1. 编译安装
# 创建用于运行Nginx的用户
useradd -u 1005 -s /sbin/nologin www
# 设置编译参数
./configure --prefix=/opt/nginx --sbin-path=/opt/nginx/sbin/nginx \
--modules-path=/opt/nginx/modules --conf-path=/opt/nginx/conf/nginx.conf \
--error-log-path=/opt/nginx/logs/error.log --http-log-path=/opt/nginx/logs/access.log \
--pid-path=/opt/nginx/run/nginx.pid --lock-path=/opt/nginx/run/nginx.lock \
--user=www --group=www --build=AENO_Custom \
--http-client-body-temp-path=/opt/nginx/tmp/client_body_temp \
--http-fastcgi-temp-path=/opt/nginx/tmp/fastcgi_temp \
--http-proxy-temp-path=/opt/nginx/tmp/proxy_temp \
--http-scgi-temp-path=/opt/nginx/tmp/scgi_temp \
--http-uwsgi-temp-path=/opt/nginx/tmp/uwsgi_temp \
--with-openssl-opt=enable-ec_nistp_64_gcc_128 --with-openssl-opt=no-nextprotoneg \
--with-openssl-opt=no-weak-ssl-ciphers --with-openssl-opt=no-ssl3 \
--with-pcre-jit --with-compat --with-file-aio --with-threads \
--with-http_addition_module --with-http_auth_request_module --with-http_dav_module \
--with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module \
--with-http_mp4_module --with-http_random_index_module --with-http_realip_module \
--with-http_slice_module --with-http_ssl_module --with-http_sub_module \
--with-http_stub_status_module --with-http_v2_module --with-http_secure_link_module \
--with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module \
--with-stream_ssl_module --with-stream_ssl_preread_module --with-debug \
--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security-Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'

# 编译安装
sudo make -j$(nproc) && sudo make install

编译选项的含义请结合官方文档configure --help命令了解
需要手动创建编译参数中指定的/opt/nginx/tmp的几个文件夹

  1. 创建服务
cat /etc/systemd/system/nginx.service
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/opt/nginx/run/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/opt/nginx/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/opt/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /opt/nginx/run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target
Alias=nginxd.service

# 启动服务
sudo systemctl start nginx
# 开机自启
sudo systemctl enable nginx
  1. 测试访问127.0.0.1:80查看访问结果, 执行/opt/nginx/sbin/nginx -v 查看Nginx版本.
# Debian   Linux   WebServer  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×