銀河麒麟V10安裝ASP.NET Core並配置Supervisor讓網站開機自動執行
銀河麒麟高階伺服器作業系統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" } } },
隨後我們就可以看到我們的網站已經執行成功。
&n