銀河麒麟V10安裝ASP.NET Core並配置Supervisor讓網站開機自動運行

銀河麒麟高級伺服器作業系統V10是針對企業級關鍵業務,適應虛擬化、雲計算、大數據、工業互聯網時代對主機系統可靠性、安全性、性能、擴展性和實時性的需求,依據CMMI 5級標準研製的提供內生安全、雲原生支援、國產平台深入優化、高性能、易管理的新一代自主伺服器作業系統;同源支援飛騰、龍芯、申威、兆芯、海光、鯤鵬等自主CPU及x86平台;可支撐構建大型數據中心伺服器高可用集群、負載均衡集群、分散式集群文件系統、虛擬化應用和容器雲平台等,可部署在物理伺服器和虛擬化環境、私有雲、公有雲和混合雲環境;應用於政府、國防、金融、教育、財稅、公安、審計、交通、醫療、製造等領域。–來自官網介紹(//www.kylinos.cn/scheme/server/1.html)

在產品試用頁面填寫完申請後,可以下載試用版銀河麒麟伺服器版作業系統(試用期一年,試用地址//www.kylinos.cn/support/trial.html)。

本文章採用的是x86架構的銀河麒麟作業系統。

安裝完成後,銀河麒麟自帶GUI圖形桌面

 

安裝時設置好密碼後,會自動啟動SSH管理,使用SSH管理工具即可遠程連接管理。

按管理,我們先安裝libgdiplus,因為網站登錄需要顯示驗證碼,顯示驗證碼調用System.Draw時需要libgdiplus支援。

我們可以直接用CentOS的包管理工具yum來進行安裝,需要注意的是銀河麒麟不支援第三方的軟體源(中國阿里、163等鏡像源都不可用)

yum install autoconf automake libtool
yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel

安裝完成後需要在/etc/ld.so.conf.d下建立一個文件(如local.conf),內容填寫上/usr/local/lib,然後用root許可權執行ldconfig。這樣調用相應的so文件就會在/usr/local/lib中搜索了。

在根目錄下建立一個文件夾upload,把

aspnetcore-runtime-3.1.11-linux-x64.tar.gz(//dotnet.microsoft.com/download/dotnet-core/3.1)

setuptools-53.0.0.tar.gz(//pypi.org/project/setuptools/

supervisor-4.2.1.tar.gz(//pypi.org/project/supervisor/#files)

libgdiplus-6.0.5.tar.gz(//download.mono-project.com/sources/libgdiplus/libgdiplus0-6.0.4.tar.gz)

上傳到此目錄

解壓縮setuptools-53.0.0.tar.gz和supervisor-4.2.1.tar.gz

先安裝setuptools-53.0.0(需要Python3.6支援,銀河麒麟默認是3.7可以直接安裝) 

cd setuptools-53.0.0
python3 setup.py install

然後安裝supervisor-4.2.1

cd ../supervisor-4.2.1/
python3 setup.py install

 安裝完成後,進入到後/etc/lib64/python3.7目錄,執行

echo_supervisord_conf  > /etc/supervisord.conf

就會在/etc/目錄下生成supervisord.conf配置文件。然後建立一個目錄/var/supervisord,用來保存supervisord運行時生成的三個文件保存路徑,建立一個/var/supervisord.d目錄,用來保存要守護的程式的配置文件

然後分別執行

 

touch /var/supervisord/supervisor.sock
touch /var/supervisord/supervisor.log
touch /var/supervisord/supervisor.pid
chmod 777 /var/supervisord/supervisor.sock
chmod 777 /var/supervisord/supervisor.log
chmod 777 /var/supervisord/supervisor.pid

 

然後vim /etc/supervisord.conf 把配置文件中的supervisor.sock、supervisor.log、supervisor.pid三個文件的保存位置改為剛建立的三個文件位置

 

 

 

 

 

 

 

 

 

 

 

 在文件最後打開守護程式配置所在目錄

 

 

 完成後保存退出。然後建立一個Supervisor的啟動腳本(vim /lib/systemd/system/supervisord.service)然後填入以下內容保存退出。

[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service

[Service]
Type=forking
ExecStart=supervisord -c /etc/supervisord.conf
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

然後執行systemctl enable supervisord.service來設置開機自動啟動服務,接著重啟伺服器,然後我們運行ps -ef |grep supervisord即可看到supervisor已經開機自動啟動

接著我們安裝libgdiplus,進入到libgdiplus解壓縮後的目錄,然後執行

./autogen.sh --prefix=/usr/local/lib
./configure --prefix=/usr/local/lib
make
make install
ldconfig

 

 

接著我們按照微軟官網上的教程安裝ASP.NET Core3.1運行時(本次上傳路徑在/upload下)

mkdir -p "$HOME/dotnet" && tar zxf aspnetcore-runtime-3.1.11-linux-x64.tar.gz -C "$HOME/dotnet"
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

接著我們運行dotnet –version就可以看到當前ASP.NET Core的版本是3.1

此時我們就可以把我們編譯後的網站上傳到伺服器上(本次使用的目錄是/usr/src/wwww/whitelist),然後在/var/supervisord.d/目錄下建一個網站的ini配置文件,內容如下

[program:bmd.Site]
command=dotnet WhiteList.dll
directory=/usr/src/wwww/whitelist
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
stderr_logfile=/var/log/whitelist.err.log    
stdout_logfile=/var/log/whitelist.out.log

隨後我們運行supervisorctl reload或者systemctl restart supervisord.service重新啟動supervisord,

因為我們使用的是Kestrel來作為web服務,所以我們需要把5000埠打開(

firewall-cmd –zone=public –add-port=5000/tcp –permanent 

firewall-cmd –reload

)同時需要在appsettings.json中啟用配置

"Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "//0.0.0.0:5000"
      }
    }
  },

隨後我們就可以看到我們的網站已經運行成功。