使用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 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax
网上查了,应是升级到了python3,yum用的是python2,于是
$ vi /usr/bin/yum
将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2.7"
继续录入安装命令。成功!
把发布的文件夹上传到linux上,在当前目录下执行如下命令
dotnet MyPriceApi.dll
到此我都比较顺利。但以上命令在断开终端后,程序会退出。所以还需要弄个守护进程。结果网上的信息比较旧的,搞得很是狼狈。最后在参考以下文章,
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= ; 自动重启间隔
将文中开始说到的文件都上传到linux的/opt/publish目录下,启动守护进程程序
systemctl start supervisord.service
期间还遇到过服务器曾升级过python,部分命令支行出错,需要vi相关命令文件,修改头的一行#!/usr/bin/python修改为#!/usr/bin/python2.7
好了,第一版就这样了,以后主程序修改后,可以直接上传测试期间生成的相关dll,并执行重启就行了
#supervisorctl restart MyPriceApi
最后需要配置一下服务的自启动
systemctl enable supervisord.service