摘要:网站上线运行后,遇到修改网站的情况,如何保证网站7*24小时不中断运行。
一、要解决的问题:
1.Nopcommerce4.0已经上线运行,为最大限度提高网站性能,用nginx作为反向代理服务器,后台Nopcommerce4.0 用生产环境运行,缺省端口号改为6000.
2.网站上线后,搜索引擎会不断爬网站,这时候网站不能随意中断。因为经常中断网站,搜索引擎会认为该网站故障率太高,网站不稳定,从而会对该网站降权。
bing.com 来了,请都请不来,又怎么舍得让你走?
3.网站迭代更新之后,必须要重启网站,怎么办?
二、解决方案
总体思路: 配置nginx 负载均衡服务器,配置两个网站服务器,一个以生产环境方式运行,另一个用开发环境模式运行。其中一个网站中断后,会自动代理到另一个网站,从而达到网站不中断的目的。
(一)一个网站用生产环境运行
1.在Program.cs配置端口号6000
public class Program
{
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 6000);
})
....
.Build();
}
}
2.用生产环境方式运行,写个批处理wwwiaspnetcoreNetcorepublishAndRun.bat
cd \Nopcommerce\wwwiaspnetcoreNetcore20RTM\src\Presentation\Nop.Web
dotnet publish -c release
cd Nopcommerce\wwwiaspnetcoreNetcore20RTM\src\Presentation\Nop.Web\bin\Release\netcoreapp2.0\publish
dotnet Nop.Web.dll
运行结果:
3.配置命令行设置端口的程序代码,可以自己随意设置端口
public class Program
{
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddCommandLine(args)
.Build();
var host = WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.AddServerHeader = false;
options.Listen(IPAddress.Loopback, 6000);
})
.UseConfiguration(config)
.CaptureStartupErrors(true)
.UseSetting(WebHostDefaults.PreventHostingStartupKey, "true")
.UseStartup()
.Build();
host.Run();
}
}
4、以开发模式运行修改后的网站,端口号随便设置,建个批处理wwwiaspnetcoreNetcoreDebugRun.bat
cd \Nopcommerce\wwwiaspnetcoreNetcore20RTM\src\Presentation\Nop.Web
dotnet run --urls "http://*:7999"
运行情况:
现在两个网站都运行了,接下来要做的,就是中断其中一个网站后,让nginx自动转发到另一个正常运行的网站。
(二)配置nginx负载均衡
这个不是本文重点,不作详细介绍
upstream hostiaspnetcoreServer {
server 127.0.0.1:6000 max_fails=0 weight=3;
server 127.0.0.1:7999 max_fails=0 backup;
}
server {
#监听端口
listen 7856;
#自己指定要访问的域名
server_name *.iaspnetcore.com;
#反向代理配置,
#将所有请求全部转发到upstream中定义的目标服务器中。
location / {
proxy_pass http://iaspnetcoreServer;
#若给某一台服务器转发请求时,达到默认超时时间未响应,则再向另 一台服务器转发请求,这里设置为1s
proxy_connect_timeout 1;
....
三、其他
在实战开发过程中还是遇到各种问题,比如百度的移动端爬虫,竟然发了个错误的请求头,以至于AspNetCore的网站直接对百度移动爬虫报错,不信你试一试你的网站?百度移动蜘蛛对你的网站有收录才怪了。收录问题已经解决,粉丝还不多,有兴趣再写。
一个人可以走得很快,一群人可以走得很远。
----微信公众号AspNetcore
微信公众号:AspNetCore
领取专属 10元无门槛券
私享最新 技术干货