1 在项目中添加 hosting.json 文件用来配置端口,内容如下
{ "urls": "http://*:12306" }
修改 Program.cs 文件 Main 方法如下
public static void Main(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("hosting.json", optional: true) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseConfiguration(config) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }
这样发布端口就设置为 12306
2 使用vs发布功能生成发布包,项目框架为 .net core 5.0
3 在linux服务器上安装对应版本的运行时
如 centos 安装运行时命令
sudo dnf install aspnetcore-runtime-5.0
微软文档 https://docs.microsoft.com/zh-cn/dotnet/core/install/linux
4 把发布包复制到 linux 的某个目录下 如 /publish/publish.test
4 在 linux 终端上,进入到该路径下(即 /publish/publish.test),然后使用 dotnet publish.test.dll 命令就可以启动 asp.net core 应用了
这时可以直接访问网站了,url 格式 linux服务器ip:12306
5 在linux服务器上安装 supervisor 守护进程
之前的启动方式,一旦我们推出了bash,网站也停止了,所以我们在linux安装 supervisor 来托管我们的网站,
5.1 依次执行如下命令安装并配置supervisor
yum install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
5.2 添加本网站配置文件
在/etc/supervisor目录下创建目录conf.d,在目录下创建网站配置文件 publishTest.conf,文件内容如下
[program:publishTest] command=dotnet publish.test.dll directory=/publish/publish.test autorestart=true stderr_logfile=/var/log/publishTest.err.log stdout_logfile=/var/log/publishTest.out.log environment=ASPNETCORE_ENVIRONMENT=Production user=root stopsignal=INT
修改supervisord.conf文件读取网站配置,将文件最后的 include 内容修改如下:
[include] files=/etc/supervisor/conf.d/*.conf ;files = relative/directory/*.ini
6 启动 supervisor
启动命令如下
supervisord -c /etc/supervisor/supervisord.conf
在启动时如果报错 Another program is already listenling on a port that .......
解决方法
ps -ef | grep supervisord
然后 kill -9 线程
7 修改 supervisord.conf 文件中inet_http_server配置节,启用web页面管理
修改内容如下
打开浏览器,输入地址 服务器ip:22222 访问supervisor管理端,用户名 为 user 密码为123