dotNet core 应用部署centos
---恢复内容开始---
阅读目录
- 需要安装的插件以及支撑架构
- 安装dotnetSDK
- 安装jexus
- 安装supervisord
- 遇到问题汇总
- 注意事项、扩展延伸
需要安装的插件以及支撑架构
1.dotnetSDK
dotnet 相关命令是属于 .NET Core command-line (CLI) 的一部分,Microsoft 为我们提供了这个命令行工具以供我们在开发程序中使用,它主要用来进行对代码的编译、NuGet 包的管理、程序的运行、测试等等。
2.jexus
Jexus 是Linux平台上 的一款免费的ASP.NET WEB服务器。它是 Linux、Unix、FreeBSD等非Windows系统架设 ASP.NET WEB 服务器的核心程序,具备反向代理、入侵检测等重要功能。拥有IIS和其它Web服务器所不具备的高度的安全性
3.supervisord
supervisord 是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效。可以将非Daemon的应用转为Daemon程序。
安装dotNetSDK
执行命令
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.1.200
安装对应的 dotnet运行时,这次开发用到的是 2.0.6,
参考地址:
https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-2.0.6
执行命令
sudo yum install dotnet-runtime-2.0.6
安装Jexus
curl https://jexus.org/release/x64/install.sh|sh cd /usr/jexus/siteconf cp default lottery #lottery是配置名称,不同网站名称不同 vim lottery
修改的内容参考:
port=80 root=/ /dotnet/webAPP/admin1.lottery.com/ hosts=*,admin2.lottery.com #OR your.com,*.your.com # addr=0.0.0.0 # CheckQuery=false NoLog=true AppHost={CmdLine=/dotnet/webAPP/admin1.lottery.com/Lottery.WEB.dll;AppRoot=/dotnet/webAPP/admin1.lottery.com;Port=5001}
#这一行数据可以不管他,配置https时候用到
# UseHttps=true
# ssl.certificate=/x/xxx.crt #or pem
# ssl.certificatekey=/x/xxx.key
# ssl.protocol=TLSv1.0 # TLSv1.1 or TLSv1.2...
# ssl.ciphers=
重启读取配置文件
sh /usr/jexus/jws restart
重启读取配置文件之后,本地机器做好host文件映射即可通过域名方式访问该站点
设置jexus开机自启动
参考地址:http://www.bubuko.com/infodetail-1295747.html
cd /etc/init.d vim jws
按i编辑模式,粘贴下面内容
#!/bin/bash #chkconfig: 2345 80 05 #description:jws # . /etc/rc.d/init.d/functions case "$1" in start) echo "Jexus Start.." /usr/jexus/jws start ;; stop) echo "Jexus Stop.." /usr/jexus/jws stop ;; restart) echo "Jexus Restart" /usr/jexus/jws restart ;; status) /usr/jexus/jws status ;;*) exit 1 ;; esac exit $RETVAL
添加权限
chmod 766 jws
添加服务
chkconfig --add jws
安装Supervisord
参考地址:https://www.cnblogs.com/hobinly/p/7382038.html
yum install python-setuptools easy_install supervisor
配置supervisor
在etc下创建目录,并赋权限
mkdir -m 700 -p /etc/supervisor
在目录“ /etc/supervisor”下创建配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改配置文件
vim /etc/supervisor/supervisord.conf
在文件末尾添加,注意首尾需无空格,需顶格
[include] files=/etc/supervisor/conf.d/*.conf
在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”
mkdir -m 700 /etc/supervisor/conf.d
创建进程配置文件
vim /etc/supervisor/conf.d/lottery.conf
[program:Lottery.WEB] command=/bin/bash -c "dotnet Lottery.WEB.dll" directory=/dotnet/webAPP/admin1.lottery.com/ stderr_logfile=/var/log/Lottery.error.log stdout_logfile=/var/log/Lottery.stdout.log environment=ASPNETCORE_ENVIRONMENT=Production user=root stopsignal=INT autostart=true autorestart=true startsecs=1
备注:command=/bin/bash -c "dotnet Lottery.WEB.dll"
可以改成 command=dotnet /dotnet/webAPP/admin1.lottery.com/dotnet Lottery.WEB.dll
[program:Lottery.WEB] ;显示名称
command=/bin/bash -c "dotnet MyDotNetName.dll" ;运行命令,启动dotnet进程
directory=/usr/PublishOutput/ ;MyDotNetName目录
stderr_logfile=/var/log/Lottery.error.log ;错误日志文件
stdout_logfile=/var/log/Lottery.stdout.log ;日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
user=root ;进程执行用户
autostart=true ;自动启动 autorestart=true ;是否自动重启
startsecs=1 ;自动重启间隔时间
创建supervisor 自启动服务
vim /etc/systemd/system/supervisor.service
编辑内容:
[Unit] Description=supervisor [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
使配置生效
systemctl daemon-reload
设置服务开机启动,即设置enable
systemctl enable supervisor.service
启动服务
systemctl start supervisor.service
验证dotnet进程是否启动
使用命令“ps -ef | grep dotnet”查看dotnet 是否运行
ps -ef | grep dotnet root 1549 2529 0 17:17 pts/0 00:00:00 grep --color=auto dotnet root 27795 27764 0 17:07 ? 00:00:02 dotnet Lottery.WEB.dll
supervisor远程管理
使用命令“vim /etc/supervisor/supervisord.conf”修改配置文件,如下设置
;[inet_http_server] ; inet (TCP) server disabled by default
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))
;以下内容开启http服务[inet_http_server]
[inet_http_server]
port=192.168.1.71:9001 ;ip 加端口 username=admin ;登陆账号,可以不设 password=123456 ;登陆账户,可以不设
重启服务,就可以访问了
注意防火墙是否对端口9001开放
也可以设置成
[inet_http_server]
port=*:9001
username=root ;登陆账号,可以不设
password=123456 ;登陆账户,可以不设
问题汇总
图片验证码报错的话安装
解决:
yum install libgdiplus-devel
注意:
yum install libgdiplus 后,在centos7 下,程序并不能运行成功还是报错,查看libgdiplus安装情况
rpm -qa |grep libgdiplus
rpm -ql libgdiplus-2.10-9.el7.x86_64
在/usr/lib64下缺少libgdiplus.so文件
Centos7 需要通过安装libgdiplus-devel来解决
yum install autoconf automake libtool
yum install freetype-devel fontconfig libXft-devel
yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel
yum install glib2-devel cairo-devel
git clone https://github.com/mono/libgdiplus
cd libgdiplus
./autogen.sh
make
make install
cd /usr/lib64/
ln -s /usr/local/lib/libgdiplus.so gdiplus.dll
错误一
type init 错误。提示找不到libgdiplus组件
Make solution 1:
ln -s /usr/local/lib/libgdiplus.so /usr/lib64/libgdiplus.so ln -s /usr/local/lib/libgdiplus.so /usr/libgdiplus.so
验证码乱码问题:
如果验证码乱码,请确认生成验证码的字体库是否存在服务器中
注意事项、扩展延伸
关于更新应用
Dotnet程序在运行当中,如果需要更新 dotnetCore应用,将新打包的应用直接覆盖到部署的路径下,在从supervisord 9001端口中重启指定的应用,或者在服务器上执行命令
supervisorctl -c /etc/supervisor/supervisord.conf restart Lottery.WEB
关于dotnetCore WEB应用设置不同的端口
修改Program.cs文件
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseStartup<Startup>()
.UseUrls("http://*:5001")
.Build();
}
关于部署 https的WEB应用
在部署https WEB应用的时候,我已经拿到了 一个后缀为pem文件还有一个后缀为key的文件
第一步:需要这两个文件生成后缀为pfx的文件,并设置生成 pfx文件的密码
centos系统下执行命令
openssl pkcs12 -export -out iiscert.pfx -inkey private.key -in public.pem
然后会让你输入密码(密码不要忘记了)
第二步:修改jexus站点配置信息
vim /etc/supervisor/conf.d/lottery.conf
UseHttps=true
ssl.certificate=/dotnet/httpsKey/public.pem #crt or pem
ssl.certificatekey=/dotnet/httpsKey/private.key
ssl.protocol=TLSv1.2 # TLSv1.1 or TLSv1.2...
#ssl.ciphers=
wp! 保存
修改程序 Program.cs文件
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel(options => options.Listen(IPAddress.Any, 5003, listenOptions =>
{
listenOptions.UseHttps(new X509Certificate2("/dotnet/httpsKey/iiscert.pfx", "123456"));
}))
.UseStartup<Startup>()
.Build();
重新部署到服务器,并重启supervisor对应的进程
关于部署非WEB应用
如果需要部署到非WEB应用程序,则不需要执行 jexus的步骤,直接在 supervisor上新增一个进程配置文件(/etc/supervisor/conf.d/ 这个目录下一个*,conf文件代表一个进程配置)
dotNet core 应用部署centos的更多相关文章
- dotNet core 应用部署至 centos(超详解附截图)
文章来源:公众号-智能化IT系统. 需要安装的插件以及支撑架构 1.dotnetSDK dotnet 相关命令是属于 .NET Core command-line (CLI) 的一部分,Microso ...
- 2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行
我们继续解决上篇博客的问题,我这个人有个毛病,不喜欢遗留什么问题,也不喜欢问题说不明白,具体要怎么解决一定要详尽,因为经常自己遇到问题的时候,去翻别人的博客,就会遇到这样的问题,很苦恼,又说废话了. ...
- ubuntu上部署windows开发的dotnet core程序
目标:完成windows上开发的dotnet core程序部署至linux服务器上(Ubuntu 14.04) windows上开发dotnet core很简单,安装好VS2017,建立相关类型的项目 ...
- DotNet Core 1.0 集成 CentOS 开发与运行环境部署
一. DotNet Core 1.0 开发环境部署 操作系统安装 我们使用CentOS 7.2.1511版本. 安装libunwind库 执行:sudo yum install libunwi ...
- dotnet core 使用 sqlite 部署到 Centos 服务器
原文:dotnet core 使用 sqlite 部署到 Centos 服务器 本文告诉大家如何创建一个 asp dotnet core 程序,这个程序使用 sqlite 保存,部署程序到 Cento ...
- centos 配置.Net core 环境并部署dotnet Core文件
一.配置环境[Microsoft dotnet Core] 1) Add the dotnet product feed sudo rpm -Uvh https://packages.microsof ...
- 2017-03-05 CentOS中结合Nginx部署dotnet core Web应用程序
Visual Studio Live 倒计时2天,当然这是美国倒计时两天,中国应该是在3月8日的凌晨,正值"3.8妇女节".提前祝广大的女性同志节日快乐,当然还有奋斗在一线的程序媛 ...
- Linux CentOS 7 下dotnet core webpai + nginx 部署
参考:https://www.jianshu.com/p/b1f573ca50c7 跟着做到,配置nginx访问dotnet core网站时,报错了. 错误如下所示—— 查看nginx的错误日志: c ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...
随机推荐
- [leetcode]636. Exclusive Time of Functions函数独占时间
Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU, find ...
- 10-能不能组成m
/* 找数达人 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 小明最近做出了一道题:如何在一组数 ...
- ADF 入门帮助
本文是由英文帮助翻译所得: 1>task flows “任务流 task flows”可以包括非可视化的组件,比如方法调用.“页片段 page fragment”可以运行在一个页面的某个局部区域 ...
- window.location.origin
当前页面的域名+端口号 var HTTP_REMOTE = (function () { var origin = window.location.origin; if (origin.match(/ ...
- RocketMQ的客户端连接数调查
RocketMQ版本:3.4.6 ==问题现象== RocketMQ集群的某个topic,在一部分节点上消费有“断层”,这部分数据一致没办法消费. ==调查过程== 一顿操作猛如虎的调查之后发现, 该 ...
- 2018.09.09 bzoj3505: [Cqoi2014]数三角形(容斥原理+简单计数)
传送门 正难则反. 可以直接把问题转化成求出三点共线的情况数量. 如果同在一排或一列显然可以直接算,关键是如何求出斜着的. 我们知道,对于一个整点矩形. 如果长为x,宽为y,那么这个矩形任意一条对角线 ...
- 2018.08.04 spoj TTM to the moon(主席树)
spoj传送门 vjudge传送门 主席树板子题. 支持历史版本的区间和,区间和,区间修改和时光倒流. 其中新奇一点的也只有区间修改了,这个东西直接标记永久化就行了. 如果想下传标记的话也行,需要在p ...
- C++之类和对象的使用(一)
对象的初始化 在声明类时直接对数据成员初始化是错误的!下面的例子时错误的!! class Time{ hour =; minitu=; sec=; } //因为类并不是一个实体,而是一种抽象类型,并不 ...
- Linux下安装配置 Jdk1.6+Tomcat6+Apache2.2.x+jk_mod1.2 详解
本篇以Redhat AS5,内核为Linux 2.6.18-8.el5 为例,其中Redhat/Fedora系列基本一致,其他Linux或者版本均可以参考. STEP 1 软件下载:1. jdk1.6 ...
- ViewFlipper实现自动播放的图片库
作者实现的基础上,加上了文字的变换 public class MainActivity extends Activity { private ViewFlipper viewFlipper; priv ...