asp.net core2.0网站的环境搭建和网站部署
使用到的软件和硬件
1. centos7.3服务器一台
2. xshell、xftp
3. vs2017
4. .NET Core
1. 安装 libicu 依赖
[root@jdu4e00u53f7 ~]# yum install libunwind libicu

2.下载.NET Core2.0
https://www.microsoft.com/net/download/linux
下载对应操作系统的Runtime版本
使用xftp5将下载的文件上传到opt目录下
[root@jdu4e00u53f7 opt]# mkdir -p /opt/dotnet && tar zxf dotnet-runtime-2.0.0-linux-x64.tar.gz -C /opt/dotnet

3.创建连接(环境配置)
[root@jdu4e00u53f7 dotnet]# ln -s /opt/dotnet/dotnet /usr/local/bin
4.测试环境是否成功
[root@jdu4e00u53f7 dotnet]# dotnet --info

2、3、4也可参考官网给的操作,安装sdk版也可以。
https://www.microsoft.com/net/download/linux
5.项目发布
.net core项目在不制定具体端口的情况下,会默认使用5000端口
Program.cs添加.UseUrls("http://*:80")

使用xftp将发布程序上传到服务器
[root@jdu4e00u53f7 aspnetcoreapp]# dotnet aspnetcoreapp.dll
至此,就是下图的原理。

如果只是测试服务器上是否能跑起来程序,到此结束了。如果要正式线上运行还需要下面的操作。Nginx不识别http://*:80这样的设置。

使用nginx+ supervisor后的原理。Nginx也可以使用jexus(开发者:宇内流云)

6.安装守护进程
所在目录(/etc/supervisor/conf.d)
[root@jdu4e00u53f7 aspnetcoreapp]# yum install python-setuptools
[root@jdu4e00u53f7 aspnetcoreapp]# easy_install supervisor
#配置supervisor
[root@jdu4e00u53f7 aspnetcoreapp]# mkdir /etc/supervisor
[root@jdu4e00u53f7 aspnetcoreapp]# echo_supervisord_conf > /etc/supervisor/supervisord.conf
[root@jdu4e00u53f7 aspnetcoreapp]# cd /etc/supervisor
[root@jdu4e00u53f7 supervisor]# ls
supervisord.conf
#修改配置文件
[root@jdu4e00u53f7 supervisor]# vi supervisord.conf
#将文件最后的内容修改为

创建目录conf.d,在目录下创建文件aspnetcoreapp.conf,编辑vi aspnetcoreapp.conf
[program:aspnetcoreapp]
command=dotnet aspnetcoreapp.dll
directory=/var/www/html/aspnetcoreapp
autostart=true
autorestart=true
stderr_logfile=/var/log/aspnetcoreapp.err.log
stdout_logfile=/var/log/aspnetcoreapp.out.log
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
运行supervisord并查看进程是否生效
[root@jdu4e00u53f7 conf.d]# supervisord -c /etc/supervisor/supervisord.conf
[root@jdu4e00u53f7 conf.d]# ps -ef | grep aspnetcoreapp

