CentOS8 .NET Core項目部署


1. 安裝 .NET Core SDK

  .NET Core 3.1 在 CentOS 8 的默認包存儲庫中有提供,直接使用下面命令安裝 SDK:

  sudo dnf install dotnet-sdk-3.1

  安裝完成后,使用 dotnet --info 命令查看是否能正確輸出當前 SDK 信息。

2. 安裝 ftp

  2.1 使用以下命令安裝VSFTPD:

  sudo yum install vsftpd

  2.2 啟動服務,並將其設置為在系統啟動時啟動,並顯示以下內容:

  sudo systemctl start vsftpd

  sudo systemctl enable vsftpd

  2.3 開啟21端口進行通信,注意這里是雲服務器控制台開啟端口

  2.4 配置VSFTPD

    修改 /etc/vsftpd/vsftpd.conf 配置文件 。

    使用以下命令編輯配置文件:

    vi /etc/vsftpd/vsftpd.conf

    此處注意 userlist_enable 、userlist_deny 的設置,如果僅用來上傳一次文件,可以設置 userlist_enable=No, 之后再關閉

    完成配置文件編輯后,保存更改。vi 保存退出: Esc 進入命令模式,輸入 :wq 即可。

    重啟vsftpd服務:

    sudo systemctl restart vsftpd

  2.5 創建ftp 用戶

    使用命令:

    sudo adduser newftpuser
    sudo passwd
newftpuser

    根據提示輸入密碼。

    將新用戶添加到用戶列表:

    echo "newftpuser" | sudo tee –a /etc/vsftpd/user_list

    給新用戶創建目錄,並調整權限:

    sudo mkdir –p /home/newftpuser/ftp/upload

    sudo chmod 550 /home/newftpuser/ftp

    sudo chmod 750 /home/newftpuser/ftp/upload

    sudo chown –R testuser: /home/newftpuser/ftp

    使用用戶及密碼登錄服務器

    ftp ip

3. 使用ftp 上傳 .NET Core 文件

  將文件壓縮為.zip 文件

  命令上傳文件:

  put test.zip

 

  上傳成功后,在服務器的 /home/newftpuser 文件中將出現 上傳的 test.zip

  命令解壓文件:

  unzip test.zip

4. 啟用防火牆
  查看防火牆狀態:

  systemctl status firewalld

  啟動防火牆:

  systemctl start firewalld

  允許 HTTP 和 HTTPS:

  firewall-cmd --permanent --zone=public --add-service=http 
  firewall-cmd --permanent --zone=public --add-service=https

  開放 80 端口:

  firewall-cmd --permanent --zone=public --add-port=80/tcp

  重啟防火牆:

  firewall-cmd --reload

5. 安裝 nginx

  安裝 nginx

  sudo dnf install nginx

  啟動 nginx

  systemctl start nginx

  設置開機自啟

  systemctl enable nginx

  配置 nginx,nginx 默認的配置文件為 /etc/nginx/nginx.conf

  修改 該配置文件,如果有多個項目配置文件可以在 /etc/nginx/conf.d 中創建多個 .conf 文件

  server {
                listen        80;      #更改為80端口
                server_name   localhost;  #更改為域名名稱
                location / {
                    proxy_pass         http://localhost:5000;  #更改為 .netcore項目的地址 
                    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;
                    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header   X-Forwarded-Proto $scheme;
                }
            }
  }

  測試配置:

  nginx -t

  重新啟動:

  nginx -s reload

  查看狀態:

  sudo systemctl status nginx

  需要注意80 端口是否被占用,使用以下命令查看端口:

  netstat -tulpn

  如果被占用,可用以下命令殺死進程:

  kill -pid

6. 啟動項目

  進入項目文件,使用以下命令啟動項目:

  dotnet TEST.WebAPI.dll

  至此,如果配置正確,你應該可以使用域名或者ip 在你本地訪問項目。

7. 守護進程Supervisor

  7.1 安裝 Supervisor

#執行epel-release
sudo yum -y install epel-release

#安裝Supervisor
sudo yum -y install supervisor

#使用配置文件啟動supervisor
sudo supervisord -c /etc/supervisord.conf

#啟動supervisorctl
sudo supervisorctl -c /etc/supervisord.conf

#查看supervisor 版本
version

#查看狀態
status

  7.2 創建.NET Core項目的Supervisor配置文件

#進入supervisord.d目錄
cd /etc/supervisord.d

#新建NetCore進程配置文件
sudo touch DemoNetCore.ini

#查看和編輯DemoNetCore.ini配置文件
sudo vim DemoNetCore.ini

#進入文件后,按“i”或者“a”進入插入模式,插入下面的配置信息
#配置程序名稱
[program:DemoNetCore]
#運行程序的命令
command=dotnet Demo.Net.Core.dll --urls="http://*:8081;http://*:8082"
#命令執行的目錄
directory=/var/www
#進程環境變量
environment=ASPNETCORE_ENVIRONMENT=Production
#進程執行的用戶身份
user=demo
#進程停止信號,可以為TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信號默認為TERM 。當用設定的信號去干掉進程,退出碼會被認為是expected,非必須設置
stopsignal=INT
#如果是true的話,子進程將在supervisord啟動后被自動啟動,默認就是true,非必須設置
autostart=true
#這個是設置子進程掛掉后自動重啟的情況,有三個選項,false,unexpected和true。如果為false的時候,無論什么情況下,都不會被重新啟動,如果為unexpected,只有當進程的退出碼不在下面的exitcodes里面定義的退出碼的時候,才會被自動重啟。當為true的時候,只要子進程掛掉,將會被無條件的重啟
autorestart=true
#這個選項是子進程啟動多少秒之后,此時狀態如果是running,則我們認為啟動成功了,默認值為1 。非必須設置
startsecs=1
#錯誤日志文件
stderr_logfile=/var/log/DemoNetCore.err.log
#輸出日志文件
stdout_logfile=/var/log/DemoNetCore.out.log

  7.3 保存配置文件,並重新啟動

#通過配置文件來啟動supervisor
sudo supervisord -c /etc/supervisord.conf

#啟動supervisorctl
sudo supervisorctl -c /etc/supervisord.conf

#重新加載配置文件
reload

#查看運行的狀態
status

  7.4 查看站點知否運行

ps -aux | grep "Demo.Net.Core.dll"

  7.5 配置Supervisor開機自啟動

#進入system目錄
cd /usr/lib/systemd/system

#編輯supervisord.service文件
sudo vim supervisord.service

supervisord.service文件內容為:

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

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42

[Install]
WantedBy=multi-user.target

 

 編輯好后保存退出,然后執行命令,查看是否啟動成功

#啟動服務
systemctl enable supervisord

#驗證一下是否為開機啟動
systemctl is-enabled supervisord

  7.6 Supervisor常用命令

# 啟動所有
supervisorctl start all

# 重啟所有
supervisorctl restart all

# 停止所有
supervisorctl stop all

#PS:要操作某個服務,把all換成服務名即可

#查看服務狀態
supervisorctl status

 

至此,部署完畢。。。    

部分參考自  https://www.cnblogs.com/jayjiang/p/12610637.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM