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

踏平扶桑發表於2021-02-13

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

在產品試用頁面填寫完申請後,可以下載試用版銀河麒麟伺服器版作業系統(試用期一年,試用地址http://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(https://dotnet.microsoft.com/download/dotnet-core/3.1)

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

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

libgdiplus-6.0.5.tar.gz(http://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": "http://0.0.0.0:5000"
      }
    }
  },

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

 

 

 

 

 

 

相關文章