Cenos7 部署asp.net core站点
系统版本
rpm -q centos-release
--- centos-release--5.1804.el7.centos.x86_64
安装libicu
yum install libunwind libicu
安装Core SDK
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
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.403Commit: 04e15494b6Runtime Environment:OS Name: centosOS Version: 7OS Platform: LinuxRID: centos.7-x64Base Path: /usr/share/dotnet/sdk/2.1.403/Host (useful for support):Version: 2.1.5Commit: 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
systemctl restart vsftpd.service
systemctl status vsftpd.service
useradd webroot
passwd abcd-
安装Nignx
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
firewall-cmd --zone=public --add-port=/tcp --permanent
systemctl restart firewalld
systemctl enable nginx #设置开机启动
server {
listen ;
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;
}
}
yum install policycoreutils-python sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
再次访问即可。
安装Supervisor守护进程
Supervisor 是用 Python 开发的 Linux/Unix 系统下的一个进程管理工具。它可以使进程脱离终端,变为后台守护进程(daemon)。实时监控进程状态,异常退出时能自动重启。
Supervisor 不支持任何版本的 Window 系统;仅支持在 Python2.4 或更高版本,但不能在任何版本的 Python 3 下工作。
其主要组成部分:
supervisord:Supervisor 的守护进程服务,用于接收进程管理命令;
supervisorctl:Supervisor 命令行工具,用于和守护进程通信,发送管理进程的指令;
Web Server:Web 端进程管理工具,提供与 supervisorctl 类似功能,管理进程;
XML-RPC Interface:提供 XML-RPC 接口,请参阅 XML-RPC API文档。
安装
联网状态下,官方推荐首选安装方法是使用easy_install
,它是setuptools(Python 包管理工具)的一个功能。所以先执行如下命令安装 setuptools:
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.)
../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= ;启动失败自动重试次数,默认是3
startsecs= ;自动重启间隔
user=root ;设置启动进程的用户,默认是root
priority= ;进程启动优先级,默认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
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
Cenos7 部署asp.net core站点的更多相关文章
- 以self-contained方式在Linux上部署ASP.NET Core站点
今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用 ...
- 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...
- .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...
- .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...
- 用"hosting.json"配置ASP.NET Core站点的Hosting环境
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program { p ...
- 在Linux上用supervisor运行ASP.NET Core站点的一个坑
将一个ASP.NET Core站点在Linux服务器上以self-contained部署方式发布出来后,直接在终端上运行下面的命令,站点可以正常运行. /data/AboutUs/bin/Debug/ ...
- ubuntu16.4下用jexus部署asp.net core rtm
上篇文章介绍了下用vs发布部署到iis环境,今天说下ubuntu 下部署asp.net core,不需要安装.net core sdk,自带运行时方式部署,利用jexus服务器转发请求到asp.net ...
- win10下iis部署asp.net core rtm
随着ASP.NET Core 1.0 rtm的发布,网上有许多相关.net core 相关文章,今刚好有时间也在win10环境上搭建下 ASP.NET Core的部署环境,把过程记录下给大家. 1. ...
随机推荐
- 构建简单的json树形菜单
json结构: var Menu = [{ tit:"一级菜单", submenu:[{ tit:"二级菜单", url:"", func: ...
- WebApi 得到提交过来的 post 数据
byte[] byts = new byte[System.Web.HttpContext.Current.Request.InputStream.Length]; System.Web.HttpCo ...
- 【AtCoder】ARC076
ARC076 C - Reconciled? 如果\(N = M\) 答案是\(2N!M!\) 如果\(|N - M| = 1\) 答案是\(N!M!\) 否则答案是0 #include <bi ...
- Python 私有属性
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-08-05 # 类 ...
- bootstrap AdminLTE模版的使用
参考: https://adminlte.io/themes/AdminLTE/documentation/index.html https://blog.csdn.net/gebitan505/ ...
- 在vue-cli项目中使用bootstrap的方法示例
在一个html页面中加入bootstrap是很方便,就是一般的将css和js文件通过Link和Script标签就行. 那么在一个用vue-cli生成的前端项目中如何加入?因为框架不一样了,略微要适应一 ...
- 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...
- Collection接口的常用方法
[添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...
- {}动态规划}记忆化dp
先搞个模板 #include<stdio.h> #include<string.h> using namespace std; typedef long long ll; ]; ...
- 老虎ji 剪枝模拟
Problem Description “在赌场里,基本原则就是让他们玩下去以及让他们再来玩.他们玩得越久,他们会输的越多,最后,我们会得到一切.”(摘自1995年的电影Casino) 你正在一家赌场 ...