目录

Ubuntu22.04使用apt在线安装Nginx

系列 - Nginx学习

Ubuntu 22.04 使用 apt 在线安装 Nginx

Note

操作系统版本:Ubuntu 20.04.6 LTS

参考文档:Nginx 官方文档

安装必要的依赖软件,命令如下:

apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y 

导入官方 Nginx 签名密钥,以便 apt 可以验证包的真实性。

命令如下:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null  

验证下载的文件是否包含正确的密钥。

命令如下:

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

# 输出信息
pub   rsa4096 2024-05-29 [SC]
      8540A6F18833A80E9C1653A42FD21310B49F6B46
uid                      nginx signing key <signing-key-2@nginx.com>

pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

pub   rsa4096 2024-05-29 [SC]
      9E9BE90EACBCDE69FE9B204CBCDCD8A38D88A2B3
uid                      nginx signing key <signing-key-3@nginx.com>

设置稳定版本 Nginx 软件仓库。

命令如下:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
    

设置优先从自定义仓库安装。

命令如下:

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx
    

使用 apt 命令安装 Nginx,命令如下:

apt update
apt install nginx -y 

我们可以通过 systemctl 命令和 Nginx 脚本两种方式来管理 Nginx 服务,但同一时间只能使用一种(如使用 systemctl 命令启动服务后,不能使用脚本停止服务)。

1.使用systemctl启动 Nginx 服务并设置开机自启

命令如下:

systemctl start nginx && systemctl enable nginx

2.查看 Nginx 服务启动状态。

命令如下:

ss -autlp|grep nginx
ps -aux|grep nginx

使用脚本启动 Nginx 服务命令如下:

/usr/sbin/nginx 
Note

其他命令如下:

  • /usr/sbin/nginx -s stop:停止
  • /usr/sbin/nginx -s reload:重载
  • /usr/sbin/nginx -s stop && /usr/sbin/nginx:重启

检查配置文件语法格式命令如下:

nginx -t
root@nginx:~# cat /etc/nginx/nginx.conf 

# 核心区域
user  nginx; # 启动nginx的虚拟用户,安装默认创建
worker_processes  auto; # 启动workder子进程个数,auto表示以cpu内核为准

error_log  /var/log/nginx/error.log notice; # 错误日志位置以及级别
pid        /run/nginx.pid; # nginx存放pid文件位置

# 事件模块
events {
    worker_connections  1024; # 进程的最大连接数
}

# http模块
http {
    include       /etc/nginx/mime.types; # 媒体类型
    default_type  application/octet-stream; # 默认类型,如果不存在则直接下载下载
	# 定义日志格式
	# $remote_addr 客户端IP地址
	# $remote_user 登录用户(如果登录)
	# $time_local 本地时间
	# $request 请求类型
	# $status 状态码
	# $body_bytes_sent 字节大小
	# $http_referer 从哪个网址点击过来的
	# $http_user_agent 客户端的信息
	# $http_x_forwarded_for 如果有代理会记录客户端真实IP
 
    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  /var/log/nginx/access.log  main; # 访问日志存放位置及调用的日志格式

    sendfile        on; # 文件高效传输
    #tcp_nopush     on;

    keepalive_timeout  65; # 长连接的超时时间

    #gzip  on; # 是否开启压缩

    include /etc/nginx/conf.d/*.conf; # 包含的其他配置文件(将包含的所有文件内容都引用到了当前文件中)
}

主机配置文件也可直接写在主配置文件中,但是为了易读性我们一般分开写。

root@nginx:~# grep -Ev '#|^$' /etc/nginx/conf.d/default.conf 
server {
    listen       80; # 监听端口
    server_name  localhost; # 访问域名
    location / { # 用户访问localhost:80/时的配置
        root   /usr/share/nginx/html; # 网页文件根目录
        index  index.html index.htm; # 用户访问localhost:80/时默认返回页面
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}