发布自己的第一版asp.net core的RESTful接口程序

使用window开发一个简单的asp.net Core的RESTfull程序,网上很多,这里不说,我是直接使用IDE自己生成的项目来发布的。没有修改过主要代码。在IDE里发布到本地目录,得到类似文件

好了,去linux服务器上安装dotnet core

https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial#install

注意选择需要操作系统

我的CentOS7上安装,只需要

#sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
#sudo yum install dotnet-sdk-2.2

结果提示

File "/usr/bin/yum", line 30 

except KeyboardInterrupt, e: 

                                         ^

SyntaxError: invalid syntax

网上查了,应是升级到了python3,yum用的是python2,于是

$ vi /usr/bin/yum

将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2.7"

继续录入安装命令。成功!

把发布的文件夹上传到linux上,在当前目录下执行如下命令

dotnet MyPriceApi.dll

到此我都比较顺利。当然上面的执行方式有两个问题。

问题一:端口侦听是的localhost,本机,外部无法访问,如果用nginx反向代理就不是什么问题,如果简单点,想直接对外服务,可以使用以下命令

dotnet MyPriceApi.dll --urls http://*:5000

问题二:使用以上命令在断开终端后,程序会退出。所以还需要弄个守护进程。这有两个办法,一个是将dotnet以服务的方式运行,二是使用supervisor。

将命令以服务的方式运行

vi /etc/systemd/system/myprice.service

录入以下内容

[Service]
WorkingDirectory=/opt/wcsc/myprice
ExecStart=/usr/bin/dotnet /opt/wcsc/myprice/MyPriceApi.dll --urls http://*:5000
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

启用服务

systemctl enable myprice.service

systemctl start myprice.service

 

使用supervisor

结果网上的信息比较旧的,搞得很是狼狈。最后在参考以下文章,

https://www.xncoding.com/2016/10/12/linux/supervisor.html

才得到完成。这里详细说说

安装配置supervisor

我使用以下命令安装

yum install  supervisor

安装完成之后,可以运行 echo_supervisord_conf 生成默认的配置文件:

echo_supervisord_conf > /etc/supervisord.conf

修改配置文件,方便导入子目录下的所有conf文件

vi /etc/supervisord.conf

将文件尾部的files一段修改如下

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

之后在/etc/supervisord.d目录下创建我自己其中的一个项目配置文件priceApi.conf,内容如下:

[program: MyPriceApi]
command=dotnet MyPriceApi.dll ; 运行程序的命令
directory=/opt/publish/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/MyPriceApi.err.log ; 错误日志文件
stdout_logfile=/var/log/MyPriceApi.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔

将文中开始说到的文件都上传到linux的/opt/publish目录下,启动守护进程程序

systemctl start supervisord.service

期间还遇到过服务器曾升级过python,部分命令支行出错,需要vi相关命令文件,修改头的一行#!/usr/bin/python修改为#!/usr/bin/python2.7

好了,第一版就这样了,以后主程序修改后,可以直接上传测试期间生成的相关dll,并执行重启就行了

#supervisorctl restart MyPriceApi

最后需要配置一下服务的自启动

systemctl enable supervisord.service

  

 

posted @ 2018-12-26 11:47  生命体验之kevin-Y  阅读(908)  评论(0编辑  收藏  举报