Linux+Nginx+Asp.net Core及守护进程部署

这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完整的部署流程,.net core在docker容器中的运行已经介绍,这里.net core运行环境我会介绍直接在linux运行的场景,内容主要包含以下几个部分:

  1. 基础工具和Linux环境准备
  2. .Net Core环境安装及端口配置
  3. Nginx的安装配置
  4. Supervisor守护进程安装配置

一. 基础工具和Linux环境准备

工具介绍:

  • Ubuntu:azure云端linux主机
  • Xshell:免费的linux客户端工具
  • FileZilla: 免费文件上传(sftp、ftp)工具
  • vs2017: 开发工具

本次部署主要是通过Nginx负载代理.net core服务,提供对外站点访问。.net core 本身的宿主则通过其自带的Kestrel服务运行。如果你是云主机请记得在管理控制台添加80访问端口。

那这里我先创建一个www文件夹,作为后边存放站点文件的根目录,同时设置相关权限,这里可能会有一个小的需要注意的问题,现在很多云主机直接登录后权限是很低的,需要使用:sudo -s 命令提升权限,否则创建文件夹会出现权限不足的错误。

  1. mkdir /home/www/ossoffical // 创建ossoffical站点文件夹
  2. chown [-R] 账号名称 ossoffical // 把账号名称添加到www文件夹的所有者中,保证后续sftp上传文件夹等在无法提权的情况下也能操作

二. .Net Core环境安装及端口配置

1. 安装,这里参照微软官网即可,我这里使用的是Ubuntu 14.04版本,主要执行以下几条命令


  1. sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list' 
  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 
  3. sudo apt-get update 
  4. sudo apt-get install dotnet-dev-1.0.1 

2. vs端口相关设置

这里需要注意一下,当前版本创建的.net core项目在不制定具体端口的情况下,会默认使用5000端口。但是这个在后续的版本中会移除,见官方文档:

并且我也希望自己指定具体的端口,这样以后站点多了之后防止冲突,我修改自己项目中的Program文件中内容,指定8000端口,如图:

请注意先后的顺序,否则在vs中可能会出现调试无法打开的情况,发布当前项目。

3. 上传项目文件运行

  • a. 通过filezilla上传项目文件到ossoffical目录下
  • b. 通过命令客户端进入ossoffical目录(cd /home/www/ossoffical),执行:dotnet OSS.Offical.Site.dll(我当前站点项目程序集名称),结果如图:

退出执行ctrl+c 。当然我们也可以执行 “ dotnet OSS.Offical.Site.dll & ” ,让其在后台运行,只是这个更方便让我们查看。这个时候你可以访问对应的8000端口即可访问(云主机请注意开放访问端口)。

三. Nginx安装

1. 执行:sudo apt-get install nginx 命令

2. 安装完成之后访问对应的80端口,应该如下:

