Cenos7 部署asp.net core站點

系統版本

rpm -q centos-release
--- centos-release-7-5.1804.el7.centos.x86_64

安裝libicu

yum install libunwind libicu

安裝Core SDK

#### Before installing .NET, you'll need to register the Microsoft key, register the product repository, and install required dependencies. This only needs to be done once per machine.
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
### Update the products available for installation, then install the .NET SDK.
yum install rh-dotnet21 -y
sudo yum update
sudo yum install dotnet-sdk-2.1
## 驗證是否安裝成功
dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.1.403
Commit: 04e15494b6

 

Runtime Environment:
OS Name: centos
OS Version: 7
OS Platform: Linux
RID: centos.7-x64
Base Path: /usr/share/dotnet/sdk/2.1.403/

 

Host (useful for support):
Version: 2.1.5
Commit: 290303f510

 

.NET Core SDKs installed:
2.1.403 [/usr/share/dotnet/sdk]

 

.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

 

To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download

開啓FTP服務

一、查看版本
vsftpd -v
二、若是沒有安裝,則用下面的命令進行安裝
yum -y install vsftpd
三、取消匿名訪問
修改配置文件
vi /etc/vsftpd/vsftpd.conf
把anonymous_enable=YES ,改成NO ,而後重啓vsftpd
四、重啓服務
systemctl restart vsftpd.service
五、查看狀態
systemctl status vsftpd.service
六、添加用戶
useradd webroot
passwd abcd-1234
## 上傳站點
經過FileZila Ftp客戶端將站點上傳,或者經過ssh拷貝站點到目錄/home/webroot/test下。

安裝Nignx

