微软在前些天发布了.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

谢谢