1. 程式人生 > >在CentOS中部署.Net Core2.1網站

在CentOS中部署.Net Core2.1網站

upgrade for 端口轉發 啟動 asp 命令 sign .net core 文件

作為一個剛接觸linux的新手,在安裝環境的時候,折騰了不少時間,寫下一篇總結帖,幫助下新人吧~

做完後再回來看步驟,也很簡單,也就以下幾步:

1.安裝.Net Core環境

2.安裝nginx實現端口轉發

3.設置nginx開機啟動

4.設置防火墻(有些雲服務器可省略)

5.配置SELinux的白名單(有些雲服務器可省略)

6.上傳網站

7.安裝守護進程(如果是本地虛擬機,最好手動啟動網站,易於查找錯誤)

8.設置守護進程開機啟動(如果是本地虛擬機,最好手動啟動網站,易於查找錯誤)

註意:1.文中的“GroupShareSite”名字可自定義,根據項目名稱來即可。2.【執行】表示通過任意方式(例如ftp上傳文件等),實現描述即可。

1.安裝.Net Core環境

【命令】sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

【↑註釋】添加yum源

【命令】sudo yum update

【↑註釋】更新已安裝的所有yum包

【命令】sudo yum install dotnet-sdk-2.1

【↑註釋】安裝.Net Core2.1的SDK

2.安裝Nginx實現端口轉發

【命令】curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

【↑註釋】下載指定的nginx文件

【命令】rpm -ivh nginx.rpm

【↑註釋】安裝rpm包

【命令】yum install nginx -y

【↑註釋】安裝nginx

【執行】修改 /etc/nginx/conf.d/default.conf 文件,以下為修改後的全內容:

server {
listen 80;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

【命令】systemctl start nginx

【↑註釋】啟動nginx

3.設置Nginx開機啟動

【命令】systemctl enable nginx

【↑註釋】設置開機啟動

4.設置防火墻

【命令】systemctl start firewalld.service

【↑註釋】啟動防火墻

【命令】systemctl enable firewalld.service

【↑註釋】設置開機啟動防火墻

【命令】firewall-cmd --state

【↑註釋】查看防火墻當前狀態(可省略)

【命令】firewall-cmd --zone=public --add-port=80/tcp --permanent

【↑註釋】配置80端口允許訪問

【命令】systemctl restart firewalld

【↑註釋】重啟防火墻

5.配置SeLinux的白名單

【命令】yum install policycoreutils-python

【↑註釋】安裝policycoreutils-python

【命令】sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

【↑註釋】上面的我也不知道...百度沒找到,求解

【命令】sudo semodule -i mynginx.pp

【↑註釋】上面的我也不知道...百度沒找到,求解

6.上傳網站到服務器

我是用FileZillaPortable上傳的,設置界面如下:

技術分享圖片

我的站點目錄是/home/GroupShareSite

網站上傳後,通過cd進入站點目錄。這一步非常非常重要!如果沒有cd進入目錄就執行下面的命令啟動站點,會導致配置文件無法讀取,網站資源獲取失敗等等不可預期的問題。

執行以下命令:

【命令】dotnet GroupShareSite.dll

【↑註釋】運行網站,因為我的項目名是GroupShareSite,所以這個名稱需要根據自己的實際情況來修改

7.安裝守護進程

【命令】yum install python-setuptools -y

【↑註釋】安裝python

【命令】easy_install supervisor

【↑註釋】安裝守護進程

【命令】mkdir /etc/supervisor

【↑註釋】創建配置文件目錄

【命令】echo_supervisord_conf > /etc/supervisor/supervisord.conf

【↑註釋】這個不知道什麽意思,希望大家能告訴我...

【執行】修改 /etc/supervisor/supervisord.conf 文件中的內容:

將裏面的最後兩行:        
;[include] 
;files = relative/directory/*.ini 
改為
[include]
files = conf.d/*.conf

【執行】創建文件/etc/supervisor/conf.d/GroupShareSite.conf,內容如下:

[program:GroupShareSite]
command=dotnet GroupShareSite.dll ; 運行程序的命令
directory=/home/GroupShareSite/ ; 命令執行的目錄
autorestart=true ; 程序意外退出是否自動重啟
stderr_logfile=/var/log/GroupShareSite.err.log ; 錯誤日誌文件
stdout_logfile=/var/log/GroupShareSite.out.log ; 輸出日誌文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=INT

【↑註意】要修改GroupShareSite為自己的東西

【命令】supervisord -c /etc/supervisor/supervisord.conf

【↑註釋】運行守護程序

8.設置守護進程開機啟動

【執行】新建文件/usr/lib/systemd/system/supervisord.service,內容如下:

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[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 enable supervisord

【↑註釋】設置開機啟動

【命令】systemctl is-enabled supervisord

【↑註釋】判斷是否成功設置開機啟動

結束

有幾個地方需要註意:

1.文中所有涉及到“GroupShareSite”的地方,都需要根據實際進行修改

2.SeLinux一定要設置,否則網站一般都無法訪問(阿裏雲輕量應用服務器不需要設置,好像它沒有限制)

3.如果手動啟動站點,一定要通過cd進入站點根目錄,然後再運行,否則,1)運行的網站會找不到配置文件。2)運行後,站點資源無法找到。

最後,放一下網站地址,就當做個宣傳吧:

http://www.star110.com

還在開發過程中...

在CentOS中部署.Net Core2.1網站