重启supervisord
[root@jdu4e00u53f7 conf.d]# supervisorctl reload
关闭
[root@jdu4e00u53f7 bin]# supervisorctl shutdown
Shut down
开启
[root@jdu4e00u53f7 bin]# supervisord -c /etc/supervisor/supervisord.conf
禁用开机启动命令:systemctl disable supervisord
查看是否开机自启动:systemctl is-enabled supervisord
开启管理界面
[root@jdu4e00u53f7 supervisor]# vi /etc/supervisor/supervisord.conf
7.安装nginx
http://dl.fedoraproject.org/pub/epel/
下载
[root@jdu4e00u53f7 opt]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
安装epel
[root@jdu4e00u53f7 opt]# rpm -ivh epel-release-7-10.noarch.rpm
安装nginx
[root@jdu4e00u53f7 opt]# yum install nginx
启动nginx
[root@jdu4e00u53f7 opt]# systemctl start nginx
将nginx添加至SELinux的白名单,否则会报502错误
[root@jdu4e00u53f7 opt]# yum install policycoreutils-python
semodule -i mynginx.pp
测试nginx是否正常
curl http://127.0.0.1
由于京东云上面已经安装了nginx,上面的步骤也就没执行。
8.配置nginx
修改配置文件/etc/nginx/nginx.conf中server部分为以下内容,配置Nginx侦听之前的网站
nginx -s reload :修改配置后重新加载生效
nginx -s stop :快速停止nginx
小知识
防火墙设置
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd –reload
通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。
再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。
参考资料:
1. UseUrls的使用
https://q.cnblogs.com/q/80263/
2. 官方下载安装说明
https://www.microsoft.com/net/download/linux
3. kestrel介绍
http://www.cnblogs.com/Wddpct/p/6123653.html
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
4. self-contained(自宿主)部署方式,不推荐
http://www.cnblogs.com/dudu/p/5638172.html
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/index
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs
https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json
5.asp.net core迁移博客
http://www.cnblogs.com/mantgh/p/5658398.html
6.asp.net core发布到linux上
http://www.cnblogs.com/smileberry/p/6878421.html
7.另一篇部署
http://www.cnblogs.com/ants/p/5732337.html
8.asp.net core启动流程
http://www.cnblogs.com/sheng-jie/p/7640163.html
9.还是一篇部署
https://segmentfault.com/a/1190000010763523
http://www.cnblogs.com/yuangang/p/5787122.html
10.守护进程
http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html
11..NET文档
https://docs.microsoft.com/zh-cn/dotnet/
https://www.microsoft.com/net/core#windowscmd
总结
1. 在Program.cs里设置.UseUrls("http://*:8080"),发布后使用dotnet XXXX.dll后,不使用ctrl+C退出则可以公网访问。但是,一旦退出(关闭远程连接)则无法访问,需要使用守护进程+nginx,Program.cs则要设置.UseUrls("http://127.0.0.1:8080")。
Jexus
1.安装
curl https://jexus.org/release/x64/install.sh|sh
2.开启与关闭
[root@jdu4e00u53f7 jexus-5.8.2]# cd /usr/jexus
[root@jdu4e00u53f7 jexus]# ./jws start
Starting ... OK
[root@jdu4e00u53f7 jexus]# ./jws stop
Stopping ... ... OK.
2.配置
先关闭nginx、Supervisor
[root@jdu4e00u53f7 siteconf]# pkill -9 nginx
[root@jdu4e00u53f7 siteconf]# supervisorctl shutdown
[root@jdu4e00u53f7 siteconf]# vi default
port=80
root=/ /var/www/html/aspnetcoreapp
hosts=* #OR your.com,*.your.com
# addr=0.0.0.0
# CheckQuery=false
NoLog=trueAppHost={CmdLine=dotnet /var/www/html/aspnetcoreapp/aspnetcoreapp.dll;AppRoot=/var/www/html/aspnetcoreapp;Port=8080}
# NoFile=/index.aspx
Keep_Alive=false
UseGZIP=false
OutLog=/tmp/out.txt;
ErrorLog=/tmp/err.txt;
[root@jdu4e00u53f7 siteconf]# cd ..
[root@jdu4e00u53f7 jexus]# ./jws start
2.设置自启动
Jexus包括如下操作命令(首先 cd /usr/jexus):
启动:sudo ./jws start
停止:sudo ./jws stop
重启:sudo ./jws restart
如何部署多个网站?(jexus的版本必须是5.8.2及以上)
1.去除Program.cs里的UseUrls

2. siteconf下新建每个网站的配置文件,一个网站一个配置文件
3.配置里Port设置为0

我这边配置了2个网站core.uoolo.com和netcore.uoolo.com 2个站点
参考:
http://blog.csdn.net/u010584641/article/details/73611223
http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html
使用到的软件和硬件
1. centos7.3服务器一台
2. xshell、xftp
3. vs2017
4. .NET Core
1. 安装 libicu 依赖
[root@jdu4e00u53f7 ~]# yum install libunwind libicu

2.下载.NET Core2.0
https://www.microsoft.com/net/download/linux
下载对应操作系统的Runtime版本
使用xftp5将下载的文件上传到opt目录下
[root@jdu4e00u53f7 opt]# mkdir -p /opt/dotnet && tar zxf dotnet-runtime-2.0.0-linux-x64.tar.gz -C /opt/dotnet

3.创建连接(环境配置)
[root@jdu4e00u53f7 dotnet]# ln -s /opt/dotnet/dotnet /usr/local/bin
4.测试环境是否成功
[root@jdu4e00u53f7 dotnet]# dotnet --info

2、3、4也可参考官网给的操作,安装sdk版也可以。
https://www.microsoft.com/net/download/linux
5.项目发布
.net core项目在不制定具体端口的情况下,会默认使用5000端口
Program.cs添加.UseUrls("http://*:80")

使用xftp将发布程序上传到服务器
[root@jdu4e00u53f7 aspnetcoreapp]# dotnet aspnetcoreapp.dll
至此,就是下图的原理。

如果只是测试服务器上是否能跑起来程序,到此结束了。如果要正式线上运行还需要下面的操作。Nginx不识别http://*:80这样的设置。

使用nginx+ supervisor后的原理。Nginx也可以使用jexus(开发者:宇内流云)

