ASP .Net Core系統部署到 CentOS7 64 具體方案
.Net Core 部署到 CentOS7 64 位系統中的步驟
1、安裝工具
1、apache
2、.Net Core(dotnet-sdk-2.0)
3、Supervisor(進程管理工具,目的是伺服器一開機就啟動伺服器 上發布的ASP.NET Core Web網站)
2、安裝apache
在安裝apache之前,要先做一件事就是,把當前登入使用者權限設定為root相同的許可權,否則 在執行sudo命令時會報 “不在 sudoers 檔案中。此事將被報告”。
兩種方法解決許可權問題
1、第一種方式
當前登入使用者權限設定為root相同的許可權操作如下:
su root
sudo vim /etc/sudoers
在vim命令調出的vim編輯視窗中,找到如下行:
root ALL=(ALL:ALL) ALL
在下面添加你自己的帳號,如 linjie ALL=(ALL:ALL) ALL,添加以後的檔案如下:
root ALL=(ALL:ALL) ALL
linjie ALL=(ALL:ALL) ALL
點擊Esc 輸入:再輸入wq。 這樣就可以儲存退出了,之後
su linjie 切換到自己的帳號,就可以使用sudo 執行命令了。
2、第一種方式 直接使用sudo
上面設定完成後,下面安裝apache(三步操作)
1、在終端中輸入命令: yum install httpd或(sudo yum install httpd)
2、配置ServerName(可以省略) vi /etc/httpd/conf/httpd.conf
如果沒有網域名稱,則:ServerName localhost:80 或者 ServerName 127.0.0.1:80
3、Apache服務添加到 開機自啟中
systemctl start httpd
systemctl enable httpd
在瀏覽器裡輸入http://localhost或者是http://127.0.0.1,如果看 到了Testing 123..,那就說明Apache就成功的安裝了。
Linux系統中服務的設定檔,以及存放位置如下:
服務類別目錄 /etc/httpd
主設定檔 /etc/httpd/conf/httpd.conf
網站資料目錄 /var/www/html
訪問日誌 /var/log/httpd/access_log
錯誤記錄檔 /var/log/httpd/error_log
主設定檔: vim /etc/httpd/conf/httpd.conf
在httpd服務程式主設定檔中最為常用的參數包括有:
ServerRoot 服務類別目錄
ServerAdmin 管理員郵箱
User 運行服務的使用者
Group 運行服務的使用者組
ServerName 網站伺服器的網域名稱
DocumentRoot 網站資料目錄
Listen 監聽的IP地址與連接埠號碼
DirectoryIndex 預設的索引頁頁面
ErrorLog 錯誤記錄檔檔案
CustomLog 訪問記錄檔
Timeout 網頁逾時時間,預設為300秒.
Include 需要載入的其他檔案
從上面表格中可以得知DocumentRoot正是用於定義網站資料儲存路徑的參數,其參數的預設值是把網站資料存放到了/var/www/html目錄中的,而網站首頁的名稱應該叫做index.html,因此可以手動的向這個目錄中寫入一個檔案來替換掉httpd服務程式的預設網頁。
3、安裝.NET Core 2.0
1、註冊Linux系統(Cent OS 7)
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
2、更新安裝包,安裝.NET Core
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.4
註:上面的註冊和安裝可以參考
https://www.microsoft.com/net/learn/get-started/linux/centos
4、查看一下 dotnet --version 結果是 2.1.4 則說明安裝成功。
(註:簡單的應用程式專案檔夾,使用以下命令啟動網站,只要開啟發布網站的檔案,右鍵終端中開啟dotnet run或者dotnet xx.dll,即可運,xx為網站的名稱)
sudo dotnet xxx.dll
然後就可以在瀏覽器開啟使用實際IP和連接埠訪問(mmps的連接埠設定的是8080)
注意這個過程可能會遇到的問題:
問題1
如果外網無法訪問8080連接埠(:這個連接埠是程式中的訪問連接埠)的話,設定如下
1、sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
2、firewall-cmd --reload
問題2
如果開啟瀏覽器,無法開啟的話,就是網路問題,
1、查看詳細資料
2、點擊 身份 -- 勾選 自動連接,點擊應用。
到此位置基本就實現了通過IP訪問,然而每次關機以後,重新開機都需要去手動的啟動發布的網站項目才能訪問,因此我們下面使用Supervisor託管自動啟動網站服務作業,保證每次只要一開機,網站就可以正常。
3、安裝Supervisor(設定開機自動化佈建網站)
1、右鍵在終端中開啟,輸入安裝命令:
安裝python的supervisor
yum search setuptools
sudo yum install -y python-setuptools.noarch
sudo easy_install supervisor
2、安裝完成之後,建立相關檔案,
第一種:
建立supervisor設定檔目錄
sudo mkdir /etc/supervisor
建立主設定檔
echo_supervisord_conf >/etc/supervisor/supervisord.conf
如果提示許可權不夠,
su root
echo_supervisord_conf >/etc/supervisor/supervisord.conf
建立項目設定檔目錄conf.d
cd /etc/supervisor/
sudo mkdir conf.d
在檔案目錄conf.d下建立建立項目設定檔(開機啟動的網站)
sudo vim conf.d/MmPSCore.conf (編輯完成後 ,按Esc,在按:冒號,之後再輸入wq。,即可以退出)
第二種:
echo_supervisord_conf > supervisord.conf
sudo mkdir /etc/supervisor
sudo mkdir /etc/supervisor/conf.d
sudo cp supervisord.conf /etc/supervisor/supervisord.conf
註:1、supervisord.conf中的 /tmp換成相應的/var/run或者 /var/log
(使用sudo chmod a+w etc/supervisor/supervisord.conf 就可以開啟進行編輯了,/tmp換成相應的/var/run或者/var/log替換之後,儲存)
2、把supervisord.conf中的
;[include]節點處
;files = relative/directory/*.ini
換成
[include]
files = /etc/supervisor/conf.d/*.conf
3、設定檔,取名為 MmPSCore.conf (當前項目的名稱)
sudo touch /etc/supervisor/conf.d/MmPScore.conf (自訂項目名稱,本項目是MmPScore.conf)
開啟MmPSCore.conf寫入如下命令(如果沒有許可權,
請如下方法
sudo chmod a+w /etc/supervisor/conf.d/MmPScore.conf(命令啟動編輯)
命令內容如下:
[program:MmPSCore]
command=dotnet MmPSCore.dll #要執行的命令(發布網站執行檔案)
directory=/home/xx/MmPSCore#命令執行的目錄(發布網站檔案路徑)environment=ASPNETCORE__ENVIRONMENT=Production #環境變數
user=www-data #進程執行的使用者身份(可能需要去掉)
stopsignal=INT
autostart=true #是否自動啟動
autorestart=true #是否自動重啟
startsecs=1 #自動重啟間隔
user=root ; #進程執行的使用者身份(可以不寫)
stderr_logfile=/var/log/TestCore.err.log #標準錯誤日誌
stdout_logfile=/var/log/TestCore.out.log #標準輸出日誌
//註:#後面的內容為注釋,在儲存上面的檔案代碼時,記得刪除
重新載入配置以後的設定
sudo supervisord -c /etc/supervisor/supervisord.conf 服務端
sudo supervisorctl -c /etc/supervisor/supervisord.conf 用戶端
重啟
supervisor服務
sudo service supervisor stop
sudo service supervisor start
上述操作完後,儲存,
運行supervisord,查看是否生效,執行以下命令:
配置好以後,需要重新載入一下配置
supervisord -c /etc/supervisor/ supervisord.conf (啟動)
ps -ef | grep ProjectName
返回
root 27007 27006 1 13:21 ? 00:00:02 dotnet ProjectName.dll
root 27026 26810 0 13:23 pts/0 00:00:00 grep --color=auto ProjectName
表示運行成功。
如果有錯誤的話,建議執行下面的命令
這個兩句命令很重要
sudo supervisord -c /etc/supervisor/supervisord.conf 服務端
sudo supervisorctl -c /etc/supervisor/supervisord.conf 用戶端
4、配置supervisord開機啟動 在指定目錄下建立檔案supervisord.service
sudo touch /usr/lib/systemd/system/supervisord.service
sudo chmod a+w /usr/lib/systemd/system/supervisord.service
B.輸入以下內容:
[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
儲存並退出
C.執行以下命令:
systemctl enable supervisord
提示:
Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.
D.驗證是否為開機啟動:
systemctl is-enabled supervisord
提示:
enabled
表示設定成功。
至此,建立supervisor守護進程完畢。
5、測試
接下來重啟機器,在瀏覽器中輸入IP地址,看看網站是否跟隨開機自動運行。