CentOS 7环境下使用Nginx托管.Net Core应用程序(2)

注:publish文件夹之外的内容,同我们运行 dotnet run 命令时所生成的文件是相同的,只不过Debug文件夹换成了自己命名的Release文件夹而已。换句话说,运行dotnet publish -c Release 比运行 dotnet run 多了一个publish文件夹,而这个文件夹正是所要发布的内容

CentOS 7环境下使用Nginx托管.Net Core应用程序

4、运行项目 

切换到publish文件夹,运行命令

dotnet nmvc.dll

如下图所示:

CentOS 7环境下使用Nginx托管.Net Core应用程序

5、项目的开机自动运行

接下来设置项目的开机自动启动,在 /etc/systemd/system/ 中新建一个服务文件

vim /etc/systemd/system/kestrel-ntmvc.service

内容如下:

[Unit] Description=Example .NET Web MVC Application running on Centos7 [Service] WorkingDirectory=/root/ntmvc ExecStart=/usr/bin/dotnet /root/ntmvc/bin/Release/netcoreapp2.0/publish/ntmvc.dll Restart=always RestartSec=10 # Restart service after 10 seconds if dotnet service crashes SyslogIdentifier=dotnet-example User=root Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target

之后保存,运行以下命令:

systemctl enable kestrel-ntmvc.service systemctl start kestrel-ntmvc.service systemctl status kestrel-ntmvc.service

注意:如果检查到错误,需要修改 kestrel-ntmvc.service 文件,修改正确之后,需要运行以下命令重新启动:

systemctl daemon-reload systemctl restart kestrel-ntmvc.service

下面是正常运行后的结果

CentOS 7环境下使用Nginx托管.Net Core应用程序

到此为止,一个简单的项目就可以正常访问了。接下来,对项目进行改造,引入nginx的使用。

三、编译安装nginx

1、安装依赖项

yum -y install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel

2、下载安装包

最新的下载地址请到官网获取。

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

3、解压

mkdir nginxfiles tar -zxvf nginx-1.13.5.tar.gz -C nginxfiles

4、切换目录

cd nginxfiles/ cd nginx-1.13.5/

如下图:

CentOS 7环境下使用Nginx托管.Net Core应用程序

5、编译安装

执行以下命令

# 配置:这里需要安装额外的模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-mail=dynamic # 编译
make
# 安装
make install

以下是安装的结果

CentOS 7环境下使用Nginx托管.Net Core应用程序

6、创建软链接

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin

如上所述,这样可以不用再设置环境变量。

CentOS 7环境下使用Nginx托管.Net Core应用程序

四、证书相关 

为了增强项目的安全性,有时需要将http访问转为https访问。通过对nginx中ssl模块进行设置,可以实现这一点。

通常,这需要向CA申请安全证书(常用免费证书:https://letsencrypt.org/ )。

由于这里仅作测试用,因此使用自己生成的证书。

1、证书的生成

在root目录下建立certs文件夹,切换到该文件夹,依次运行以下命令:

# 建立服务器私钥(过程需要输入密码,请记住这个密码)生成RSA密钥 openssl genrsa -des3 -out testcert.key 1024
# 生成一个证书请求 需要依次输入国家,地区,组织,email,common name等,common name可以写你的名字或者域名。如果为了https申请,必须和域名吻合,否则会引发浏览器警报。 openssl req
-new -key testcert.key -out testcert.csr
# 生成不需要密码的key openssl rsa
-in testcert.key -out testcert_nopwd.key
# 生成crt文件 openssl x509
-req -days 365 -in testcert.csr -signkey testcert_nopwd.key -out testcert.crt

如以下两图:

CentOS 7环境下使用Nginx托管.Net Core应用程序

2、证书的位置

将证书复制到 /etc/ssl/certs/ 目录

cp testcert.crt /etc/ssl/certs/ cp testcert_nopwd.key /etc/ssl/certs/testcert.key

如下图:

CentOS 7环境下使用Nginx托管.Net Core应用程序

3、迪菲-赫尔曼密钥交换 

一般来说,之后修改nginx.conf配置文件就可以了。为了进一步增强安全性,可以进行迪菲-赫尔曼密钥交换,在 /etc/ssl/certs/ 目录中

openssl dhparam -out dhparam.pem 4096

以下是生成的文件 

CentOS 7环境下使用Nginx托管.Net Core应用程序

五、nginx配置文件相关 

1、自定义 proxy.conf 文件 

在 /usr/local/nginx/cong/ 目录下新建 proxy.conf 文件,后面会在nginx.conf中引用此文件。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a69d38a00444bd52fb763d7d93126fb5.html