在CentOS7中部署.net core2.0项目
2018-01-22 本文已影响0人
StrongAndyZhang
【环境说明】
*服务器系统:CentOS7
*相关工具:Xshell、WinSCP
*服务器软件软件:.netcore2.0、nginx
【准备.net core2.0项目发布包】
使用VS2017的发布功能生成Release包。发布的方式有两种:自宿主式和便携式,我们采用便携式,原因有二:
1.便携式的性能比自宿主式的高
2.微软建议使用便携式
deploy.PNG
【在CentOS7中安装.Net Core2.0 SDK】
1.sudo yum install libunwind libicu(安装libicu依赖)
2.curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131(下载sdk压缩包)
3.sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet(解压缩)
4.sudo ln -s /opt/dotnet/dotnet /usr/local/bin(创建链接)
5.输入 dotnet –info 来查看是否安装成功
dotnetcore.PNG
【部署.Net Core2.0项目】
1.使用WinSCP将发布包放到linux服务器上的/home/wwwroot/目录下,例:/home/wwwroot/DotNetCoreWeb。
2.使用命令运行项目:dotnet /home/wwwroot/DotNetCoreWeb/Portal.dll,其中Portal.dll是Web应用的入口程序,默认端口是5000。
run.PNG
【安装与配置Nginx】
- 安装Nginx
1.curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2.rpm -ivh nginx.rpm
3.yum install nginx
- 配置Nginx,修改 /etc/nginx/conf.d/default.conf 文件。
server {
listen 4000;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
- 重启Nginx服务
至此.Net Core2.0项目在Linux环境中的配置工作基本完毕。但是存在一个问题,就是我之前直接在命令行里使用''dotnet Portal.dll''的方式启动的应用,如果我一旦按Ctrl+Z就shut down了应用,这样导致我不能使用命令行输入别的指令干别的事情。所以这里我们需要一个守护进程,让应用独立的运行。
【安装Supervisor】
1.yum install python-setuptools
2.easy_install supervisor
【配置Supervisor】
1.mkdir /etc/supervisor
2.echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改supervisord.conf文件,将文件尾部的配置
;[include]
;files = relative/directory/*.ini
改成
[include]
files = conf.d/*.conf
【配置对ASP.NET Core应用的守护】
在/etc/supervisor/conf.d/目录下创建一个DotNetCoreWeb.conf文件,内容大致如下:
[program:DotNetCoreWeb]
command=dotnet Portal.dll ; 运行程序的命令
directory=/home/wwwroot/DotNetCoreWeb/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/DotNetCoreWeb.err.log ; 错误日志文件
stdout_logfile=/var/log/DotNetCoreWeb.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
运行supervisord,查看是否生效:
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep DotNetCoreWeb
至此关于ASP.NET Core应用程序的守护即配置完成。