zoukankan      html  css  js  c++  java
  • Abp aspnet-core项目部署到Centos7.2全流程攻略

    Abp aspnet-core项目部署到Centos7.2全流程攻略

    前言

    鉴于跨平台趋势潮流,小试一把微软东家的跨平台体验。 期间坑多多,依次记录,与君共勉。

    流程简单记录

    • 在官方aspnetboilerplate生成项目架构
    • 还原项目并修改配置添加数据库支持
    • 本地生成并且打包成文件
    • linux系统选择的Centos7.2测试,其他版本请相应修改,环境以及服务的搭建
    • 打包文件部署到服务器并部署调试
    • 安装supervisor守护程序守护项目

    具体步骤

    1 前期准备

    1. 在官方下载项目模板

    版本选择ASPNET Core版本 至于前端展示取决于业务需求。反正我用的是前后端分离,所以这块是用不到的。

    2. 下载的项目结构如图所示

    具体工程的功能请自寻解释在此不再展开。 修改XXX.Migrator 和XXX.Web.Host下appsetings.json的链接字符串,此处由于我用的是mysql数据库。关于如何修改配置 请参考博客园此篇文章。

    https://www.cnblogs.com/stulzq/p/7242581.html

    3. 文件打包

    选择打包到文件夹位置指定。最终在/bin/debug/netcoreapp2.0/publish下会生成打包好的文件。本地调试

    dotnet xxx.Web.Host.dll

    可以看到是成功的

    至此打包准备工序完成。

    4. linux环境准备

    安装.Net Core SDK 2.0
    首先安装依赖包

    yum install libunwind libicu
    

    获取dotnet-sdk最新版本

    https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md

    wget https://download.microsoft.com/download/1/B/4/1B4DE605-8378-47A5-B01B-2C79D6C55519/dotnet-sdk-2.0.0-linux-x64.tar.gz
    

    解压到制定目录

    mkdir -p /usr/local/dotnet
    tar zxf dotnet-sdk-2.0.0-linux-x64.tar.gz -C /usr/local/dotnet
    

    添加链接文件。

    ln -s /usr/local/dotnet/dotnet /usr/local/bin
    

    考虑到部署服务的情况 此处可以先将nginx安装好.
    下载对应当前系统版本的nginx包(package),
    具体版本根据自己情况 nginx在此选择

    wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    

    建立nginx的yum仓库

    rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
    

    下载并安装nginx

    yum install nginx
    

    启动nginx服务

    systemctl start nginx
    service nginx start
    

    可以通过命令whereis 或find查找nginx的配置文件
    并加以修改

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    events {
        worker_connections  1024;
    }
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        keepalive_timeout  65;
        #gzip  on;
    #如果是多站点配置,需要启用这个配置,然后在conf.d文件夹下,创建多个配置文件即可。比如www.a.com.conf、www.b.com.conf
        #include /etc/nginx/conf.d/*.conf;
    server {
        listen 80;
        #root /usr/share/nginx/html;
        #index index.html index.htm;
        # Make site accessible from http://localhost/
        server_name hwapp.netcore.cn;
        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-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    } 
    

    5. 将打包好的文件拷贝到服务器指定目录

    可以使用WinScp.exe 和putty.exe 操作centos

    6. 安装supersivor守护程序

    yum install supersivor
    

    配置supervisor

    在etc下创建目录,并赋权限

    mkdir -m 700 -p /etc/supervisor
    

    在目录“ /etc/supervisor”下创建配置文件

    echo_supervisord_conf > /etc/supervisor/supervisord.conf
    

    修改配置文件

    vim /etc/supervisor/supervisord.conf
    

    在文件末尾添加,注意首尾需无空格,需顶格

    [include]
    files=/etc/supervisor/conf.d/*.conf
    

    复制代码在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”

    mkdir -m 700 /etc/supervisor/conf.d
    

    创建进程配置文件

    vim /etc/supervisor/conf.d/MyDotNetName.conf
    

    "MyDotNetName"可以为dotnet core 入口dll文件名字 ,插入内容,注意首尾需无空格,需顶格:

    [program:MyDotNetName]
    command=/bin/bash -c "dotnet MyDotNetName.dll"
    directory=/usr/PublishOutput/
    stderr_logfile=/var/log/MyDotNetName.error.log
    stdout_logfile=/var/log/MyDotNetName.stdout.log
    environment=ASPNETCORE_ENVIRONMENT=Production
    user=root
    stopsignal=INT
    autostart=true
    autorestart=true
    startsecs=3
    
    [program:MyDotNetName] ;显示名称
    command=/bin/bash -c "dotnet MyDotNetName.dll"  ;运行命令,启动dotnet进程
    directory=/usr/PublishOutput/   ;MyDotNetName目录
    stderr_logfile=/var/log/MyDotNetName.error.log  ;错误日志文件
    stdout_logfile=/var/log/MyDotNetName.stdout.log  ;日志文件
    environment=ASPNETCORE_ENVIRONMENT=Production  ;进程环境变量
    user=root   ;进程执行用户
    autostart=true;自动启动 
    autorestart=true ;是否自动重启
    startsecs=3 ;自动重启间隔时间
    

    创建supervisor 自启动服务

    vim /etc/systemd/system/supervisor.service
    

    贴入配置

    [Unit]
    Description=supervisor
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    ExecStop=/usr/bin/supervisorctl shutdown
    ExecReload=/usr/bin/supervisorctl reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    
    [Install]
    WantedBy=multi-user.target
    

    使配置生效

    systemctl daemon-reload
    

    设置服务开机启动,即设置enable

    systemctl enable supervisor.service
    

    启动服务

    systemctl start supervisor.service
    

    验证dotnet进程是否启动
    使用命令“ps -ef | grep dotnet”查看dotnet 是否运行

    [root@machine ~]# ps -ef | grep dotnet
    root      2281  2280  0 15:27 ?        00:00:00 dotnet MyDotNetName.dll
    root      2302  2217  0 15:30 pts/0    00:00:00 grep --color=auto dotnet
    

    最终可以通过http://ip 访问到部署的服务

    作者:zhaohejing
    链接:https://juejin.im/post/5a4f20edf265da3e2d333cf9
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Cpython支持的进程与线程
    进程理论基础
    网络编程-之-----粘包现象
    dTree的简单使用
    DWR的简单使用
    strut2+Inteceptor实现简单的登录拦截
    保留两位小数
    冒泡+封装
    springmvc-入门
    添加ssh框架之后出现 class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found解决办法
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12801111.html
Copyright © 2011-2022 走看看