2022-03-24【项目部署 dotnet6.0 + centos8 + nginx1.14.1 + https】

一、后台服务器部署(CentOs 8 & .net 6.0)

Ⅰ 安装MySQL

1h1ttps:1//1blog.csdn.net/qq_36582604/article/details/80526287

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

之后就开始安装MySQL。

[root@localhost ~]# yum -y install mysql
[root@localhost ~]# yum -y install mysql-server

至此MySQL就安装完成了,然后是对MySQL的一些设置。

2. MySQL数据库设置

首先启动MySQL

[root@localhost ~]# systemctl start  mysqld.service

查看MySQL运行状态,运行状态如图:

[root@localhost ~]# systemctl status mysqld.service

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
这里的路径可能有所不同,自己可以cd看一看,只要找到mysqld.log即可。可能有初始密码也可能没有,如果没有的话,后面的操作中输入密码时,直接回车即可。

[root@localhost ~]# grep "password" /var/log/mysqld.log

如下命令进入数据库:

[root@localhost ~]# mysql -u root -p

输入初始密码(是上面图片最后面的 no;e!5>>alfg),此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功。

3. 开启mysql的远程访问

执行以下命令开启远程访问限制(注意:下面命令开启的IP是 192.168.0.1,如要开启所有的,用%代替IP):

mysql> grant all privileges on *.* to 'root'@'192.168.0.1' identified by 'password' with grant option;

此处,如果安装的mysql版本大于8.0则改用下面语句。

mysql> create user root@'192.168.0.1' identified by 'password'; grant all privileges on *.* to root@'%' with grant option;

然后再输入下面两行命令

mysql> flush privileges; 
mysql> exit

4. 为firewalld添加开放端口

先查看防火墙状态

[root@localhost ~]# systemctl status firewalld.service

如果未开启,则

[root@localhost ~]# systemctl start firewalld.service

添加mysql端口3306和Tomcat端口8080

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent

然后再重新载入

[root@localhost ~]# firewall-cmd --reload

均返回 success 即可。

5. 验证

已完成,然后可用 navicat 等工具,直接创建连接尝试,成功则妥。

Ⅱ 安装 Git

1h1ttps:1//www.cnblogs.com/huyong/p/14291812.html

1. 安装git客户端

执行如下命令:

[root@localhost ~]# yum -y install git

2. 生成sshkey

这里的xx@xxx.com只是生成的sshkey的名称,并不约束货要求具体命名为某个邮箱。

[root@localhost ~]# ssh-keygen -t rsa -C "xx@xxx.com"

按照提示,按三次回车,即可生成sshkey,如下图所示:

[root@localhost ~]# cat ~/.ssh/id_rsa.pub

复制生成后的sshkey,配置到代码仓库的公钥中。

3. 配置 github 仓库的公钥

  • 接下来我们将学习如何在 github 代码托管平台下配置公钥。
  • 科学上网,进入github,点击右上角头像,下拉中的Settings,点击左侧 "SSH and GPG keys",再点击中间列的 "New SSH key",将刚刚生成的公钥复制过去,确定即可。
  • 回到XShell界面,执行下面命令,回车输入yes再回车,出现类似于Hi xxx的字样,则表示git公钥配置成功了。
[root@localhost ~]# ssh -T git@github.com

Ⅲ 安装 .NET Core SDK 与 运行时

  • .NET运行时是.NET程序运行的先决条件,而SDK并不是必须的,但如果通过git方式进行文件中转的话,就需要到在服务器端进行编译,所以SDK也需要安装。
  • 在安装 .NET 之前,我们需要将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。
  • 运行如下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。
[root@localhost ~]# sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
  • 通过如下命令安装SDK:
[root@localhost ~]# sudo yum install -y dotnet-sdk-6.0
  • .NET Core SDK 使你可以通过 .NET Core来 开发我们的应用。
  • 安装完成后,可以验证安装。
[root@localhost ~]# dotnet --info
  • 通过如下命令安装netcore运行时:
[root@localhost ~]# sudo yum install -y aspnetcore-runtime-6.0

Ⅳ 发布程序到服务器

  • 首先,将代码推送到git仓库中,复制SSH地址。如下图所示:
  • 然后在服务器中,执行克隆命令:
mkdir core60test
cd core60test
git clone git@gitee.com:******/core60test.git
  • 此时项目代码已经下载到服务器中,切换工作目录到解决方案所在的目录。
cd core60test
  • 然后执行dotnet publish命令对程序进行编译发布。
dotnet publish -o /xxxx/publish
  • 执行完毕后,编译发布后的文件将被保存在/xxxx/publish目录中。
  • 将工作目录切换到/xxxx/publish,执行如下命令,即可在后台运行在指定端口。
nohup dotnet core60test.dll --urls="http://*:端口号" --environment=Delopment > /dev/null 2>&1 &

这里使用后台进程,关闭Xshell也不会关闭站点,在当前进程,停止站点直接使用Ctrl+c,否则需要找出进程ID,然后KILL进程。

nohup:不挂起的意思
--environment=Delopment:运行环境
/dev/null:/dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中。/dev/null可以理解为/dev路径下的空文件;该命令将command命令的标准输出输出到空文件中
2>&1:可以理解为执行command产生的标准输出重定向到文件中,标准错误也重定向到文件中,期间只打开一次文件,&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的文件。

注意:后台进程虽然可以再Xshell关闭后还能运行,但是当系统关机重启后,进程就没有了,这个时候还是需要手动启动,所以下一篇文章将会介绍为dotnet创建守护进程的方式来保证开机就能访问站点

Ⅴ 验证

此处已经完成第一段操作,可以用postman去请求以测试。此处可能会因为服务器所属平台的安全组相关原因,导致端口相关问题,之前也提过了。

二、Nginx 服务器部署(1.14.1)

1h1ttps:1//www.jianshu.com/p/9b2dd37a5af9
最好是单独一台服务器,此处演示的是在另一台服务器。

Ⅰ 安装 Nginx

[root@localhost ~]# sudo yum install nginx

安装完成后,使用以下命令启用并启动Nginx服务:

[root@localhost ~]# sudo systemctl enable nginx
[root@localhost ~]# sudo systemctl start nginx

要验证服务是否正在运行,请检查其状态:

[root@localhost ~]# sudo systemctl status nginx

Ⅱ 调整防火墙

  • FirewallD是Centos 8上的默认防火墙解决方案。
  • 在安装过程中,Nginx使用预定义的规则创建防火墙服务文件,以允许访问HTTP(80)和HTTPS(443)端口。
  • 使用以下命令永久打开必要的端口:
[root@localhost ~]# systemctl start firewalld.service
[root@localhost ~]# sudo firewall-cmd --permanent --zone=public --add-service=http
[root@localhost ~]# sudo firewall-cmd --permanent --zone=public --add-service=https
[root@localhost ~]# sudo firewall-cmd --reload

Ⅲ 验证

  • 此处依然需要查看服务器所在平台安全组是否开放相关端口。
  • 然后,可以直接外网访问 http://你的IP地址 来验证是否成功。

nginx的配置文件在/etc/nginx/nginx.conf
自定义的配置文件放在/etc/nginx/conf.d
项目文件存放在/usr/share/nginx/html/
日志文件存放在/var/log/nginx/
还有一些其他的安装文件都在/etc/nginx

Ⅳ 配置 SSL

1h1ttps:1//help.aliyun.com/document_detail/98728.html?spm=5176.b657008.help.dexternal.5fa0799dG0lX6y
这里跟着官网说明按部就班就好。
大概步骤如下:

  • 下载证书
  • 打开服务器到nginx.conf配置文件同层文件夹,新建cert文件夹,然后将证书解压的俩文件放进去
  • 再打开配置文件nginx.conf去修改
    server {
        listen 80;
        server_name yourdomain; #需要将yourdomain替换成证书绑定的域名。
        rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    }

# Settings for a TLS enabled server.
#
#以下属性中,以ssl开头的属性表示与证书配置有关。
    server {
        listen 443 ssl;
        #配置HTTPS的默认访问端口为443。
        #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
        #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
        server_name yourdomain; #需要将yourdomain替换成证书绑定的域名。
        root html;
        index index.html index.htm;
        ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #表示使用的加密套件的类型。
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;
        location / {
            proxy_pass http://程序运行IP:运行端口/;
        }
    }
  • 此处还是要验证服务器平台的安全组,是否打开了443端口。

三、OVER


上海加油!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容