Liunx服务器CentOS7.6配置,配合宝塔面板,Nginx,netcore webapi接口访问

Liunx服务器CentOS7.6配置,配合宝塔面板,Nginx,netcore webapi接口访问
 

1.安装netcore环境

参考文章:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:

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

.NET Core SDK 使你可以通过 .NET Core 开发应用。 如果安装 .NET Core SDK,则无需安装相应的运行时。 若要安装 .NET Core SDK,请运行以下命令:

sudo yum install dotnet-sdk-3.1

查看是否安装成功:

dotnet --info

以上是安装dotent-sdk 。我安装的是2.1版本。
所以,使用的命令是 :sudo yum install dotnet-sdk-2.1
如果命令安装不成功,可手动安装(百度搜索一下)

安装成功后,直接将netcore的publish内容上传到目录下(记住目录,我的是/www/wwwroot/x1yunApi)

上传成功后,用命令启动该项目(dotnet x1yun.dll),记得这样启动的话,要先通过cd,进入到该目录(/www/wwwroot/x1yunApi),
安装成功后,使用命令查看是否启动成功。

通过  # netsttat -nlp 也可以查看到相应内容


上面的127.0.0.1:5000即是netcore运行的端口与访问。


至此,部署已经完成,可以本地通过curl访问到相应内容(如图红箭头)

我们还需要通过域名来访问,因此需要使用Nginx来进行域名的绑定。
我使用宝塔面板进行liunx管理,因此,可以下载安装到liunx上。
SSH中使用命令:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
直接安装宝塔面板,等待安装完成。

再进入宝塔面板,启用Nginx插件

通过Nginx插件,进行配置:
server {
    listen       80;
    server_name  www.******.com;
     rewrite ^/(.*)$ https://www.******.com:443/$1 permanent;
}
 server{
        #监听443端口
        listen 443 ssl ;
        #对应的域名
        server_name www.****.com;
       #ssl证书地址
      ssl_certificate     /etc/ssl/*******.pem; 
      #pem文件的路径
      ssl_certificate_key  /etc/ssl/**********.key; 
      #key文件的路径
 
    #ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
        
      location / {
        proxy_pass         http://localhost:5000;
        #dotnet运行端口,所以需要反向代理到域名
        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;
      }
    }

至此,服务安装已经完成。由于我是需要用https来进行访问,因此使用了443。如果不使用则直接写
server {
    listen       80;
    server_name  www.******.com;
    location / {
        proxy_pass         http://localhost:5000;
        #dotnet运行端口,所以需要反向代理到域名
        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;
      }
}
由于关闭SSH后,将会自动停止dotnet的接口应用,
可以使用如下两种方式进行进程保护或自启动。
1,通过命令:nohup dotnet x1yun.dll,
2,通过宝塔面板的进程保存插件:supervisord 管理器。
我使用第二种方式,进行进程守护。比较直观可进行随时停用与查看,并且有日志。


操作过程中碰到的三个坑:
1、我在安装了宝塔面板后,再安装dotnet框架,发现一直运行访问不了。但不确定是不是冲突问题,可能是我操作原因(第一次部署)

2、在使用netcore进行liunx部署时,不需要配置网站,而是直接命令行启动即可。由于之前是在windows上部署IIS的netcore接口,自己首先就去面板上部署网站。其实是走了弯路。是windows部署的操作习惯性思维影响。

3,如果使用nginx来进行域名配置,netcore的开发中,不需要强制使用https来访问,而是通过配置nginx进行即可。所以,代码中的
   else
    {
       app.UseHsts();
     }
     app.UseHttpsRedirection();
可以去掉。并发布时,确保可以使用http来进行访问。如果使用https来发布,则请求时,需要证书


为了方便,因此我使用了nginx,同时记录下nginx做负载均衡的方式
Nginx 均衡负载的实现 简单提一下 均衡策略在http 里添加一个upstream 在这个里面依次填写 不同的ip以及端口
nginx
upstream mysvr { 
      server  http://192.168.10.121:3333;
      server  http://192.168.10.122:3333;
    }
 server {
        ....
        location  ~*^.+$ {         
           proxy_pass  mysvr;  #请求转向mysvr 定义的服务器列表         
        }
nginx 的默认均衡策略是加权轮询
1.加权轮询策略nginx计算每个后端服务器的权重,然后自动分配权重最高的后端服务器来处理请求。加权轮询策略 使用 weight=1来给地址添加权重,权重越高,nginx会优先分配
upstream mysvr {
server 127.0.0.1:7878 weight=1;
server 192.168.10.121:3333 weight=2;
}
2.ip_hash策略nginx会记录这个访问的ip地址并且在一段时间中 分配给这个ip一个server。ip_hash 在upstream 的结尾加上 ip_hash; nginx 自动使用ip_hash3.url_hash 等.. 插件形式的均衡策略这里就不提了

关于nginx负载均衡配置的几个状态参数讲解。

  • down,表示当前的server暂时不参与负载均衡。

  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。

  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

upstream
mysvr {
server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2;
server 192.168.10.121:3333 weight=1 max_fails=2 fail_timeout=1;
}
upstream
mysvr
{
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}

ip_hash:nginx会让相同的客户端ip请求相同的服务器。
upstream
mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
ip_hash;
}
posted on 2024-05-20 16:58  侗家小蚁哥  阅读(72)  评论(0编辑  收藏  举报