6.安装守护进程
所在目录(/etc/supervisor/conf.d)
[root@jdu4e00u53f7 aspnetcoreapp]# yum install python-setuptools
[root@jdu4e00u53f7 aspnetcoreapp]# easy_install supervisor
#配置supervisor
[root@jdu4e00u53f7 aspnetcoreapp]# mkdir /etc/supervisor
[root@jdu4e00u53f7 aspnetcoreapp]# echo_supervisord_conf > /etc/supervisor/supervisord.conf
[root@jdu4e00u53f7 aspnetcoreapp]# cd /etc/supervisor
[root@jdu4e00u53f7 supervisor]# ls
supervisord.conf
#修改配置文件
[root@jdu4e00u53f7 supervisor]# vi supervisord.conf
#将文件最后的内容修改为

创建目录conf.d,在目录下创建文件aspnetcoreapp.conf,编辑vi aspnetcoreapp.conf
[program:aspnetcoreapp]
command=dotnet aspnetcoreapp.dll
directory=/var/www/html/aspnetcoreapp
autostart=true
autorestart=true
stderr_logfile=/var/log/aspnetcoreapp.err.log
stdout_logfile=/var/log/aspnetcoreapp.out.log
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
运行supervisord并查看进程是否生效
[root@jdu4e00u53f7 conf.d]# supervisord -c /etc/supervisor/supervisord.conf
[root@jdu4e00u53f7 conf.d]# ps -ef | grep aspnetcoreapp

重启supervisord
[root@jdu4e00u53f7 conf.d]# supervisorctl reload
关闭
[root@jdu4e00u53f7 bin]# supervisorctl shutdown
Shut down
开启
[root@jdu4e00u53f7 bin]# supervisord -c /etc/supervisor/supervisord.conf
禁用开机启动命令:systemctl disable supervisord
查看是否开机自启动:systemctl is-enabled supervisord
开启管理界面
[root@jdu4e00u53f7 supervisor]# vi /etc/supervisor/supervisord.conf
7.安装nginx
http://dl.fedoraproject.org/pub/epel/
下载
[root@jdu4e00u53f7 opt]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
安装epel
[root@jdu4e00u53f7 opt]# rpm -ivh epel-release-7-10.noarch.rpm
安装nginx
[root@jdu4e00u53f7 opt]# yum install nginx
启动nginx
[root@jdu4e00u53f7 opt]# systemctl start nginx
将nginx添加至SELinux的白名单,否则会报502错误
[root@jdu4e00u53f7 opt]# yum install policycoreutils-python
semodule -i mynginx.pp
测试nginx是否正常
curl http://127.0.0.1
由于京东云上面已经安装了nginx,上面的步骤也就没执行。
8.配置nginx
修改配置文件/etc/nginx/nginx.conf中server部分为以下内容,配置Nginx侦听之前的网站
nginx -s reload :修改配置后重新加载生效
nginx -s stop :快速停止nginx
小知识
防火墙设置
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd –reload
通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。
再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。
参考资料:
1. UseUrls的使用
https://q.cnblogs.com/q/80263/
2. 官方下载安装说明
https://www.microsoft.com/net/download/linux
3. kestrel介绍
http://www.cnblogs.com/Wddpct/p/6123653.html
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
4. self-contained(自宿主)部署方式,不推荐
http://www.cnblogs.com/dudu/p/5638172.html
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/index
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs
https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json
5.asp.net core迁移博客
http://www.cnblogs.com/mantgh/p/5658398.html
6.asp.net core发布到linux上
http://www.cnblogs.com/smileberry/p/6878421.html
7.另一篇部署
http://www.cnblogs.com/ants/p/5732337.html
8.asp.net core启动流程
http://www.cnblogs.com/sheng-jie/p/7640163.html
9.还是一篇部署
https://segmentfault.com/a/1190000010763523
http://www.cnblogs.com/yuangang/p/5787122.html
10.守护进程
http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html
11..NET文档
https://docs.microsoft.com/zh-cn/dotnet/
https://www.microsoft.com/net/core#windowscmd
总结
1. 在Program.cs里设置.UseUrls("http://*:8080"),发布后使用dotnet XXXX.dll后,不使用ctrl+C退出则可以公网访问。但是,一旦退出(关闭远程连接)则无法访问,需要使用守护进程+nginx,Program.cs则要设置.UseUrls("http://127.0.0.1:8080")。
Jexus
1.安装
curl https://jexus.org/release/x64/install.sh|sh
2.开启与关闭
[root@jdu4e00u53f7 jexus-5.8.2]# cd /usr/jexus
[root@jdu4e00u53f7 jexus]# ./jws start
Starting ... OK
[root@jdu4e00u53f7 jexus]# ./jws stop
Stopping ... ... OK.
2.配置
先关闭nginx、Supervisor
[root@jdu4e00u53f7 siteconf]# pkill -9 nginx
[root@jdu4e00u53f7 siteconf]# supervisorctl shutdown
[root@jdu4e00u53f7 siteconf]# vi default
port=80
root=/ /var/www/html/aspnetcoreapp
hosts=* #OR your.com,*.your.com
# addr=0.0.0.0
# CheckQuery=false
NoLog=trueAppHost={CmdLine=dotnet /var/www/html/aspnetcoreapp/aspnetcoreapp.dll;AppRoot=/var/www/html/aspnetcoreapp;Port=8080}
# NoFile=/index.aspx
Keep_Alive=false
UseGZIP=false
OutLog=/tmp/out.txt;
ErrorLog=/tmp/err.txt;
[root@jdu4e00u53f7 siteconf]# cd ..
[root@jdu4e00u53f7 jexus]# ./jws start
2.设置自启动
Jexus包括如下操作命令(首先 cd /usr/jexus):
启动:sudo ./jws start
停止:sudo ./jws stop
重启:sudo ./jws restart
如何部署多个网站?(jexus的版本必须是5.8.2及以上)
1.去除Program.cs里的UseUrls

