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


上海加油!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容