.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

posted @ 2021-09-04 12:27  yswenli  阅读(1059)  评论(0编辑  收藏  举报