2. siteconf下新建每个网站的配置文件,一个网站一个配置文件
3.配置里Port设置为0

我这边配置了2个网站core.uoolo.com和netcore.uoolo.com 2个站点
参考:
http://blog.csdn.net/u010584641/article/details/73611223
http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html
asp.net core2.0网站的环境搭建和网站部署的更多相关文章
- VS2017创建一个 ASP.NET Core2.0 应用,并搭建 MVC 框架
https://testerhome.com/topics/11747 1.使用最新版本的VS2017,并安装.NET Core2.0中相关开发工具 2.打开VS2017,点击文件-新建-项目,选 ...
- 【翻译】asp.net core2.0中的token认证
原文地址:https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide token ...
- 在阿里云Windows Server 上部署ASP .NET CORE2.0项目
近期使用ASP.NET Core2.0对博客进行了重写,在部署到服务器时遇到了一些问题,来记录一下留用. 配置环境 安装 .Net Framework3.5 在IIS管理器上直接开启,这里总是失败,上 ...
- asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)
原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二) 续上一篇文章:asp.net core2.0 部署centos7/linux系统 -- ...
- 将asp.net core2.0项目部署在IIS上运行
原文:将asp.net core2.0项目部署在IIS上运行 前言: 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是独立运行的.它独立运行在控 ...
- 一步一步带你做WebApi迁移ASP.NET Core2.0
随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP ...
- 通过Mysql连接ASP.Net Core2.0(Code First模式)
ASP.NET Core2.0连接Mysql,首先新建项目 选择Web应用程序 选择需要身份验证: 通过Nuget安装Mysql驱动,这里推荐>Pomelo.EntityFrameworkCor ...
- WebApi迁移ASP.NET Core2.0
WebApi迁移ASP.NET Core2.0 一步一步带你做WebApi迁移ASP.NET Core2.0 随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的AS ...
- .Net Core技术研究-WebApi迁移ASP.NET Core2.0
随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP ...
随机推荐
- 201521123062《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 多态定义:同种形态不同定义 类注释格式 继承,共同行为及属性 在instanceof检查过后 ...
- 201521123006 《java程序设计》 第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...
- 201521123025<<java程序设计>>第9周学习总结
1. 本周学习总结 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 经常出现Array ...
- 201521123106 《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 201521123008《Java程序设计》第十二周学习总结
1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...
- 06jQuery-05-事件
不同的浏览器绑定事件的代码都不太一样,所以我们使用jQuery来写代码的话,可以屏蔽不同浏览器之间的差异. 在jQuery中,可以使用 on 来绑定一个事件,指定事件的名称和对应的处理函数: // 获 ...
- stsuts2的一些问题
1.什么是struts2? struts2是一个基于MVC设计模式的框架, 2.struts2的工作原理. 1.客户端发送一个请求 2.经过核心过滤器StrutsPrepareAndExecuteFi ...
- 渗透相关website
开源安全测试方法论:http://www.isecom.org/research/osstmm.html 信息系统安全评估框架:www.oissg.org/issaf 开放式web应用程序安全项目(O ...
- 《Node.js在CLI下的工程化体系实践》成都OSC源创汇分享总结
背景: 随着开发团队规模不断发展壮大,在人员增加的同时也带来了协作成本的增加,业务项目越来越多,类型也各不相同.常见的类型有组件类.活动类.基于React+redux的业务项目.RN项目.Node.j ...
- ASP.NET Core 2.0 使用支付宝PC网站支付
前言 最近在使用ASP.NET Core来进行开发,刚好有个接入支付宝支付的需求,百度了一下没找到相关的资料,看了官方的SDK以及Demo都还是.NET Framework的,所以就先根据官方SDK的 ...