銀河麒麟V10安裝ASP.NET Core並配置Supervisor讓網站開機自動運行
- 2021 年 2 月 13 日
- 筆記
- .netcore, 銀河麒麟運行ASP.NET Core
銀河麒麟高級伺服器作業系統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" } } },
隨後我們就可以看到我們的網站已經運行成功。