日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【干货特供】dotNet core 应用部署至 centos(超详解附截图)

發布時間:2024/9/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【干货特供】dotNet core 应用部署至 centos(超详解附截图) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章來源:公眾號-智能化IT系統。

閱讀目錄

  • 需要安裝的插件以及支撐架構

  • 安裝dotnetSDK

  • 安裝jexus

  • 安裝supervisord

  • 遇到問題匯總

  • 注意事項、擴展延伸


需要安裝的插件以及支撐架構

1.dotnetSDK

dotnet 相關命令是屬于 .NET Core command-line (CLI) 的一部分,Microsoft 為我們提供了這個命令行工具以供我們在開發程序中使用,它主要用來進行對代碼的編譯、NuGet 包的管理、程序的運行、測試等等。

2.jexus

Jexus 是Linux平臺上 的一款免費的ASP.NET WEB服務器。它是 Linux、Unix、FreeBSD等非Windows系統架設 ASP.NET WEB 服務器的核心程序,具備反向代理、入侵檢測等重要功能。擁有IIS和其它Web服務器所不具備的高度的安全性

3.supervisord

supervisord 是用Python實現的一款非常實用的進程管理工具,在批量服務化管理時特別有效。可以將非Daemon的應用轉為Daemon程序。


安裝dotNetSDK

執行命令

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

sudo yum update?

sudo yum install libunwind libicu?

sudo yum install dotnet-sdk-2.1.200

?

安裝對應的dotnet運行時,這次開發用到的是?2.0.6參考地址:

https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-2.0.6

執行命令

sudo yum install dotnet-runtime-2.0.6


安裝Jexus

curl https://jexus.org/release/x64/install.sh|sh

cd /usr/jexus/siteconf?

cp default lottery??

#lottery是配置名稱,不同網站名稱不同?

vim lottery

修改的內容參考:

port=80?

root=/ /dotnet/webAPP/admin1.lottery.com/?

hosts=*,admin2.lottery.com ? ?#OR your.com,*.your.com?

# addr=0.0.0.0?

# CheckQuery=false?

NoLog=true??

AppHost={CmdLine=/dotnet/webAPP/admin1.lottery.com/Lottery.WEB.dll;AppRoot=/dotnet/webAPP/admin1.lottery.com;Port=5001}

#這一行數據可以不管他,配置https時候用到

# UseHttps=true

# ssl.certificate=/x/xxx.crt ?#or pem

# ssl.certificatekey=/x/xxx.key

# ssl.protocol=TLSv1.0 ? ?# TLSv1.1 or ?TLSv1.2...

# ssl.ciphers=

重啟讀取配置文件

sh /usr/jexus/jws restart

重啟讀取配置文件之后,本地機器做好host文件映射即可通過域名方式訪問該站點

設置jexus開機自啟動

參考地址:http://www.bubuko.com/infodetail-1295747.html

cd /etc/init.d?

vim jws

編輯如下:

#!/bin/bash ??

#chkconfig: 2345 80 05

#description:jws?

#

. /etc/rc.d/init.d/functions

case "$1" in

start)

??echo "Jexus Start.."

??/usr/jexus/jws start

??;;

?stop)

??echo "Jexus Stop.."

??/usr/jexus/jws stop

??;;

?restart)

??echo "Jexus Restart"

??/usr/jexus/jws restart

??;;

?status)

??/usr/jexus/jws status

??;;*)

??exit 1

??;;

?esac

?exit $RETVAL

添加權限

chmod 766 jws

添加服務

chkconfig --add jws


安裝Supervisord

參考地址:https://www.cnblogs.com/hobinly/p/7382038.html

yum install python-setuptools?

easy_install supervisor

配置supervisor

etc下創建目錄,并賦權限

mkdir -m 700 -p /etc/supervisor

在目錄“?/etc/supervisor”下創建配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改配置文件

vim /etc/supervisor/supervisord.conf

在文件末尾添加,注意首尾需無空格,需頂格

[include]?

