基础环境配置

域名和服务器请先自行购买

基于 云服务器ECS 创建一个应用实例,选择系统镜像为 Ubuntu 16.04,在本机通过 SSH 进行远程连接,并进行相关配置

ssh root@http://39.108.48.203/

sudo apt-get update
sudp apt-get upgrade
sudo apt-get autoremove
sudo apt-get clean

Nginx 配置

sudo apt-get install nginx
sudo service nginx start # 备份原始配置文件
sudo cp /etc/nginx/sites-available/default etc/nginx/sites-available/default.bak sudo vim /etc/nginx/sites-available/default

配置 default 文件,如下所示

server {
listen 80;
server_name example.com *.example.com;
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

检测配置并更新

sudo nginx -t
sudo nginx -s reload sudo service nginx stop
sudo service nginx start

安装 DotNetCore

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1

请参考官网最新安装说明:.NetCore Download

程序打包

打开 VisualStudio2017 右键要发布的项目,点击 publish,并参考下图进行相关配置。

点击 Save 按钮并执行发布操作。然后将 publish 文件夹上传至服务器相应位置,上传成功后执行

dotnet run app.dll

或者通过命令行打包发布

dotnet publish -c release
dotnet publish -c release -r ubuntu.18.04-x64

如果不出意外的,这个时候,你就可以通过 IP 或者 你的网站域名来进行访问了。

创建守护进程

执行上述操作之后,我们的程序还是不能正在长时间运行,因此我们需要通过守护进程来管理我们的网站

sudo apt-get install supervisor
sudo vim /ect/supervisor/conf.d/helloworld.conf

配置 website.conf 文件

[program:HelloWebApp]

command=/usr/bin/dotnet helloworld.dll ;要执行的命令
directory=/home/hippie/helloworld/bin/release/netcoreapp3.1/publish ;命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production ;环境变量
user=root ;进程执行的用户身份
stopsignal=INT
autostart=true ;是否自动启动
autorestart=true ;是否自动重启
startsecs=1 ;自动重启间隔
stderr_logfile=/var/log/helloworld.err.log ;标准错误日志
stdout_logfile=/var/log/helloworld.out.log ;标准输出日志

这个时候,我们执行下述命令启动守护进程

sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf

# 关闭所有服务
sudo supervisorctl shutdown # 查看状态
sudo supervisorctl status sudo service supervisor start/stop # 查看指定端口对应程序
netstat -ap | grep 5000 # 关闭指定端口对应程序
kill -9 PID

好了,这个时候你可以尝试关闭远程连接进行网站访问,如果能正常访问的话,说明你的配置已经起作用了.

配置 HTTPS

配置 HTTPS 需要使用证书,对应的有免费和收费版,我这里使用的是 免费版本 Certbot,直接执行下述命令即可:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx sudo certbot --nginx # sudo certbot renew --dry-run sudo ufw allow https sudo systemctl restart nginx

最后

安利一个我的个人图片网站,图片资源来自于必应,感兴趣的小伙伴欢迎体验:

Pay Attention

相关参考

DotNetCore 结合 Nginx 将网站部署到阿里云的更多相关文章

  1. Node+mongodb线上部署到阿里云

    Node+mongodb线上部署到阿里云 部署使用的主要工具是pm2+nginx,使用码云的私有仓库,自动部署到服务器,私有仓库和服务器要事先设置好免密码登录.使用DNSPOD进行域名解析.事先准备好 ...

  2. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  3. 将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法

    本博客主要是说一下,,如何将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法. 1.先在阿里云上购买一台阿里云服务器(ECS云服务器): 2.远程连接上该服务器,在 ...

  4. 【hexo博客搭建】将搭建好的hexo博客部署到阿里云服务器上面(下)

    一.部署到阿里云服务器 既然博客也已经成功在本地部署,然后主题也成功安装,接下来就可以部署到服务器上面了,如果你也想要魔改matery主题,可以去各种博客上面找一找大佬的教程,或者联系我,也可以让你少 ...

  5. 将nodejs代码部署到阿里云服务器

    概述 最近在做一个小项目,其中用nodejs做了个数据转发的接口,之后需要将这部分代码部署到服务器上面,并使用Nginx做反向代理.期间使用搜索引擎大量查阅了其他同鞋的经验,不过写的大多很笼统,因此踩 ...

  6. javaWeb项目部署到阿里云服务器步骤

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  7. 小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

    前言: 我的后端项目是Java写的,用的Springboot框架.在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功. 不成功具体点说就是:域名地址可以正 ...

  8. spingboot一键部署到阿里云(Cloud Toolkit工具)

    一般做法 一键部署工具   前些天在完成一个项目时候需要将springboot项目部署到服务器上, 以下是两种做法 前面介绍的是一般做法: 后面将介绍省去这些步骤的一键部署工具Cloud Toolki ...

  9. 免费网站监控服务阿里云监控,DNSPod监控,监控宝,360云监控使用对比

    网站会因为各种原因而导致宕机,具体表现为服务器没有响应,用户打不开网页,域名解析出错,搜索引擎抓取页面失败,返回各种HTTP错误代码.网站宕机可能带来搜索引擎的惩罚,网站服务器不稳定与百度关系文章中就 ...

随机推荐

  1. array_filter()函数

    用回调函数过滤数组中的值 array_filter(array,callbackfunction); 返回过滤后的数组

  2. 将json对象转化成jsonp对象

    这个Demo用来检查是否具有唯一性 //检查 /user/check/{param}/{type} @RequestMapping("/check/{param}/{type}") ...

  3. Thinking in Java from Chapter 21

    From Thinking in Java 4th Edition 并发 线程可以驱动任务,因此你需要一种描述任务的方式,这可由Runnable接口来提供. 要想定义任务,只需要实现Runnable接 ...

  4. document.domain实现不同域名跨域

    利用document.domain 实现跨域:前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域. 两个子域名:aaa.xxx ...

  5. InnoDB体系架构(一)后台线程

    InnoDB体系架构——后台线程 上一篇已经了解了MySQL数据库的体系结构 这一篇除了介绍InnoDB存储引擎的体系架构外,同时进一步了解InnoDB的后台线程. InnoDB存储引擎是多线程的模型 ...

  6. Eclipse 刚检出的项目 Build path 的时候提示 No action available

    问题: 从SVN检出来的项目发现无法进行build path,也不报错,任何类之间也无法关联(Ctrl+右键无法点进去). 原因: .classpath是Eclipse的工程文件,别人没有将工程的信息 ...

  7. Java学习笔记30(集合框架四:List接口)

    List接口继承自Collection接口 具有重要的三大特点: 1.有序集合:存入和取出的顺序一致 2.此接口的用户可以对列表中每个元素插入位置精确的控制:可以通过索引操作 3.可以存储重复元素 L ...

  8. 深度学习笔记(八)Focal Loss

    论文:Focal Loss for Dense Object Detection 论文链接:https://arxiv.org/abs/1708.02002 一. 提出背景 object detect ...

  9. 剑指offer【01】- 二维数组中的查找(Java)

    在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...

  10. web自动化测试---selenium分布式测试

    使用selenium框架还可以进行分布式测试,操作如下: 准备俩台PC:A和B,ip分别为IP_A和IP_B 下载最新的selenium-standalone的jar包,可以到下面地址下载各版本的包: ...