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.rpmsudo 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|shcd /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/functionscase "$1" instart)

  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 dotnetroot      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 libtoolyum install freetype-devel fontconfig libXft-develyum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-develyum install glib2-devel cairo-develgit clone https://github.com/mono/libgdipluscd libgdiplus./autogen.shmakemake installcd /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()

          .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()

            .Build();

重新部署到服务器,并重启supervisor对应的进程

关于部署非WEB应用

如果需要部署到非WEB应用程序,则不需要执行 jexus的步骤,直接在 supervisor上新增一个进程配置文件(/etc/supervisor/conf.d/  这个目录下一个*,conf文件代表一个进程配置)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容