原文链接将使用ASP.Net Core开发的网站部署到Linux上
6个月前从使用ASP,NET 转到了 http://ASP.NET Core.最近需要将项目部署到linux上,目标服务器是centos 7。这里讲的部署方法是以传统的文件系统并通过远程上传的方法,并没有用到Docker.
1. 在VISUAL STUDIO中打开你的项目
2. 更改你的配置
因为我在本地开发与在云服务器上只有数据库连接字符串不一样,所以只需修改数据库连接字符串就行了,项目的数据库连接使用的Entity Framework Core 框架,点击相应的Context类并在OnConfiguring中配置相应的数据库连接字符串。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if(!optionsBuilder.IsConfigured){
optionBuilder.UseMySQL("Server=localhost:Database=Blog;user=root");
}
}
3. 发布配置
在visual studio中右键点击目前的解决方案,点击发布。在弹出的窗口中点击新建配置文件,发布目标选择文件夹,选择好文件夹后点击高级,会出现配置窗口。因为是部署到linux操作系统上,在部署模式里面选择独立,目标运行时为linux64.(如果你用了Entityframwork 下面会有一个entity framework 迁移的选项,里面可以设置部署时的连接字符串,不过我之前几次使用它修改数据库连接字符串发布之后的连接字符串并没有改变,所以选择了在上面第二部手动修改配置),等待发布生成完毕使用psftp将生成的内容上传的目标服务器上。
4. 在linux服务器上安装dotnet运行环境环境
sudo yum install aspnetcore-runtime-2.1 #根据你项目的.net core 的版本不同对最后的版本号进行相应改变。#
5. 配置nginx作为反向代理
因为http://asp.net core默认是监听5000端口的,所以使用nginx作为反向代理服务器将80端口和443端口的请求发送到5000端口。
使用
sudo yum install nginx
安装nginx之后,在/etc/nginx/conf.d中创建 XX.conf文件,内容为
server{
listen 80;
server_name #你网站的名字#;
rewrite ^https://$http_host$requerst_uri? permanent; #重写http为https#
}
server{
listen 443 ssl;
server_name www.wavedeng.com;
client_max_body_size 10M;
ssl_certificate #你的crt证书所在位置;
ssl_certificate_key #你的ssl key所在位置;
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;
}
}
上面的第一个server是用来重写url将http请求重定向到https。若没有配置https直接舍弃掉第二个server,将第二个server里的location的内容复制到第一个sever里面,并删除rewrite里的内容。
具体nginx的安装与配置自动启动在下面的链接的博客里面有详细教程
6. 配置守护进程
使用 yum install 安装 supervisor.并进入/etc/supervisor/conf.d目录,添加demo.conf文件,内容如下。
[program: Wavedeng.Site]
command=dotnet wavedeng.dll //要执行的命令 将后面的dll文件换成你网站主入口的dll文件
directory=/home/www/ //你的ddl入口的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=wavedeng //进程执行的用户身份
stopsignal=INT
autostart=true
autorestart=true
startsecs=3 //自动重启间隔
stderr_logfile=/var/log/err.log //标准错误日志
stdout_logfile=/var/log/out.log //标准输出日志
开启supervisor
systemctl start supervisor
4. 在linux服务器上安装dotnet运行环境环境
sudo yum install aspnetcore-runtime-2.1 #根据你项目的.net core 的版本不同对最后的版本号进行相应改变。#
5. 配置nginx作为反向代理
因为http://asp.net core默认是监听5000端口的,所以使用nginx作为反向代理服务器将80端口和443端口的请求发送到5000端口。
使用
sudo yum install nginx
安装nginx之后,在/etc/nginx/conf.d中创建 XX.conf文件,内容为
server{
listen 80;
server_name #你网站的名字#;
rewrite ^https://$http_host$requerst_uri? permanent; #重写http为https#
}
server{
listen 443 ssl;
server_name www.wavedeng.com;
client_max_body_size 10M;
ssl_certificate #你的crt证书所在位置;
ssl_certificate_key #你的ssl key所在位置;
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;
}
}
上面的第一个server是用来重写url将http请求重定向到https。若没有配置https直接舍弃掉第二个server,将第二个server里的location的内容复制到第一个sever里面,并删除rewrite里的内容。
具体nginx的安装与配置自动启动在下面的链接的博客里面有详细教程
6. 配置守护进程
使用 yum install 安装 supervisor.并进入/etc/supervisor/conf.d目录,添加demo.conf文件,内容如下。
[program: Wavedeng.Site]
command=dotnet wavedeng.dll //要执行的命令 将后面的dll文件换成你网站主入口的dll文件
directory=/home/www/ //你的ddl入口的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=wavedeng //进程执行的用户身份
stopsignal=INT
autostart=true
autorestart=true
startsecs=3 //自动重启间隔
stderr_logfile=/var/log/err.log //标准错误日志
stdout_logfile=/var/log/out.log //标准输出日志
开启supervisor
systemctl start supervisor