files=/etc/supervisor/conf.d/*.conf

在目錄/etc/supervisor”下創建dotnet core?進程配置文件存放目錄“conf.d

mkdir -m 700 /etc/supervisor/conf.d

創建進程配置文件

vim /etc/supervisor/conf.d/lottery.conf

編輯內容:

[program:Lottery.WEB]?

command=/bin/bash -c "dotnet Lottery.WEB.dll"

directory=/dotnet/webAPP/admin1.lottery.com/

stderr_logfile=/var/log/Lottery.error.log

stdout_logfile=/var/log/Lottery.stdout.log

environment=ASPNETCORE_ENVIRONMENT=Production?

user=root?

stopsignal=INT?

autostart=true

autorestart=true

startsecs=1

具體參數說明如下:

[program:Lottery.WEB] ;顯示名稱

command=/bin/bash -c "dotnet MyDotNetName.dll" ?;運行命令,啟動dotnet進程

directory=/usr/PublishOutput/ ? ;MyDotNetName目錄

stderr_logfile=/var/log/Lottery.error.log ?;錯誤日志文件

stdout_logfile=/var/log/Lottery.stdout.log ?;日志文件

environment=ASPNETCORE_ENVIRONMENT=Production ?;進程環境變量

user=root ? ;進程執行用戶

autostart=true ?;自動啟動 autorestart=true ? ;是否自動重啟

startsecs=1 ? ? ;自動重啟間隔時間

備注command=/bin/bash -c "dotnet Lottery.WEB.dll"

可以改成?command=dotnet /dotnet/webAPP/admin1.lottery.com/dotnet Lottery.WEB.dll


創建supervisor?自啟動服務

vim /etc/systemd/system/supervisor.service

編輯內容:

[Unit]?

Description=supervisor?

[Service]?

Type=forking?

ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf?

ExecStop=/usr/bin/supervisorctl shutdown?

ExecReload=/usr/bin/supervisorctl reload?

KillMode=process?

Restart=on-failure

RestartSec=42s

[Install]?

WantedBy=multi-user.target

使配置生效

systemctl daemon-reload

設置服務開機啟動,即設置enable

systemctl enable supervisor.service

啟動服務

systemctl start supervisor.service

驗證dotnet進程是否啟動,使用命令“ps -ef | grep dotnet”查看dotnet?是否運行

ps -ef | grep dotnet

root ? ? ?1549 ?2529 ?0 17:17 pts/0 ? ?00:00:00 grep --color=auto dotnet

root ? ? 27795 27764 ?0 17:07 ? ? ? ? ?00:00:02 dotnet Lottery.WEB.dll

supervisor遠程管理

使用命令vim /etc/supervisor/supervisord.conf修改配置文件,如下設置

[inet_http_server]

port=192.168.1.71:9001 ? ? ?;ip 加端口?

username=admin ? ? ? ? ? ? ? ;登陸賬號,可以不設?

password=123456 ? ? ? ? ? ? ?;登陸賬戶,可以不設

重啟服務,就可以訪問了,注意防火墻是否對端口9001開放。

也可以設置成

[inet_http_server]

port=*:9001

username=admin? ? ? ? ? ? ? ?;登陸賬號,可以不設

password=123456 ? ? ? ? ? ? ?;登陸賬戶,可以不設



問題匯總

圖片驗證碼報錯

解決:

yum install libgdiplus-devel

注意:

yum install libgdiplus?后,在centos7?下,程序并不能運行成功還是報錯,查看libgdiplus安裝情況

rpm -qa |grep libgdiplus

rpm ?-ql libgdiplus-2.10-9.el7.x86_64

/usr/lib64下缺少libgdiplus.so文件

Centos7?需要通過安裝libgdiplus-devel來解決

yum install autoconf automake libtool

yum install freetype-devel fontconfig libXft-devel

yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel

yum install glib2-devel cairo-devel

git clone https://github.com/mono/libgdiplus

cd libgdiplus

./autogen.sh

make

make install

cd /usr/lib64/

ln -s /usr/local/lib/libgdiplus.so gdiplus.dll

錯誤一:

type init 錯誤。提示找不到libgdiplus組件

Make solution 1:

ln -s /usr/local/lib/libgdiplus.so /usr/lib64/libgdiplus.so

ln -s /usr/local/lib/libgdiplus.so /usr/libgdiplus.so


驗證碼亂碼問題:

如果驗證碼亂碼,請確認生成驗證碼的字體庫是否存在服務器中


注意事項、擴展延伸

關于更新應用

Dotnet程序在運行當中,如果需要更新 dotnetCore應用,將新打包的應用直接覆蓋到部署的路徑下,在從supervisord 9001端口中重啟指定的應用,或者在服務器上執行命令

supervisorctl -c /etc/supervisor/supervisord.conf restart Lottery.WEB


關于dotnetCore WEB應用設置不同的端口

修改Program.cs文件

public static IWebHost BuildWebHost(string[] args) =>

WebHost.CreateDefaultBuilder(args)

.UseContentRoot(Directory.GetCurrentDirectory())

.UseKestrel()

.UseStartup<Startup>()

? ? ? ? ? .UseUrls("http://*:5001")

.Build();

}


關于部署 https的WEB應用

在部署https WEB應用的時候,我已經拿到了 一個后綴為pem文件還有一個后綴為key的文件

第一步:需要這兩個文件生成后綴為pfx的文件,并設置生成 pfx文件的密碼

centos系統下執行命令

openssl pkcs12 -export -out iiscert.pfx -inkey private.key -in public.pem

然后會讓你輸入密碼(密碼不要忘記了)

第二步:修改jexus站點配置信息

vim /etc/supervisor/conf.d/lottery.conf

編輯如下:

UseHttps=true

ssl.certificate=/dotnet/httpsKey/public.pem ?#crt or pem

ssl.certificatekey=/dotnet/httpsKey/private.key

ssl.protocol=TLSv1.2 ? ?# TLSv1.1 or ?TLSv1.2...

#ssl.ciphers=

wp! 保存


修改程序 Program.cs文件

public static IWebHost BuildWebHost(string[] args) =>

WebHost.CreateDefaultBuilder(args)

.UseContentRoot(Directory.GetCurrentDirectory())

.UseKestrel(options => options.Listen(IPAddress.Any, 5003, listenOptions =>

{

listenOptions.UseHttps(new X509Certificate2("/dotnet/httpsKey/iiscert.pfx", "123456"));

}))

.UseStartup<Startup>()

.Build();

重新部署到服務器,并重啟supervisor對應的進程


關于部署非WEB應用

如果需要部署到非WEB應用程序,則不需要執行 jexus的步驟,直接在 supervisor上新增一個進程配置文件(/etc/supervisor/conf.d/ ?這個目錄下一個*,conf文件代表一個進程配置)



公眾號-智能化IT系統。每周都有技術文章推送,包括原創技術干貨,以及技術工作的心得分享。掃描下方關注。



公眾號-智能化IT系統。每周都有技術文章推送,包括原創技術干貨,以及技術工作的心得分享。掃描下方關注。

總結

以上是生活随笔為你收集整理的【干货特供】dotNet core 应用部署至 centos(超详解附截图)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。