使用 Apache 在 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.04Debian 12.x, 11.x

在 Linux 上安装 ASP.NET Core 8.0

适用于 Ubuntu 24.04, 22.04, 20.04Debian 12.x, 11.x
Linux 命令
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-8.0
适用于 openEuler 24.03 LTS, 22.03 LTS
Linux 命令
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),只要该端口没有占用。
"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 命令
sudo vim /expressoa/runroot/expressoa.service
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)安装 Apache

安装 Apache
Linux 命令
sudo apt update
sudo apt install apache2

首次启动 Apache
sudo service apache2 start

启动 Apache
sudo systemctl start apache2

重启 Apache
sudo systemctl restart apache2

停止 Apache
sudo systemctl stop apache2

查看服务状态 Apache
Linux 命令
sudo systemctl status apache2

(3)配置 Apache 反向代理

Apache 的配置文件位于 /etc/httpd/conf.d/ 目录内。
在 Ubuntu 上的 Apache 中,所有虚拟主机配置文件都存储在 /etc/apache2/sites-available 中。
除了 /etc/httpd/conf.modules.d/ 中的模块配置文件外,将对任何带 .conf 扩展名的文件按字母顺序进行处理。
配置 Apache 反向代理,把外部 HTTP 请求转发到 Kestrel 监听地址 http://127.0.0.1:5000/ 。
为应用创建名为 express.conf 的配置文件:
Apache 配置文件
VirtualHost *:*
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
/VirtualHost
VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ServerName office.paioffice.com
    ServerAlias *.paicore.com
    ErrorLog ${APACHE_LOG_DIR}express-error.log
    CustomLog ${APACHE_LOG_DIR}express-access.log common
/VirtualHost



© 2024 长春派胜科技有限公司 版权所有
吉公网安备22017202000417号