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

相关文章
相关标签/搜索