3. 配置代理

  • a. mkdir /etc/nginx/hosts 创建一个文件夹,用来放置站点配置文件
  • b. 执行 cd /etc/nginx/hosts 进入目录, 执行: vi ossoffical 按 “i” 添加如下内容:

  1. server {  
  2. listen 80;  
  3. index index.html index.htm;  
  4. server_name www.osscoder.com; #域名  
  5. location / {  
  6. proxy_pass http://127.0.0.1:8000; # 刚才设置的地址端口  
  7. proxy_http_version 1.1;  
  8. proxy_set_header Upgrade $http_upgrade;  
  9. proxy_set_header Connection keep-alive;  
  10. proxy_set_header Host $host;  
  11. proxy_cache_bypass $http_upgrade;  
  12. }  

退出保存。

4. 修改nginx配置文件,vi /etc/nginx/nginx.conf

  • 在http节点末尾,添加 :include /etc/nginx/hosts/*;

5. 重启nginx服务器: sudo service nginx restart(reload)

6. 进入站点目录,dotnet OSS.Offical.Site.dll & ,确保站点正确运行,访问 www.osscoder.com,如下:

四. 守护进程安装配置

为了保证服务能够稳定运行,我们安装守护进程以确保在应用程序出现异常中断时能够正常重启。

1. 安装,执行:sudo apt-get install supervisor

2. 安装成功后进入:/ect/supervisor/conf.d/ 目录,添加 ossoffical.conf 文件,添加如下内容:


  1. [program:OSS.Offical.Site]  
  2. command=dotnet OSS.Offical.Site.dll //要执行的命令  
  3. directory=/home/www/ossoffical //命令执行的目录  
  4. environment=ASPNETCORE__ENVIRONMENT=Production #环境变量 
  5. user=osscoder //进程执行的用户身份  
  6. stopsignal=INT  
  7. autostart=true  
  8. autorestart=true  
  9. startsecs=3 //自动重启间隔  
  10. stderr_logfile=/var/log/ossoffical.err.log //标准错误日志  
  11. stdout_logfile=/var/log/ossoffical.out.log //标准输出日志 

把对应的目录和名称换掉即可,请删除注释,否则有时会出现命令执行失败的情况。完毕之后重启supervisor:


  1. sudo service supervisor stop  
  2. sudo service supervisor start 

完成之后可以杀掉进程或者重启机器测试。

本文作者:佚名

来源:51CTO

时间: 2024-12-23 04:53:03

Linux+Nginx+Asp.net Core及守护进程部署的相关文章

linux下Shell编程--标准的守护进程的启动脚本

一个标准的守护进程的启动脚本: #! /bin/sh WHOAMI=`whoami` PID=`ps -u $WHOAMI | gerp mydaemond | awk '{print $1}'` if (test "$1" = "") then echo "mydaemond [start][stop][version]" exit 0 fi if ( test "$1" = "status") then

运行Vue在ASP.NET Core应用程序并部署在IIS上

前言 从.NET Core 1.0开始我们就将其应用到项目中,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用ASP.NET Core结合Vue在IIS上运行. ASP.NET Core结合Vue部署于IIS 关于安装Vue和Webpack则不再叙述,我们直接来创建ASP.NET Core应用程序或者通过dotnet new mvc创建ASP.NET Core应用程序 接下来在上述应用程序下通过如下命令创建Vu

Linux守护进程的编程方法

守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进程实现的.比如,Internet服务器inetd,Web服务器httpd等.同时,守护进程完成许多系统任务.比如,作业规划进程crond,打印进程lpd等.  守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,造成不同Unix环境下守护进程的编程规则并不一致.这需要读者注意,照搬某些书上的规则

C语言编写Linux守护进程实例_C 语言

守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进 程.Linux的大多数服务器就是用守护进程实现的.比如,Internet服务器inetd,Web服务器httpd等.同时,守护进程完成许多系统任 务.比如,作业规划进程crond,打印进程lpd等. 守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,造成不同Unix环境下守护进程的编程规则并不一致.这需要读者注意,照搬 某些书上的

Linux 守护进程 自动重启 shell 脚本分享

#!/bin/sh #本脚本为守护进程, 如果发现进程僵死时, 自动重启进程   function check_and_kill_and_start(){ log_file=$1 ps_name=$2 dead_duration=$3 # echo "check the progress "$ps_name ymd=$(date +%Y-%m-%d) log_file=${log_file}${ymd}.log # echo $log_file 判断是否存在log_file if [ 

Server Develop (七) Linux 守护进程

守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系统引导装入时启动,在系统关闭时终止.Linux系统有很多守护进程,大多数服务都是通过守护进程实现的. 守护进程的特点 由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭.但是守护进程却

Linux守护进程详解(init.d和xinetd)

一 Linux守护进程 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大多数服务器都是用守护进程实现的.同时,守护进程完成许多系统任务,比如,作 业规划进程crond.打印进程lqd等.有些书籍

详解ASP.NET Core Docker部署_docker

前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序. ASP.NET Nginx 发布和部署 :http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html. Asp.Net Jexus 发布和部署:http://www.cnblogs.com/savorboard/p/dot-n

详解Asp.Net Core 发布和部署( MacOS + Linux + Nginx )_实用技巧

前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署. 目录 新建一个 WebApp 项目 发布到 Linux,Mac OS 使用 Nginx 进行反向代理 新建一个 WebApp 项目 在 Asp.Net Core 项目中,我们使用 dotnet new -t WebApp 命令和创建一个新的空的 Web 应用程序. 以下是我在 Mac 中的截图: 主要是用以下几个命令: mkdir He