• .net5发布到Linux指南


    目录

    Aspnetcore api 服务发布指南

    一、 搭建nginx服务器

    1. 下载安装gcc编译库
    2. 下载安装pcre正则表达式库
    3. 下载安装openssl安全加密库
    4. 下载安装zlib解压库
    5. 下载解压并编译安装nginx
    6. 启动nginx
    7. 设置nginx开机启动
    8. 查看nginx状态
    9. 常用nginx命令

    二、 安装.net5 runtime

    1. 设置下载源
    2. 安装运行时

    三、 上传发布的项目文件并创建服务

    1. 安装工具WinSCP
    2. 使用WinSCP在linux服务器创建服务目录
    3. 将vs2019发布的项目使用WinSCP上传到指定目录
    4. 使用putty创建linux服务
    5. linux服务操作相关命令

    四、 配置nginx代理和防火墙

    1. 查看防火墙状态
    2. 启动防火墙
    3. 添加指定的端口
    4. 查看网口
    5. 添加网口到公开区域中
    6. 添加nginx反向代理配置

    五、 运行截图

    1. nginx运行截图
    2. Aspnetcore api运行截图

    一、搭建nginx服务器

    1. 下载安装gcc编译库

    gcc -v

    yum -y install gcc

    1. 下载安装pcre正则表达式库

    yum install -y pcre pcre-devel

    1. 下载安装openssl安全加密库

    yum install -y openssl openssl-devel

    1. 下载安装zlib解压库

    yum install -y zlib zlib-devel

    1. 下载解压并编译安装nginx

    wget http://nginx.org/download/nginx-1.9.9.tar.gz

    tar -zxvf nginx-1.9.9.tar.gz

    cd nginx-1.9.9

    ./configure --prefix=/usr/local/nginx

    make&&make install

    1. 启动nginx

    cd /usr/local/nginx/sbin

    ./nginx

    1. 设置nginx开机启动

    #在rc.local增加启动代码即可

    vi /etc/rc.local

    #增加一行 /usr/local/nginx/sbin/nginx,增加后保存

    #设置执行权限

    cd /etc

    chmod 755 rc.local

    1. 查看nginx状态

    通过端口查询: lsof -i:80 #nginx默认是80端口

    通过进程查询: ps -ef | grep nginx

    访问网页查询 curl 127.0.0.1

    1. 常用nginx命令

    nginx -s stop :快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

    nginx -s quit :平稳关闭Nginx,保存相关信息,有安排的结束web服务。

    nginx -s reload :因改变了Nginx相关配置,需要重新加载配置而重载。

    nginx -s reopen :重新打开日志文件。

    nginx -c filename :为 Nginx 指定一个配置文件,来代替缺省的。

    nginx -t :不运行,而仅仅测试配置文件。nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的 文件。

    nginx -v:显示 nginx 的版本。

    nginx -V:显示 nginx 的版本,编译器版本和配置参数

    二、安装.net5 runtime

    1. 设置下载源

    sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

    1. 安装运行时

    sudo yum install dotnet-runtime-5.0

    sudo yum install aspnetcore-runtime-5.0

    三、上传发布的项目文件并创建服务

    1. 安装工具WinSCP
    2. 使用WinSCP在linux服务器创建服务目录
    3. 将vs2019发布的项目使用WinSCP上传到指定目录
    4. 使用putty创建linux服务

    cd /lib/systemd/system

    sudo touch Oceania.ShopConfigService.service

    sudo nano Oceania.ShopConfigService.service

    配置ShopConfig.service服务文件

    [Unit]

    Description= ShopConfigService

    [Service]

    WorkingDirectory=/root/apiservices/Oceania.ShopConfigService/

    ExecStart=/usr/bin/dotnet /root/apiservices/Oceania.ShopConfigService/Oceania.ShopConfigService.Api.Host.dll

    Restart=always

    RestartSec=10

    SyslogIdentifier= ShopConfigService

    User=root

    Environment=ASPNETCORE_ENVIRONMENT=Production

    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

    [Install]

    WantedBy=multi-user.target

    然后输入

    ctrl+x ->y 回车

    1. linux服务操作相关命令

    systemctl  enable Oceania.ShopConfigService.service

    systemctl  start Oceania.ShopConfigService.service

    systemctl  status Oceania.ShopConfigService.service

    systemctl [command] [unit]

    command 主要有:

    start:立刻启动后面接的 unit

    stop:立刻关闭后面接的 unit。

    restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。

    reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。

    enable:设置下次开机时,后面接的 unit 会被启动。

    disable:设置下次开机时,后面接的 unit 不会被启动。

    status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。

    is-active:目前有没有正在运行中。

    is-enable:开机时有没有默认要启用这个 unit。

    kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。

    show:列出 unit 的配置。

    mask:注销 unit,注销后你就无法启动这个 unit 了。

    unmask:取消对 unit 的注销。

    四、配置nginx代理和防火墙

    1. 查看防火墙状态

    firewall-cmd --state

    1. 启动防火墙

    service firewalld start

    1. 添加指定的端口

    firewall-cmd --zone=public --add-port=80/tcp

    firewall-cmd --zone=public --add-port=5000/tcp

    1. 查看网口

    ifconfig

    1. 添加网口到公开区域中

    firewall-cmd --zone=public --add-interface=ens192

    1. 添加nginx反向代理配置

    #user  nobody;

    worker_processes  1;

    #error_log  logs/error.log;

    #error_log  logs/error.log  notice;

    #error_log  logs/error.log  info;

    #pid        logs/nginx.pid;

    events {

        worker_connections  1024;

    }

    http {

        include       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  logs/access.log  main;

        sendfile        on;

        #tcp_nopush     on;

        #keepalive_timeout  0;

        keepalive_timeout  65;

        #gzip  on;

        server {

            listen       80;

            server_name  localhost;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {

                root   html;

                index  index.html index.htm;

            }

               location /shopconfigservice/ {

                proxy_pass         http://localhost:5000;  #本地应用地址及端口,可以使用 curl 命令测试一下

                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;

            }

            #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   html;

            }

            # proxy the PHP scripts to Apache listening on 127.0.0.1:80

            #

            #location ~ .php$ {

            #    proxy_pass   http://127.0.0.1;

            #}

            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

            #

            #location ~ .php$ {

            #    root           html;

            #    fastcgi_pass   127.0.0.1:9000;

            #    fastcgi_index  index.php;

            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            #    include        fastcgi_params;

            #}

            # deny access to .htaccess files, if Apache's document root

            # concurs with nginx's one

            #

            #location ~ /.ht {

            #    deny  all;

            #}

        }

        # another virtual host using mix of IP-, name-, and port-based configuration

        #

        #server {

        #    listen       8000;

        #    listen       somename:8080;

        #    server_name  somename  alias  another.alias;

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

        # HTTPS server

        #

        #server {

        #    listen       443 ssl;

        #    server_name  localhost;

        #    ssl_certificate      cert.pem;

        #    ssl_certificate_key  cert.key;

        #    ssl_session_cache    shared:SSL:1m;

        #    ssl_session_timeout  5m;

        #    ssl_ciphers  HIGH:!aNULL:!MD5;

        #    ssl_prefer_server_ciphers  on;

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

    }

    五、运行截图

    1. nginx运行截图
    1. Aspnetcore api运行截图

    也可以输入:http://192.168.11.120/shopconfigservice/swagger/index.html 测试

    六、发布更新

    1. 发布邮件接口服务

    cd /usr/lib/systemd/system

    sudo touch Oceania.MailApiService.service

    sudo nano Oceania.MailApiService.service

    [Unit]

    Description= Oceania.MailApiService.service

    [Service]

    WorkingDirectory=/root/net5services/Oceania.MailService.Api.Host

    ExecStart=/usr/bin/dotnet /root/net5services/Oceania.MailService.Api.Host/Oceania.MailService.Api.Host.dll urls=”http://*:5011”

    Restart=always

    RestartSec=10

    SyslogIdentifier= Oceania.MailApiService.service

    User=root

    Environment=ASPNETCORE_ENVIRONMENT=Production

    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

    [Install]

    WantedBy=multi-user.target

    先Ctrl+x 再y

    systemctl enable Oceania.MailApiService.service

    systemctl start Oceania.MailApiService.service

    systemctl status Oceania.MailApiService.service

    查询端口

    lsof -i tcp:80

    curl http://127.0.0.1:5010/api/mail/getemailserverlist

    或者

    http://192.168.11.120/mailservice/swagger/index.html

    1. 发布邮件发送服务

    使用winSCP上传文件

    cd /usr/lib/systemd/system

    sudo touch Oceania.MailService.service

    sudo nano Oceania.MailService.service

    [Unit]

    Description= Oceania.MailService.service

    [Service]

    WorkingDirectory=/root/net5services/Oceania.MailService.Host

    ExecStart=/usr/bin/dotnet /root/net5services/Oceania.MailService.Host/Oceania.MailService.Host.dll

    Restart=always

    RestartSec=10

    SyslogIdentifier= Oceania.MailService.service

    User=root

    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

    [Install]

    WantedBy=multi-user.target

    先Ctrl+x 再y

    systemctl enable Oceania.MailService.service

    systemctl start Oceania.MailService.service

    systemctl status Oceania.MailService.service

  • 相关阅读:
    nodejs内存溢出解决方法
    mongodb副本集与分片结合
    node加密
    守护进程,互斥锁,IPC,队列,生产者与消费者模型
    并发编程
    粘包问题
    socket编程
    xml模块
    网络编程
    异常处理
  • 原文地址:https://www.cnblogs.com/yswenli/p/15226296.html
Copyright © 2020-2023  润新知