.netcore部署centos


前言:最近公司有個項目用 .netcore開發的項目,然后閑的沒事就研究如果發布到Linux系統上

 

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

1.dotnetSDK

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

 

傳輸項目到指定的目錄下

Windows系統下傳輸文件夾到指定centos服務器上,也可以通過其他方式傳輸

pscp -r E:\WebSite\admin1.lottery.com root@192.168.0.55:/dotnet/webAPP/

創造發布站點完畢之后,驗證web項目是否可運行,執行命令

dotnet /dotnet/webAPP/Lottery.WEB.dll

然后根據開啟的端口訪問站點(注意:記得開啟端口,防止不可訪問)

 開發的端口在代碼的規定好的

Program.cs文件中

 public static void Main(string[] args)
        {
            BuildWebHost(args).Run();

        }

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
            .UseUrls("http://*:5001")
                .Build();
    }

 

 

安裝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}

 

 

重啟讀取配置文件

sh /usr/jexus/jws restart

 

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

Centos上設置jexus開機自啟動

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

cd /etc/init.d

vim jws

i編輯模式,粘貼下面內容

#!/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

 

"lottery"可以為dotnet core 入口dll文件名字 ,插入內容,注意首尾需無空格,需頂格:

[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     ;自動重啟間隔時間

 

創建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

 

使配置生效

systemctl daemon-reload

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

systemctl enable supervisor.service

啟動服務

systemctl start supervisor.service

 

驗證dotnet進程是否啟動

使用命令“ps -ef | grep dotnet”查看dotnet 是否運行

[root@cli ~]# 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]         ; inet (TCP) server disabled by default

;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)

;username=user              ; (default is no username (open server))

;password=123               ; (default is no password (open server))
;以下內容開啟http服務[inet_http_server]

port=192.168.1.71:9001      ;ip 加端口

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

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

 也可以設置成


[inet_http_server]
;port=127.0.0.1:9001      ;ip 加端口
port=9001
username=root               ;登陸賬號,可以不設
password=123456              ;登陸賬戶,可以不設

 重啟服務,就可以訪問了

注意防火牆是否對端口9001例外

 

 

 

 圖片驗證碼報錯的話安裝

解決:

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來解決

 

注意

Dotnet程序在運行當中,重復覆蓋包,並不能直接覆蓋到,所以需要重啟 dotnet,如果使用了supervisord,則需要重啟supervisord(目前本人沒有找到其他更好的方法)

systemctl restart supervisor.service

 

Dotnet程序在運行當中,重復覆蓋包,並不能直接覆蓋到,所以需要重啟 dotnet項目的進程

進入supervisor的管理界面

 

點擊Restart進行該進程重啟

 

或者使用這個命令重啟

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM