donet core 应用 部署到CentOS

创建应用

新建一个Asp.net core Web API 应用

在program里指定监听端口

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseKestrel(options =>
                {
                    options.Listen(IPAddress.Any, 5000);
                    
                })
                .Build();
View Code

 

在应用目录使用dotnet publish 发布文件

 

将发布的文件上传至CentOS里面

使用命令测试

dotnet WebApplication1.dll

打开浏览器:http://10.15.4.155:5000/api/values

配置反向代理

修改Nginx配置

vi /usr/local/nginx/conf/nginx.conf

添加反向代理

server {
    listen 8001;
    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 $http_host;
        proxy_cache_bypass $http_upgrade;
    }
}
View Code

重新启动Nginx

service nginx reload

打开浏览器:http://10.15.4.155:8001/api/values

 在CentOS中,要想在不退出Web服务的情况下返回shell,可以按Ctrl+Z,此时如果想要关掉Web应用,可以先查找进程,然后杀掉

ps -ef | grep WebApplication1
netstat -anp|grep 443

kill -9 20882

 

配置SSL

 使用OpenSSL生成证书

首先自己创建根证书 root 自己做CA也就是发行者。

openssl genrsa -des3 -out root.key

 

然后按照提示输入密码

openssl req -new -key root.key -out root.csr

 

输入刚才设置的密码,然后填写一些信息

然后创建一个10年期根证书 root.crt

openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt

 

接下来创建服务器证书

openssl genrsa -des3 -out server.key 2048

openssl req -new -key server.key -out server.req

openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in server.key -out server.crt

 

导出pfx格式

openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx

 

将生成的server.pfx通过放到网站根目录下

修改Startup的ConfigureServices要求全局使用HTTPS

//配置使用HTTPS
            services.Configure<MvcOptions>(options =>
            {
                options.Filters.Add(new RequireHttpsAttribute());
            });

修改Configure

//HTTP重定向到HTTPS
            var options = new RewriteOptions().AddRedirectToHttps();
            app.UseRewriter(options);

修改program代码

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseKestrel(options =>
                {
                    options.Listen(IPAddress.Any, 443,listenOptions=> {
                        listenOptions.UseHttps("server.pfx","test");
                    });

                })
                .Build();

重新发布到CentOS中,记得将证书也放到目录中

开启应用

打开浏览器

使用HTTP是无法打开的。

 使用程序访问

static void Main(string[] args)
        {
            string url = "https://localhost/api/values";
            using (HttpClient client = new HttpClient())
            {
                ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
                var response = client.GetAsync(url);
                Console.WriteLine(response.Result.Content.ReadAsStringAsync().Result);
            }
            Console.ReadKey();
        }
View Code

 

当实际生产部署的时候就不用自签名证书了,一般SSL证书供应商都会提供几种格式的证书

 

这里选用IIS的就可以,一般在申请证书的时候如果使用了密码,那么生成的IIS证书里面就不带密码,如果申请的时候不使用密码,那么生成的IIS证书目录下会有个随机密码

 

将网站应用部署成服务

创建配置文件

vi /etc/systemd/system/hellomvc.service

编辑文件

[Unit]
Description=Example .NET Web API App running on CentOS

[Service]
WorkingDirectory=/opt/WebWithSSL/
ExecStart=/usr/bin/dotnet /opt/WebWithSSL/WebApplication1.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target
View Code

启用服务

systemctl enable hellomvc.service

启动服务

systemctl start hellomvc.service

查看服务状态

systemctl status hellomvc.service

这里的 /usr/bin/dotnet 是dotnet默认安装位置,后面的是网站应用的文件位置。

转载于:https://www.cnblogs.com/uptothesky/p/8421658.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值