Asp.net Core发布到CentOS7
2017-07-26 12:36
429 查看
第一步、安装CentOS
官网https://www.centos.org/下载CentOS,下载地址https://www.centos.org/download/,我选的“DVD ISO”,然后虚拟机VMware Workstation Pro上安装的。配置CentOS图形界面请看我另一篇整理的文章。
第二步、配置.NET Core开发项目
a、配置Url网址默认使用http://localhost:5000的Url监听,可通过在项目根目录中添加hosting.json(名字随意)来修改Url和端口号。
{ "server.urls": "http://localhost:5000" }
b、修改Program.cs,新增配置参数
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(); }
c、发布项目
右键项目->发布(B)...->发布方法(M):选文件系统,目标位置(T):默认也行,或者自己指定的PublishOutput文件夹,下一页(X)>,下一页(X)>,发布(P)
把发布成功的项目文件上传到CentOS文件夹下(这里我放在/home/wwwroot/下)
第三步、安装.NET Core环境
a、安装.NET Core SDKsudo yum install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin
详见官方说明:https://www.microsoft.com/net/core#linuxcentos
b、验证是否安装成功
dotnet --info dotnet --version
第四步、配置Nginx
a、从官方地址(http://nginx.org/)下载,解压,配置,编译,安装b、或者通过curl下载,具体步骤如下:
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm rpm -ivh nginx.rpm yum install nginx
c、修改Nginx配置文件/etc/nginx/nginx.conf
server { listen 80; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
d、启动Nginx
systemctl start nginx
e、设置开机启动Nginx
systemctl enable nginx
f、防火墙设置
1)添加站点端口(80、5000)
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=5000/tcp --permanent
其中,80端口是给Nginx用,5000端口是给.NET Core用(见第二步配置)
2)重启防火墙
firewall-cmd –-reload
注:重置CentOS7的root密码请参阅这篇文章。关键代码:
找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 按下 Control+x ,使用单用户模式启动 chroot /sysroot passwd root touch /.autorelabel exit reboot
第五步、设置守护进程Supervisor
a、安装Supervisor
一般情况下,我们在网站发布PublishOutput文件夹下运行
dotnet 项目.dll
可以检查是否正常运行,但是,退出Shell后网站就得停止。所以需要有个程序一直值守并监控着,使网站可以持续运行,所以安装->Supervisor
yum install python-setuptools easy_install supervisor
b、配置Supervisor
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改supervisord.conf文件,将文件尾部配置修改为
[include] files = conf.d/*.conf
注:表示读取的守护配置文件路径和类型
c、重启
supervisorctl reload
d、配置对.NET Core的守护文件
步骤b中的“files = conf.d/*.conf”,即在/etc/supervisor/conf.d/文件夹下,新建一个名为“项目名.conf”的守护文件,内容如下:
[program:应用程序dll的名称] command=dotnet 应用程序dll的名称.dll ; 运行程序的命令 directory=/home/wwwroot/应用程序dll的名称/ ; 命令执行的目录 autostart=true ; 自启动 autorestart=true ; 程序意外退出是否自动重启 stderr_logfile=/var/log/应用程序dll的名称.err.log ; 错误日志文件 stdout_logfile=/var/log/应用程序dll的名称.out.log ; 输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量 user=root ; 进程执行的用户身份 stopsignal=INT
运行Supervisord并查看进程是否生效。
supervisord -c /etc/supervisor/supervisord.conf ps -ef | grep 应用程序dll的名字
设置开机自启动
创建/lib/systemd/system/supervisord.service文件,并修改为以下内容
# dservice for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS) [Unit] Description=Supervisor daemon [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 enable supervisord
验证一下是否为开机启动:systemctl is-enabled supervisord
相关文章推荐
- Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署
- .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布
- Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
- 将asp.net core站点发布到IIS上遇到的问题
- Asp.net Core 初探(发布和部署Linux)
- ASP.NET Core 网站发布到Linux服务器(转)
- .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布
- ASP.NET Core Linux 发布
- docker 初识之二(简单发布ASP.NET Core 网站)
- ASP.NET Core下发布网站
- 关于ASP .NET Core在跨平台的linux ubuntun,SUSE ,Mac OS的发布的相关平台操作
- ASP.NET Core 1.0 安装并发布到Centos 7.2 使用jexus 5.8.2
- 发布ASP.NET Core网站到IIS
- 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目
- [翻译] ASP.NET Core 2.1.0 发布
- ASP.NET Core 指定环境发布(hosting environment)
- ASP.NET Core 发布
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(十)-- 发布(Windows)