Skip to content

Nginx 迁移 OpenResty ​

标签
计算机/网络/网关/Nginx
计算机/网络/网关/OpenResty
操作系统/Debian
开发/迁移
字数
776 字
阅读时间
4 分钟
文档版本 ​
编辑者版本变更日期变更说明
Nekov1.0.02022-08-17创建

文档兼容性 ​

主体版本号文档地址(如果有)
Debian11/5.10.127-1/amd64
Nginxnginx/1.21.1NGINX Documentation
OpenRestyopenresty/1.21.4.1OpenResty® - Official Site

Debian 11 ​

安装前置软件包 ​

shell
sudo apt install -y libpcre3-dev libssl-dev perl make build-essential curl

安装导入 GPG 公钥时所需的几个依赖包(整个安装过程完成后可以随时删除它们) ​

shell
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates

导入我们的 GPG 密钥 ​

shell
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -

添加 OpenResty 官方 APT 仓库 ​

对于 x86_64 或 amd64 系统,可以使用下面的命令:

shell
export codename=`grep -Po 'VERSION="[0-9]+ \(\K[^)]+' /etc/os-release`
shell
echo "deb http://openresty.org/package/debian $codename openresty" | sudo tee /etc/apt/sources.list.d/openresty.list

而对于 arm64 或 aarch64 系统,则可以使用下面的命令:

shell
export codename=`grep -Po 'VERSION="[0-9]+ \(\K[^)]+' /etc/os-release`
shell
echo "deb http://openresty.org/package/arm64/debian $codename openresty" | sudo tee /etc/apt/sources.list.d/openresty.list

更新 APT 索引 ​

shell
sudo apt update

先停止 Nginx ​

shell
sudo systemctl stop nginx

安装 OpenResty 软件包 ​

shell
sudo apt install -y openresty openresty-opm openresty-restydoc

这个包同时也推荐安装 openresty-opm 和 openresty-restydoc 包,所以后面两个包会缺省安装上。 如果你不想自动关联安装,可以用下面方法关闭自动关联安装:

shell
sudo apt -y install --no-install-recommends openresty

停止安装好的 OpenResty ​

shell
sudo systemctl stop openresty

更新 OpenResty 的配置文件 ​

shell
sudo vim /etc/openresty/nginx.conf

可以参考我的配置:

nginx
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log notice;
pid        /usr/local/openresty/nginx/logs/nginx.pid;

events {
    worker_connections  1024;
}


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

    log_format json '{'
        '"@timestamp":"$time_iso8601",'
        '"client_ip": "$remote_addr",'
        '"request_uri": "$uri",'
        '"host":"$host",'
        '"method": "$request_method",'
        '"request": "$request",'
        '"status": "$status",'
        '"body_bytes_sent": $body_bytes_sent,'
        '"referer": "$http_referer",'
        '"ua": "$http_user_agent",'
        '"request_time": $request_time,'
        '"upstream_connect_time": $upstream_connect_time,'
        '"upstream_header_time": $upstream_header_time,'
        '"upstream_response_time": $upstream_response_time'
    '}';

    access_log  /var/log/nginx/access.log json;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/openresty/conf.d/*.conf;
    include /etc/openresty/sites-enabled/*;
}

开始迁移剩余的网站配置文件 ​

创建必要的目录

  • /etc/openresty/conf.d

  • /etc/openresty/sites-available

  • /etc/openresty/sites-enabled

  • 复制 /etc/nginx/conf.d/ 下面的文件到 /etc/openresty/conf.d

  • 复制 /etc/nginx/sites-available/ 下面的文件到 /etc/openresty/sites-available

  • 手动为每一个 /etc/openresty/sites-available 下的配置文件创建软链接

使用下面的命令检查配置文件有效性:

shell
sudo /usr/local/openresty/nginx/sbin/nginx -t

使用下面的命令重载配置文件:

shell
sudo /usr/local/openresty/nginx/sbin/nginx -s reload

服务切换 ​

准备好之后,停止 Nginx,开启 OpenResty:

shell
sudo systemctl stop nginx
sudo systemctl start openresty

更新开机自启策略 ​

shell
sudo systemctl disable nginx
sudo systemctl enable openresty

卸载 Nginx ​

shell
sudo apt remove nginx

创建新的 Nginx 二进制文件软链接 ​

shell
sudo ln -s /usr/local/openresty/nginx/sbin/nginx /usr/local/bin/nginx

其他的关联配置 ​

Logrotate ​

如果是使用软件管理器安装的 Nginx,其安装脚本可能会自动为 Nginx 配置 Logrotate 策略,且如果你在上述的 OpenResty 配置文件(/etc/openresty/nginx.conf)中修改了 pid (OpenResty 的进程 ID 文件)字段对应的值,或者说你的 OpenResty 配置文件中 pid 字段的值和原先 Nginx 配置文件(/etc/nginx/nginx.conf)中配置的 pid 字段的值不一样的话,请一定检查并在必要情况下修改 Logrotate 策略配置脚本。

贡献者

页面历史

用 ♥ 撰写