dotnet core2.2 通过虚拟机发布到CentOS上

自从.net core出现的时候,就知道c#的代码居然能后运行到Linux上面,以前都没想过居然这么牛逼,所以很早就想学习怎样部署上去,直到现在.net core都出现2.2了,才花时间去接触,说实话,第一次接触,太多的坑在这个上边了,途中还走了很多弯路...现在把最后总结的流程简单的记录下来

**一 丶下载vmware Workstation (我的虚拟机用的VM所以这里就只讲了VM) **

这里下载,这个是官网,下载需要注册,尽量不要再其他地方下载,可能会附带一些不可描述的东西

(安装过程就省略了,你们这么聪明,肯定不需要了)

二丶下载一个centos 7.0镜像文件(版本看你心情),并且安装在虚拟机上面

这里下载,官网有时候很卡,耐心等一下,这里有

CentOS-7-DVD版本:DVD是标准安装盘

CentOS-7-Everything版本:对完整版安装盘的软件进行补充,集成所有软件

CentOS-7-Minimal版本:迷你精简版

4624570-4a68c1ab3ada1310.png
image

如果只是为了发布.net core的话,我们用迷你版就行了,比较小,功能也能够满足,下载保存到固定的文件夹

接下来就是在VM上面装centos了(你们这么聪明,那我就把简单的步骤省略,还剩重要位置的几张图)

新建一个

4624570-3782e7fc7f562242.png
image
4624570-98891e180812a3df.png
image
4624570-4e36983861bb7a56.png
image
4624570-d446a3d1cf6363ea.png
image

这个磁盘大小选个30G应该够用了 ...

4624570-6538e873d6332f4b.png
image

记得在这里配置磁盘大小,点下一步还有root密码

4624570-cd1653fc4bda99fc.png
image

成功安装之后,使用root登录 (输入密码时是隐藏的)

由于装的迷你版本的,里面应该不存在网卡驱动,可以用ping baidu.com和ifconfig两个命令测试一下

4624570-785d9d9721cb85e2.png
image

这里要安装一下

1.进入网卡地址 cd /etc/sysconfig/network-scripts

2. 编辑 vi ifcfg-ens33 将ONBOOT改为yes, 然后退出保存(esc+:wq)

4624570-b0e8162f71299dac.png
image

3. 退出之后重启网卡 service network restart

4.安装包 sudo yum install net-tools ,中途记得输入y确认

现在ok了,这个是你的IP

4624570-d6c65f9f36ceb676.png
image

三丶 下载putty,下载filezilla(都去官网)

可以不用putty,但是这个比虚拟机操作更方便,最主要是可以复制粘贴

4624570-54f05411f7a39a54.png
image

下载filezilla,filezilla就是一个免费开源的ftp软件,便于我们把.net core发布文件上传到Centos中,直接用centos的ip还有root账号连接,端口用22,之后就可以上传文件了

4624570-8597b2790d517bc8.png
image

四 安装dotnet core和nginx环境 ,配置nignx,在centos 运行.net core

根据官网进行安装: https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current,记得linux选择centos版本

4624570-548d439352abc9d7.png
image

安装成功后随便用一个命令检测是否安装成功,例如: dotnet --version

接着继续安装nginx反向代理服务器,用于映射端口方便我们访问

1. 添加nginx存储库: sudo yum install epel-release

2. 安装ngingx: sudo yum install nginx

3. 启动nginx: sudo systemctl start nginx

4. 启动防火墙允许http后台https访问

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

(如果想在系统启动时运行nginx,运行命令:sudo systemctl enable nginx)

直接在本机访问我们上面虚拟机80端口的地址,这里是192.168.64.128,就可以看见nginx界面了

vs创建一个.net core例子,记得在program.cs里面指定路由地址

4624570-544ab61a204cef4c.png
image

接着发布到指定文件夹,使用FileZilla上传到centos指定位置,我这里上传到/home/hello里面的

4624570-dce8e550defd7b8a.png
image

在centos查看一下文件是否存在

4624570-07a698db2441f30f.png
image

可以看到文件已经过来了,接下来运行起来 dotenet Test.dll

4624570-f9740110af2073c1.png
image

运行成功后,不能按Ctrl+z,否则进程会被暂停,外部访问会出现

4624570-baecbe04f251365a.png
image

这里,我们重新打开一个putty,用root账号连接上centos

进入nginx配置的默认菜单:cd /etc/nginx

编辑nginx.conf文件,屏蔽所有默认的80端口反向代理

4624570-07d68b6a46b37a9d.png
image
4624570-ea72a79595883a73.png
image

并且加入自己的反向代理用80端口指向5000

4624570-966aa6485c55cf54.png
image

重新加载并且重启nginx

nginx -s reload

systemctl restart nginx

好了现在就可以在本机访问了

4624570-30ba9f5842e57337.png
image

PS:

1. 如果出现502

4624570-3e0d8bcd20eb34b4.png
image

原因:SELinux配置问题。
解决:关闭SELinux。
输入:sestatus,如果SELinux status: enabled ,表示开启,输入vi /etc/selinux/config 修改配置:SELINUX=disabled。

然后重启CentOS

2. 如果出现

Job for nginx.service failed because the control process exited with error code

出现这个错误则是default.conf或nginx.conf文件,查看是否少写了一个分号,确实不行就卸载nginx再重装

可能会需要用到的一些命令:

nginx停止:

ps -ef|grep nginx 查看所有进程

kill -9 PID 杀死进程
nginx重启:

sudo service nginx restart

nginx卸载:

yum remove nginx 记得删除nginx相关的所有文件

看下是否删除成功 which nginx

查看某个端口的进程

netstat -anp | grep 端口号

杀掉进程: kill -9 PID

访问网址: curl 网址 (curl http://192.168.64.128)

4624570-7ad1442474a63a1f.gif
好书推荐、视频分享,与您一起进步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值