.Net Core 部署到 SUSE Linux Enterprise Server 12 SP3 64 位中的步驟
1、安裝工具
1、apache
2、.Net Core(dotnet-sdk-2.0)
3、Supervisor(程序管理工具,目的是伺服器一開機就啟動伺服器 上釋出的ASP.NET Core Web網站)
2、安裝apache
安裝apache,在指令行終端中輸入一下指令:
sudo zypper in apache
(注意這個與ubuntun中的添加不一樣,
buntun中sudo apt-get install apache2 )
(注:檢視apache 版本 sudo apachectl -v)
安裝完成,開始啟動
重新開機apache服務(設定兩項,1是可用,2是啟動)
可用:sudo systemctl enable apache2.service
(注意這個與ubuntun中的添加不一樣,
buntun中sudo /etc/init.d/apache2 restart )
啟動:sudo systemctl start apache2.service
在浏覽器裡輸入http://localhost或者是http://127.0.0.1,如果看 到了It works!,那就說明Apache就成功的安裝了,Apache的預設文檔根目錄是在SUSE上的/srv/www/htdocs/目錄 ,如果出現403頁面拒絕通路錯誤,原因是沒有index.html導緻,添加一個index.html檔案即可,内容如下
<html>
<head>
</head>
<body>
It works!
</body>
</html>
添加index.html檔案之後,重新重新整理浏覽器,顯示添加内容ok。
注意:添加檔案需要權限,是以通過
指令 sudo chmod a+w /srv/www/htdocs/ 授權,這樣就可以添加index.html初始頁了,
備注:配置檔案是/etc/apache2/httpd.conf。
配置存儲在的/etc/apache2/conf.d /目錄。
3、安裝.NET Core 2.0
1、注冊Linux系統(Ubuntu and Debian based systems,不同的系統 操作不一樣)
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/zypp/repos.d/dotnetdev.repo'
2、更新安裝包,安裝.NET Core
sudo zypper update
sudo zypper install libunwind libicu
sudo zypper install dotnet-sdk-2.1.4
注意安裝過程中出現解決方案選擇,選擇 2 。
4、檢視一下 dotnet --version 結果是 2.1.4 則說明安裝成功。
(注:簡單的應用程式項目檔案夾,使用以下指令啟動網站,隻要打開釋出網站的檔案,右鍵終端中打開 dotnet run或者dotnet xx.dll,即可運,xx為網站的名稱)
sudo dotnet xxx.dll
然後就可以在浏覽器打開localhost:5000(5000為預設端口,如果有修改,請使用實際IP和端口通路(mmps的端口設定的是8080))
注意:如果外網無法通路8080端口的話,設定如下
1、sudo chmod a+w /etc/sysconfig/SuSEfirewall2 #授編輯權限
(注意:這裡授權,編輯儲存之後,步驟3的下面一定要取消編輯權限,sudo chmod a-w /etc/sysconfig/SuSEfirewall2,
否則重新開機無效會提示:Unsafe permissions for file /etc/sysconfig/SuSEfirewall2 to be sourced )
2、vi SuSEfirewall2 或者直接打開SuSEfirewall2檔案進行編輯
3、編輯内容:在檔案SuSEfirewall2中找到FW_SERVICES_EXT_TCP,在其後面加上服務名或者是服務對應的端口,如SSH,
FW_SERVICES_EXT_TCP=”ssh” 或 FW_SERVICES_EXT_TCP=”22″ 或者FW_SERVICES_EXT_TCP=”8080″,如果要開放多個端口則為 FW_SERVICES_EXT_TCP=”8080 89″ #多個端口用空格分開,儲存之後退出。
4、取消授權(如果沒有取消編輯權限,重新開機無效會提示:Unsafe permissions for file /etc/sysconfig/SuSEfirewall2 to be sourced)
sudo chmod a-w /etc/sysconfig/SuSEfirewall2
5、重新開機防火牆,以使配置生效,
sudo rcSuSEfirewall2 restart
或者執行下面的SuSEfirewall2 stop和SuSEfirewall2 start兩句也可以
SuSEfirewall2 stop
結果:
Firewall rules unloaded.
執行 b:SuSEfirewall2 start
結果:
<38>May 16 14:55:54 SuSEfirewall2[10914]: Setting up rules from /etc/sysconfig/SuSEfirewall2 ...
<38>May 16 14:55:55 SuSEfirewall2[10914]: Firewall rules successfully set
就實作了通過IP通路,然而每次關機以後,重新開機都需要去手動的啟動釋出的網站項目才能通路,是以我們下面使用Supervisor托管自動啟動網站服務操作,保證每次隻要一開機,網站就可以正常。
3、安裝Supervisor(設定開機自動設定網站)
1、右鍵在終端中打開,輸入安裝指令:
安裝python
sudo zypper in python-pip
sudo pip install -U setuptools
pip install supervisor
(注意:如果上述方法不能安裝的話,可以使用下面的方法安裝
1.1 pip下載下傳
wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
1.2 pip安裝
tar -xzvf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install
1.3 pip安裝軟體
pip 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或者
(使用sudo chmod a+w etc/supervisor/supervisord.conf 就可以打開進行編輯了,/tmp換成相應的/var/run或者 /var/log替換之後,儲存)
如下圖
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yN2kDM3ITZwQzMihzY3IjYyYzX5UDMyATMyIzLcZDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
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 #标準錯誤日志(TestCore.err.log這個檔案沒有,需要手動建立)
stdout_logfile=/var/log/TestCore.out.log #标準輸出日志(TestCore.out.log這個檔案沒有,需要手動建立)
注:#後面的内容為注釋,在儲存上面的檔案代碼時,記得删除
上述操作完後,儲存,
運作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位址,看看網站是否跟随開機自動運作。