前言:

 最近公司需要开发项目能在Linux系统上运行,示例开发项目采用.Net Core + Angular开发;理论上完全支持跨平台。

 但是实践才是检验真理的唯一标准;那么还是动手来验证实现下;过程中万一出现什么问题也算是积累经验。

一、环境准备

 由于本次主要验证项目部署Linux环境,也不想去重新搭建一个虚拟机环境;就使用Win10中Linux子系统(WSL什么?

 1、WSL启用步骤:

  • 进入【启用或关闭Windows功能】中启用WSL,如下图

  • 进入Microsoft store 选择相应版本,本机安装的是CentOS

  

  • 安装完成后启动时(出现问题)

  

  最终确定问题原因:需要更新Linux内核包(更新包下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)

  下载安装后,CentOS系统环境准备好了。

 2、.NET Core 环境安装:

  • 更新下系统基础软件版本(可不执行)  
sudo yum update
  • 注册微软签名秘钥:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
  • 安装.NET Core SDK,示例程序采用3.1版本开发  
sudo yum install dotnet-sdk-3.1
  • 查看是安装成功,如图则表示已经安装成功

  

 3、Nginx环境安装:(部署web项目)  

  • 依赖环境安装

yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl--devel
  • 添加Nginx的yum库

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  • 安装Nginx

sudo yum install nginx
  • Nginx基本信息

   目录结构:

Nginx目录
配置路径 /etc/nginx/
错误日志 /var/log/nginx/error.log
访问日志 /var/log/nginx/access.log
默认站点目录 /usr/share/nginx/html

   基本命令:

    • nginx       //启动nginx
    • nginx -s quit    //停止nginx
    • nginx -s reload     //重新载入配置文件

二、项目部署

 部署项目到CentOS有多种方式:直接运行、Docker部署(前面学习文章已多次使用),本次就采用直接运行方式来部署应用。由于项目采用前后端分离实现,需要分别部署

  •  服务端部署

   1、将服务端项目文件拷贝到CentOS目录中:本次部署路径为:/home/www/publish

    

   2、修改配置文件:需要使用vim命令(需要单独安装)

    通过命令进入配置文件编辑:

 vim appsettings.json

    编辑完成后采用以下命令退出

vim命令
:w 保存但不退出
:wq 保存并退出
:q 退出
:q! 强制退出,不保存
:e! 放弃所有修改,从上次保存文件开始再编辑命令历史

      

  3、启动服务

   

  • 前端项目部署

  1、将web项目拷贝到:/home/www/web

  2、在Nginx配置文件目录中添加配置文件web.conf

server {
listen 8221;
server_name 192.168.243.86:8220; #charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
root /home/www/web;
index index.html index.htm;
try_files $uri $uri/ /index.html?$query_string;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

     注意: 由于Angular项目中使用了路由重定向,则需要使用标记内容

  3、更新Nginx配置文件:    

/usr/sbin/nginx -s reload

三、运行示例

 服务端运行:

  

 Web项目运行效果:

  

  到此项目已成功运行,但是当我把CentOS命令结束运行,则web服务端停止运行,那么需要把创建服务实现守护进程

四、守护进程创建-supervisor

  1、安装supervisor

#安装python的扩展
yum install python-setuptools
#通过python的扩展安装supervisor
easy_install supervisor #建立设置文件夹
mkdir /etc/supervisor
mkdir /etc/supervisor/conf.d
#设置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
#修改设置文件(supervisord.d 文件夹下的所有 ini 类型的文件都是配置文件)
#在文件/etc/supervisor/supervisord.conf末端
;files = relative/directory/*.ini 改为 files = conf.d/*.ini

  2、创建配置文件:在/etc/supervisor/conf.d目录下创建publish.conf

[program:publish]
command=dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://192.168.243.86:8220 #运行命令
directory=/home/www/publish #程序路径
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true #自动启动
autorestart=true #3秒自动重启
startsecs=3
stderr_logfile=/var/log/ossoffical.err.log
stdout_logfile=/var/log/ossoffical.out.log

  3、启动服务

#进入supervisor目录
cd /etc/supervisor
#启动supervisord 服务
supervisord -c supervisord.conf

  4、开启守护进程的界面管理功能  

#修改配置文件:
vim /etc/supervisord.conf

#取消注释内容

 [inet_http_server] ; inet (TCP) server disabled by default
 port=*:9001 ; ip_address:port specifier, *:port for all iface
 username=user ; default is no username (open server)
 password=123 ; default is no password (open server)

 #重新加载配置文件

 supervisorctl reload

  5、supervisorctl 常用命令

$ sudo service supervisor stop 停止supervisor服务
$ sudo service supervisor start 启动supervisor服务
$ supervisorctl shutdown #关闭所有任务
$ supervisorctl stop|start program_name #启动或停止服务
$ supervisorctl status #查看所有任务状态

五、总结

 在CentOS系统中运行部署运行项目,主要是Linux相关内容是否熟练:如命令、权限、软件等相关内容,不管什么还是需要孰能生巧,多加练习吧。

 另外WSL中的Linux系统还是不够全面,暂时没有服务、防火墙相关功能,所以如果在真实环境中,可以设置服务开机启动、以及防火墙相关处理。

 所以还是需要找个完整环境进行学习练习。  

 

.NET Core +Angular 项目 部署到CentOS的更多相关文章

  1. Angular20 nginx安装,angular项目部署

    1 nginx安装(Windows版本) 1.1 下载安装包 到官网下载Windows版本的nginx安装包 技巧01:下载好的压缩包解压即可,无需安装 1.2 启动nginx 进入到解压目录,点击 ...

  2. dotnet core 使用 sqlite 部署到 Centos 服务器

    原文:dotnet core 使用 sqlite 部署到 Centos 服务器 本文告诉大家如何创建一个 asp dotnet core 程序,这个程序使用 sqlite 保存,部署程序到 Cento ...

  3. Angular4---部署---将Angular项目部署到IIS上

    ---恢复内容开始--- Angular项目部署到一个IIS服务器上 1.安装URL rewrite组件: 网址:https://www.microsoft.com/en-us/download/de ...

  4. [转]Angular4---部署---将Angular项目部署到IIS上

    本文转自:https://www.cnblogs.com/kingkangstudy/p/7699710.html Angular项目部署到一个IIS服务器上 1.安装URL rewrite组件: 网 ...

  5. .net core mvc项目部署nginx报错一直显示404错误

    遇到一个奇怪的问题,.net core mvc 项目部署到nginx上面,系统是linux,controller明明抛出500错误,但页面一直显示是404. 解决如下: 1.修改Startup.cs, ...

  6. web项目部署在centos 7验证码显示不出来解决方案

    今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...

  7. Linux学习笔记之Django项目部署(CentOS)----进阶篇

    一.引入 当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目.之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的, ...

  8. ASP.NET Core WebApi 项目部署到 IIS 服务器的总结

    Point: - ASP.NET Core WebApi 项目 - 发布到 IIS 服务器 1. 选择 File System 2. 输入要发布到的路径 # 其它默认,直接发布 3. 打开 IIS,添 ...

  9. ASP.NET core 2.1部署到 Centos 7

    步骤要点: 一.关闭Centos selinux: 操作方式: 1.永久关闭:打开/etc/selinux/config文件,设置SELINUX=disabled,注意,不是SELINUXTYPE=d ...

随机推荐

  1. 灵活运用的@RequestParam和@RequestBody

    最近在编写项目的过程中,老出现前后端传递参数格式不一致.不统一的问题,对于一个已经快工作一年的Java程序员来说,实属不合格,所以我就下来好好研究了一下@RequestParam和@RequestBo ...

  2. bugku-PHP_encrypt_1(ISCCCTF)

    前言 懒得写详细wp了.... 我佛了 这个题纠结好久......... 前言 需要解密的密文: fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA ...

  3. html2image

    测试没有,生产有 也就是写死的显示,配置的不显示

  4. vue项目中echarts属性总结

    <div id="echarts" style="width: 600px;height: 400px;margin-top: 100px;margin-left: ...

  5. 使用Folx智能速控功能,确保带宽资源的合理分配

    市面上的大部分下载软件,都会配备速度控制的功能,用于限制下载任务的带宽占用.但除此之外,Folx专业版还提供了更加智能化的速度控制功能,用户可以为速控指定更加详细的条件,比如程序限制条件.时间限制条件 ...

  6. CorelDRAW软件的出血位详解

    出血位,一种常见的印刷术语,在印刷品中,设计的图形一般比成品尺寸要大,会加一些延伸,专门用来给生产工艺中的公差范围使用,以避免最后裁切的成品中有白边或是裁到内容.多出来的部分在印刷后要被裁掉,这部分就 ...

  7. CleanMyMac X“断网激活”真的能激活软件吗?

    CleanMyMac X帮助Mac系统进行垃圾清理,清除多余的缓存.应用程序等,在提高工作效率上起了很大的作用.但是随着对软件的需求不断增加,很多人开始研究通过捷径破解正版软件,但是是否能成功呢?今天 ...

  8. 学习django笔记一:在urls.py中导入sign应用views文件的问题

    >python-admin startproject guest     #创建guest项目 >python3 manage.py startapp sign  #在guest项目中创建 ...

  9. 【Luogu U41492】树上数颜色——树上启发式合并(dsu on tree)

    (这题在洛谷主站居然搜不到--还是在百度上偶然看到的) 题目描述 给一棵根为1的树,每次询问子树颜色种类数 输入输出格式 输入格式: 第一行一个整数n,表示树的结点数 接下来n-1行,每行一条边 接下 ...

  10. 【mq读书笔记】定时消息

    mq不支持任意的时间京都,如果要支持,不可避免的需要在Broker层做消息排序,加上持久化方面的考量,将不可避免地带来巨大的性能消耗,所以rocketMQ只支持特定级别的延迟消息. 在Broker短通 ...