# 如何在Linux+Jexus中發布和部署
## 前言
在當今的互聯網時代,Linux服務器因其穩定性、安全性和開源特性成為企業級應用部署的首選平臺。而Jexus作為一款高性能的國產Web服務器,特別適合.NET Core應用的部署。本文將詳細介紹如何在Linux系統中使用Jexus進行應用的發布和部署。
## 一、環境準備
### 1.1 系統要求
- **操作系統**:Ubuntu 20.04 LTS/CentOS 7+(本文以Ubuntu為例)
- **運行時環境**:.NET Core 3.1/5.0/6.0
- **權限要求**:root或sudo權限
### 1.2 基礎環境安裝
```bash
# 更新系統包
sudo apt update && sudo apt upgrade -y
# 安裝基礎工具
sudo apt install -y curl wget git unzip
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-sdk-6.0
dotnet --version
# 應輸出類似:6.0.301
curl https://jexus.org/release/x64/install.sh|sudo sh
jws -v
# 應輸出類似:Jexus-5.8.3
在開發機上執行:
dotnet publish -c Release -r linux-x64 --self-contained false
/var/www/
└── myapp/
├── app/
│ ├── app.dll
│ ├── appsettings.json
│ └── wwwroot/
└── logs/
/etc/jexus/jws.conf
sudo nano /etc/jexus/siteconf/myapp
示例配置:
port=80
root=/ /var/www/myapp/app/wwwroot
hosts=myapp.com,*.myapp.com
apphost=/
approot=/var/www/myapp/app
apptype=dotnet
command=dotnet /var/www/myapp/app/app.dll
推薦使用rsync:
rsync -avz ./publish/ user@server:/var/www/myapp/app
sudo chown -R www-data:www-data /var/www/myapp
sudo chmod -R 750 /var/www/myapp
# 啟動站點
sudo jws start myapp
# 查看狀態
sudo jws status
# 重啟服務
sudo jws restart
sudo apt install certbot python3-certbot-nginx
sudo certbot certonly --webroot -w /var/www/myapp/app/wwwroot -d myapp.com
port=443
certFile=/etc/letsencrypt/live/myapp.com/fullchain.pem
certKey=/etc/letsencrypt/live/myapp.com/privkey.pem
workers=4
worker_affinity=0 1 2 3
location=/
{
cache=10m
}
errpage=404 /error/404.html
/var/log/jexus/default/error.log
# 檢查SELinux狀態
sestatus
# 臨時關閉
sudo setenforce 0
sudo netstat -tulnp | grep :80
maxworker=100
maxconn=10000
在appsettings.json中添加:
"Kestrel": {
"Limits": {
"MaxConcurrentConnections": 10000
}
}
示例post-receive腳本:
#!/bin/bash
TARGET="/var/www/myapp/app"
GIT_DIR="/var/repo/myapp.git"
mkdir -p $TARGET
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
cd $TARGET && dotnet publish -c Release
sudo jws restart myapp
GitLab CI示例:
deploy_prod:
stage: deploy
script:
- rsync -avz ./publish/ prod-server:/var/www/myapp/app
- ssh prod-server "sudo jws restart myapp"
only:
- master
/var/log/jexus/default/access.log
使用systemd:
[Unit]
Description=MyApp Service
[Service]
WorkingDirectory=/var/www/myapp/app
ExecStart=/usr/bin/dotnet /var/www/myapp/app/app.dll
Restart=always
RestartSec=10
SyslogIdentifier=myapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
通過本文的詳細指導,您應該已經掌握了在Linux系統上使用Jexus部署.NET Core應用的完整流程。從環境準備到高級配置,從基礎部署到性能優化,Jexus以其輕量級和高性能的特點,成為.NET Core應用在Linux平臺部署的優質選擇。
最佳實踐提示:建議在正式環境部署前,先在測試環境驗證所有配置,并建立完整的回滾機制。
命令 | 說明 |
---|---|
jws start sitename |
啟動站點 |
jws stop sitename |
停止站點 |
jws -v |
查看版本 |
jws -h |
查看幫助 |
”`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。