派胜OA - 使用 Nginx 在 Linux 上托管 ExpressOA 3.x
重要
ExpressOA 3.x 使用全球最佳编程语言 C# 构建(.NET 跨平台、高性能、开源免费)。ExpressOA 包含自托管 Kestrel Web 服务器,Kestrel 可以单独使用,也可以与反向代理服务器一起使用。
ExpressOA 应用程序 runroot 文件夹中包含应用程序目录结构。
ExpressOA 在 Linux 上从 runroot/ExpressOA.dll 文件启动。
本文教程演示命令适用于 Ubuntu 24.04, 22.04, 20.04 和 Debian 12.x, 11.x。
在 Linux 上安装 ASP.NET Core 8.0
适用于 Ubuntu 24.04, 22.04, 20.04 和 Debian 12.x, 11.xLinux 命令sudo apt-get update sudo apt-get install -y aspnetcore-runtime-8.0
适用于 openEuler 24.03 LTS, 22.03 LTSLinux 命令sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm sudo dnf -y install aspnetcore-runtime-8.0
(1)配置 Kestrel Web 服务器。
1.1 配置 Kestrel 绑定本机端口。
打开 runroot/appsettings.json,可以看到 Kestrel 默认绑定本机地址和端口 localhost:5000。
localhost 等于 127.0.0.1,使用 Kestrel 绑定本机地址和端口,可以与反向代理(Nginx, Apache)一起使用。
你可以自定义 Kestrel 绑定的端口(建议端口范围 5000-60000),只要该端口没有占用。
1.2 验证 Kestrel 是否正常工作。
在 Linux 命令行中启动 Kestrel Web 服务器。
测试 HTTP 访问 Kestrel Web 服务器。
1.3 配置 Linux 后台服务 expressoa.service。
使用 vim 编辑 expressoa.service,把部署路径 /expressoa 修改为实际的部署路径。
1.4 启动服务 expressoa.service。
安装服务
启动服务
重启服务
停止服务
查看服务状态
打开 runroot/appsettings.json,可以看到 Kestrel 默认绑定本机地址和端口 localhost:5000。
localhost 等于 127.0.0.1,使用 Kestrel 绑定本机地址和端口,可以与反向代理(Nginx, Apache)一起使用。
你可以自定义 Kestrel 绑定的端口(建议端口范围 5000-60000),只要该端口没有占用。
"Kestrel": { "Endpoints": { "Http": { "Url": "http://localhost:5000" } } }
1.2 验证 Kestrel 是否正常工作。
在 Linux 命令行中启动 Kestrel Web 服务器。
Linux 命令
sudo dotnet /expressoa/runroot/ExpressOA.dll
测试 HTTP 访问 Kestrel Web 服务器。
Linux 命令
curl http://localhost:5000
1.3 配置 Linux 后台服务 expressoa.service。
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数 Linux 发行版的标准配置。
拷贝 runroot/expressoa.service 到 /etc/systemd/system。
Linux 命令
sudo cp /expressoa/runroot/expressoa.service /etc/systemd/system
使用 vim 编辑 expressoa.service,把部署路径 /expressoa 修改为实际的部署路径。
Linux 命令
expressoa.service
sudo vim /expressoa/runroot/expressoa.service
[Unit] Description=ExpressOA [Service] WorkingDirectory=/expressoa/runroot ExecStart=/usr/bin/dotnet /expressoa/runroot/ExpressOA.dll Restart=always RestartSec=10 SyslogIdentifier=expressoa User=root Environment=DOTNET_ROOT=/usr/lib64/dotnet TimeoutStopSec=30 [Install] WantedBy=multi-user.target
1.4 启动服务 expressoa.service。
安装服务
Linux 命令
sudo systemctl enable /etc/systemd/system/expressoa.service
启动服务
Linux 命令
sudo systemctl start expressoa
重启服务
Linux 命令
sudo systemctl restart expressoa
停止服务
Linux 命令
sudo systemctl stop expressoa
查看服务状态
Linux 命令
sudo systemctl status expressoa
(2)安装 Nginx
安装 Nginx
查看服务状态 Nginx
Linux 命令
sudo apt update sudo apt install nginx
首次启动 Nginx
sudo service nginx start
启动 Nginx
sudo systemctl start nginx
重启 Nginx
sudo systemctl restart nginx
停止 Nginx
sudo systemctl stop nginx
查看服务状态 Nginx
Linux 命令
sudo systemctl status nginx
(3)配置 Nginx 反向代理
3.1 配置 Nginx 反向代理,把外部 HTTP 请求转发到 Kestrel。
使用 vim 编辑 nginx 配置文件 /etc/nginx/sites-available/default。
下面的配置中,Nginx 将匹配的请求转发到 Kestrel 监听地址 http://127.0.0.1:5000。
使用 vim 编辑 nginx 配置文件 /etc/nginx/sites-available/default。
vim 编辑 nginx 配置文件
sudo vim /etc/nginx/sites-available/default
下面的配置中,Nginx 将匹配的请求转发到 Kestrel 监听地址 http://127.0.0.1:5000。
server { listen 80; listen 443 ssl; ssl_certificate /etc/nginx/oa.paioffice.com.crt; ssl_certificate_key /etc/nginx/oa.paioffice.com.key; server_name oa.paioffice.com; location / { proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
3.2 配置 Nginx 文件上传限制。
Nginx 默认支持上传最大 1M 文件。
使用 vim 打开 /etc/nginx/nginx.conf,增加下列代码。
请根据你的实际需求,配置文件上传限制。
Nginx 默认支持上传最大 1M 文件。
使用 vim 打开 /etc/nginx/nginx.conf,增加下列代码。
请根据你的实际需求,配置文件上传限制。
http { client_max_body_size 200M; } server { client_max_body_size 200M; }