#### 安裝
sudo yum install epel-release
sudo yum install nginx
#### nginx 不會自行啓動。要運行 Nginx,請輸入:
sudo systemctl start nginx
#### 若是您正在運行防火牆,請運行如下命令以容許 HTTP 和 HTTPS 通訊:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
此時能夠在瀏覽器中,輸入地址http://192.168.226.129/ 驗證nginx是否安裝成功。
在防火牆配置中,開放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld
#### 設置 Nginx 開機啓動
避免開機須要手動開啓 Nginx,能夠經過以下快捷命令把 Nginx 配置成系統服務,並設置爲開機啓動:
systemctl enable nginx #設置開機啓動
#### 修改 Nginx 配置文件
Nginx 的默認配置文件/etc/nginx/nginx.conf
建立web站點私有配置文件,test.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;
}
}
由於nginx配置文件中include include /etc/nginx/conf.d/*.conf; 已經經過通配符的方式包含了.conf的文件,咱們只需將站點私有的配置文件拷貝該目錄下便可。
最後執行命令nginx -s reload重載 Nginx 配置,使其生效。
在瀏覽器瀏覽http://192.168.226.129/,出現下面的服務器錯誤,
 
 
這個問題是因爲 SELinux 保護機制所致使,咱們須要將 Nginx 添加至 SELinux 的白名單。執行命令:
yum install policycoreutils-python

sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

sudo semodule -i mynginx.pp

再次訪問便可。html

安裝Supervisor守護進程

Supervisor 是用 Python 開發的 Linux/Unix 系統下的一個進程管理工具。它可使進程脫離終端,變爲後臺守護進程(daemon)。實時監控進程狀態,異常退出時能自動重啓。python

Supervisor 不支持任何版本的 Window 系統;僅支持在 Python2.4 或更高版本,但不能在任何版本的 Python 3 下工做。nginx

其主要組成部分:git

supervisord:Supervisor 的守護進程服務,用於接收進程管理命令;github

supervisorctl:Supervisor 命令行工具,用於和守護進程通訊,發送管理進程的指令;web

Web Server:Web 端進程管理工具,提供與 supervisorctl 相似功能,管理進程;json

XML-RPC Interface:提供 XML-RPC 接口,請參閱 XML-RPC API文檔centos

安裝

聯網狀態下,官方推薦首選安裝方法是使用easy_install,它是setuptools(Python 包管理工具)的一個功能。因此先執行以下命令安裝 setuptools:api

yum install python-setuptools

請更換root用戶,執行以下命令安裝 Supervisor:瀏覽器

easy_install supervisor

配置 Supervisor

運行supervisord服務的時候,須要指定 Supervisor 配置文件,若是沒有顯示指定,默認會從如下目錄中加載:

$CWD/supervisord.conf  #$CWD表示運行 supervisord 程序的目錄
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
../etc/supervisord.conf (Relative to the executable)
../supervisord.conf (Relative to the executable)

因此,先經過以下命令建立目錄,以便讓 Supervisor 成功加載默認配置:

mkdir /etc/supervisor

加載目錄有了,而後經過echo_supervisord_conf程序(用來生成初始配置文件)來初始化一個配置文件:

echo_supervisord_conf > /etc/supervisor/supervisord.conf

打開supervisord.conf文件,能夠看到echo_supervisord_conf已經幫咱們初始化好了一個樣例配置,咱們須要簡單修改一下。

編輯配置文件

 vi /etc/supervisor/supervisord.conf

尾部找到以下文本片斷:

;[include]
;files = relative/directory/*.ini

改成:

[include]
files = conf.d/*.conf

即,把前面的分號去掉便可並設置/etc/supervisor/conf.d爲 Supervisor 進程配置文件加載目錄。

這樣,Supervisor 會自動加載該目錄下.conf後綴的文件做爲共同服務配置。Supervisor 管理的每一個進程單獨寫一個配置文件放在該目錄下,supervisord.conf配置文件中保留公共配置。

建立進程配置加載目錄:

mkdir /etc/supervisor/conf.d

接下來就須要爲咱們已經部署的 ASP .NET Core 程序的宿主進程建立一個進程配置文件test.conf,保存並上傳到/etc/supervisor/conf.d目錄。

或者經過vi 進行建立,注意該配置文件最好與站點名稱保持一致。

[program:Test]                                  ;自定義進程名稱
command=dotnet Web.dll                          ;程序啓動命令
directory=/home/webroot/test                    ;命令執行的目錄
autostart=true                                  ;在Supervisord啓動時,程序是否啓動
autorestart=true                                ;程序退出後自動重啓
startretries=5                                  ;啓動失敗自動重試次數,默認是3
startsecs=1                                     ;自動重啓間隔
user=root                                       ;設置啓動進程的用戶,默認是root
priority=999                                    ;進程啓動優先級,默認999,值小的優先啓動
stderr_logfile=/var/log/test.err.log        ;標準錯誤日誌
stdout_logfile=/var/log/test.out.log        ;標準輸出日誌
environment=ASPNETCORE_ENVIRONMENT=Production   ;進程環境變量
stopsignal=INT                                  ;請求中止時用來殺死程序的信號

啓動 Supervisor 服務,命令以下:

supervisord -c /etc/supervisor/supervisord.conf
# 進入 Supervisor 命令行界面

supervisorctl -c /etc/supervisor/supervisord.conf

# 使配置文件生效
supervisorctl -c /etc/supervisor/supervisord.conf reload

設置 Supervisor 開機啓動

首先爲 Supervisor 新建一個啓動服務腳本supervisor.service,而後保存並上傳至服務器/usr/lib/systemd/system/目錄。

腳本內容以下:

# supervisord service 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 $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

設置開啓啓動:

systemctl enable supervisor

驗證是否成功

systemctl is-enabled supervisor

若是輸出enabled則表示設置成功,也可重啓服務器驗證。

Supervisorctl 管理進程

Supervisor 服務啓動後,受其管理的進程會在後臺運行。能夠經過supervisorctl客戶端管理進程。

輸入以下命令進入supervisorctl交互終端,按Ctrl+C鍵退出:

supervisorctl

輸入help

輸入help ****查詢詳細命令,好比輸入help stop

supervisor的web管理端

若是須要在遠程訪問,能夠設置爲本機的ip,192.168.226.129:9001

更新配置

 supervisorctl update

使其生效

 supervisorctl reload

這時能夠在本地瀏覽了

 

 發現並無設置的test的進程,多是由於test.conf沒有其做用的緣由,經過查看配置文件發現supervisor的配置文件[include]目錄路徑寫錯了,修改成下面的目錄

更新,從新加載配置

刷新頁面

到此我們的asp.net core 站點基本配置成功了。固然這裏你也能夠添加nginx的監控,步驟同上,再也不說明了。

參考文章

Esofar's blog  https://www.cnblogs.com/esofar/p/8043792.html

相關文章
相關標籤/搜索