微软在前些天发布了.Net Core 1.0,总算可以在我的这些Linux小鸡上跑.Net了,最近体验了下,感觉还不错,下面就以写一个网站为例,把整个的过程记录一下。
一、目标:
在Debian系统上跑ASP.NET Core网站,使用PostgreSQL数据库。其实.net core的运行环境非常好搭,至少要比nginx+php+mysql环境要容易多了。
二、环境安装:
我的小鸡跑的是Debian8.0系统,下面就说下在Debian8.0下环境的安装方法:
1.安装.Net Core环境
sudo apt-get install curl libunwind8 gettext
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809130
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
2.安装Nginx反代服务器
apt-get install nginx
3.设置Nginx反代配置
编辑/etc/nginx/conf.d/default.conf文件或在/etc/nginx/conf.d/下新建一个.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;
}
}
之后保存,重启Nginx
nginx -s reload
4.安装supervisor
使用supervisor作为启动管理
apt-get install supervisor
在/etc/supervisor/conf.d/下新建一个扩展名为.conf的配置文件,名字随意,内容如下:
[program:biz126]
command=dotnet Biz126.WebUI.dll #站点的执行文件
autostart=true
autorestart=true
stderr_logfile=/home/web/biz126.com/logs/biz126.err.log #错误日志
stdout_logfile=/home/web/biz126.com/logs/biz126.out.log #输出日志
environment=ASPNETCORE__ENVIRONMENT=Production
directory=/home/web/biz126.com/wwwroot #网站的根目录
user=www-data
# user=root
stopsignal=INT
startsecs=1
-----------------------------此处应为昏哥腺----------------------------------
更新:
2016年10月25日,微软发布了.Net Core1.1 预览版本,同时官方文档有所更新,主要是把守护程序由原来的supervisor换成了systemctl,使用上systemctl确实要比supervisor体验要好,关于systemctl的详细使用方法,可以查下相关资料,下面是新文档中设置守护程序:
在/etc/systemd/system/下创建一个扩展名为service的文件,如:
nano /etc/systemd/system/kestrel-hellomvc.service
内容如下:
[Unit]
Description=这里是启动项的一个描述,随便写点什么
[Service]
ExecStart=/usr/local/bin/dotnet /home/web/biz126.com/wwwroot/Biz126.WebUI.dll #自处微软写的是ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll,
#这是错的,如果按照官方文档安装的话,dotnet的环境变量应该是添加在/usr/local/bin/dotnet的
Restart=always
RestartSec=10 # 如果服务启动失败了的话,10秒后重启
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
保存配置,之后执行下面的方法启用:
systemctl enable kestrel-hellomvc.service
启动服务及查看状态,如果有类似的提示,说明启动成功:
systemctl start kestrel-hellomvc.service
systemctl status kestrel-hellomvc.service
● kestrel-hellomvc.service - Example .NET Web API Application running on Ubuntu
Loaded: loaded (/etc/systemd/system/kestrel-hellomvc.service; enabled)
Active: active (running) since Thu 2016-10-18 04:09:35 NZDT; 35s ago
Main PID: 9021 (dotnet)
CGroup: /system.slice/kestrel-hellomvc.service
└─9021 /usr/local/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
可以使用下面的命令来实时查看运行日志:
journalctl -fu kestrel-hellomvc.service
或者指定时间段:
journalctl -fu kestrel-hellomvc.service --since "2016-10-18" --until "2016-10-18 04:00"
-----------------------------更新结束----------------------------------
5.安装PostgreSQL数据库
apt-get install postgresql
进行安装,安装的版本为9.4的
6.PostgreSQL数据库的设置
1)修改postgres账号的密码
postgres账号为postgresql的超级管理员账号,与SQL Server中的sa账号类似,不过默认是没有密码的,在终端中,使用下面的命令来修改密码:
psql -d postgres -U postgres -c "ALTER USER postgres PASSWORD '123456789';"
这样就把密码修改为123456789了。
2)打开远程访问
PostgreSQL的设置文件在 /etc/postgresql/9.4/main/ 下,分别修改下面这两个文件:
postgresql.conf
将该文件中的listen_addresses项值设定为“”,在9.0 Windows版中,该项配置已经是“”无需修改。
pg_hba.conf
在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置
host all all 0.0.0.0/0 md5
如果不希望允许所有IP远程访问,则可以将上述配置项中的0.0.0.0设定为特定的IP值。
使用
service postgresql restart
重启PostgreSQL数据库
7.VS2015下的开发环境
上面都是关于服务器上的环境设置,但是还没有安装开发环境。
首先,需要安装VS2015,如果已经安装了的请看“接下来”,到微软网站http://go.microsoft.com/fwlink/?LinkID=626924&clcid=0x804 下载Visual Studio Community版,其他的要花钱。安装,整个过程大概1小时到数小时不等。
接下来,如果你之前已经安装过VS2015,请检查有没有update3更新,如果没有的话,请安装Visual Studio 2015 Update 3更新
之后,安装[.NET Core 1.0 for Visual Studio][3]
然后就可以准备.Net Core之旅了
到此,环境设置完成,后面再写怎样写一个ASP.NET Core的项目
===================================
===================================
2017-9-23日更新:
在ASP.NET Core 2.0中,Startup.cs文件的Configure内需要加一项配置:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
守护进程需要
硬广:
欢迎加入.net/uwp/core/mvc等微软系开发群,群号:109811304,或点击下面的链接:
点击链接加入群【.net/uwp/core开发超级群】:http://jq.qq.com/?_wv=1027&k=2CNCCTw
谢谢
本文作者:老徐
本文链接:https://bigger.ee/archives/8.html
转载时须注明出处及本声明