天下午我们将生产环境中一个单台服务器QPS(每秒请求数)在左右的ASP.NETCore站点部署到了Linux服务器上,这是我们解决了在.NETCore上使用EnyimMemcached(memcached客户端)的问题之后,.NET跨平台之旅迈出的重要一步。这个ASP.NETCore站点,既用了缓存,也有数据库访问操作,是一个典型的Web站点,如果它能持续稳定运行,将为我们全站迁移至ASP.NETCore+Linux扫清障碍。
这个ASP.NETCore站点用的memcached客户端是我们在nuget.org上最新发布的EnyimMemcachedCore;
publicvoidConfigureServices(IServiceCollectionservices){services.AddEnyimMemcached(options=options.AddServer("memcached",));}
.NETCore用的是最新的.NETCore1.0.1;以self-contained方式部署,用dotnetpublish命令发布出来的文件中包含可以直接在Linux上运行的可执行文件,因此服务器上无需另外安装.NETCore运行环境,用scp命令将dotnuetpublish命令生成的文件上传到部署服务器即可。
"frameworks":{"netcoreapp1.0.1":{"imports":["dnxcore50","portable-net45+win8"],"dependencies":{"Microsoft.NETCore.App":"1.0.1"}}}
最前端用的是阿里云负载均衡,后端2台Linux服务器的配置是1核CPU与1G内存,Linux发行版用的是Ubuntu14.04,使用supervisor以服务的方式运行站点。Web服务器用的是Kestrel,Kestrel目前最大的问题是不支持主机名绑定,同一台服务器上的不同站点必须绑定不同的端口,这给部署带来了麻烦。数据库服务器用的是阿里云RDS(SQLServerR2)。Memcached缓存服务器用的是阿里云云数据库Memcache版。