【小5聊】Linux之CentOS 7云服务器购买一个月用于学习与探索部署Asp.Net Core网站,第二次接触传说中的linux服务器

目录

【本次小目标】

【小插曲】

【腾讯云】

【登录】

【Asp.Net Core 2.1】网站部署

【小疑惑】

【开启80端口】

【关键一步来了——转发】

【更重要的一步也来了 - 如何保持core网站一直启动状态】

【最后关键一步 - 配置开机自动启动】

【总结】


温馨提示:记得安装时要在根目录下安装,不要cd切换到了其他目录

【本次小目标】

      搭建和部署.net core网站,然后可通过外网IP访问到网站,就这么简单的小目标

【小插曲】

       第一次接触linux是在阿里云购买的centos7云服务器,当时已经学习到部署网站那步骤,然后在centos里面可以访问到网站,使用外网ip一直访问不到,各种找资料各种猛操作后,咨询阿里云工程师,说是国外centos服务器在国内是无法访问到的!尴尬了,折腾那么久,原来是这样!

       由于一直使用的是C#语言,所以用的服务器基本都是windows Server 2003~2012,.net core支持跨平台,自然就可以扩展到其他服务器的学习了。

【腾讯云】

购买一个月,配置如下

【登录】

1)页面控制台里是支持直接登录的

2)WebShell 登录页面

一般云服务商都有这一登录方式,不管是windows还是linux服务器都可以使用这一登录方式。

当然,一般我们还可以使用其他工具进行登录

3)设置密码

默认是没有密码的,可以进行密码重置

4)登录成功标志

登录成功后,你就可以开始搭建网站了

5)使用Xshell软件来登录linux-centos服务器

【Asp.Net Core 2.1】网站部署

1)简单搭建一个能够运行访问的网站

2)查看Core本地的开发环境和版本(本地和服务器Core的版本必须一致)

cmd > dotnet --version 或者 dotnet --info,即可查看到core的运行环境和版本

3)开启传说的手打命令,先添加yum插件

手打命令的原则:一般没有任何提示就是表示成功了,或者有完成或者成功提示就是成功了

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

4)再安装.net core 2.1 sdk

sudo yum install dotnet-sdk-2.1

先会有一个大概的预览和安装文件的大小信息,需要确认后进行安装

选择y=yes,安装过程会有几次y确认,输入y回车即可

5)查看安装好的版本

6)centos服务器创建一个目录-myweb

命令:mkdir myweb

用于保存网站文件

7)上传.net core 2.1网站文件

使用ftp等工具将网站文件上传到centos服务对应的文件夹目录下

注意:连接类型要选择-SFTP over SSH

8)定位到myweb文件夹目录

cd /root/myweb/

9)启动.net core网站项目

dotnet TestCore.dll,根据自己的项目名称来

出来下图的Now listening on: http://

10)继续添加外网

http://localhost:8090;http://*:8080

11)再次启动项目

12)测试外网访问,这里直接用外网IP来测试

13)当外网有请求页面时,centos界面会实时显示请求信息

从提示信息里我们可以知道,Ctrl+C是关闭网站

13)突然遇到无法访问的情况

这个是因为启动dotcore项目已经被关闭了,关闭WebShell登录页面后,也是自动关闭网站无法访问了

【小疑惑】

        部署到这里,虽然是可以访问了,是不是有个小疑惑,为什么我不能用80端口访问呢,直接http://ip:8080就能外网访问呢

        通过查找资料可以了解到,linux-centos默认是没有开启80端口的,需要安装一些软件进行开启,比如防火墙之类的,跟着小白一起来实现吧

        概念:转发

        还需要解决的一个问题就是如何保持启动的状态,监测关闭后自动开启

【开启80端口】

1)配置nginx

  • 安装nginx

curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

rpm -ivh nginx.rpm

yum install nginx(这一步记得输入y回车)

  • 启动nginx

systemctl start nginx

  • 设置自动启动nginx

systemctl enable nginx

  • systemctl enable nginx

2)配置防火墙

  • 查看防火墙状态

systemctl status firewalld

  • 开启防火墙

systemctl start firewalld

一般没有任何提示就表示开启成功了,再次查看防火墙状态,显示运行状态

  • 开放80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

systemctl restart firewalld(开启成功,重新启动防火墙即可生效)

systemctl stop firewalld(有开启就有关闭)

  • 直接访问外网ip,显示就是80端口nginx的信息

【关键一步来了——转发】

1)使用ftp工具,查看回到根目录,可以查看如下文件夹

2)nginx转发core网站 - 修改文件

3)直接打开编辑文件内容

 location / {
        proxy_pass http://localhost:8090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

4)重新启动nginx,即可生效

nginx -s reload

没有任何提示即为生效成功

5)再次浏览器打开外网IP地址访问,80端口访问成功,如下

6)网上有些遇到需要添加白名单的情况

【更重要的一步也来了 - 如何保持core网站一直启动状态】

1)安装Supervisor

yum install python-setuptools

easy_install supervisor

2)配置Supervisor

创建文件夹:mkdir /etc/supervisor

创建文件:echo_supervisord_conf > /etc/supervisor/supervisord.conf

3)修改conf内容

4)配置core文件

创建文件:testcore.conf,内容如下

命令:touch /etc/supervisor/testcore.conf

5)testcore.conf内容如下

[program:testcore]
command=dotnet TestCore.dll ; 运行程序的命令
directory=/root/myweb/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/testcore.err.log ; 错误日志文件
stdout_logfile=/var/log/testcore.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

6)运行

将文件拷贝至:“/etc/supervisor/conf.d/WebApplication1.conf”下

命令:

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep testcore

7)运行网站查看效果

【最后关键一步 - 配置开机自动启动】

1)在文件夹下创建文件

文件夹:/usr/lib/systemd/system/

创建文件:touch /usr/lib/systemd/system/supervisord.service

2)文件supervisord.service添加如下内容

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

3)执行命令启动和验证

systemctl enable supervisord

systemctl is-enabled supervisord #来验证是否为开机启动

备注:可能会稍稍有延迟,如果还不行,那么可以使用系统重启命令试下-reboot

【总结】

       关闭会话,依然可以访问啦,asp.net core在centos服务器上部署网站站点完整步骤流程就是这些,只要去尝试,陌生也会慢慢变得清晰!

后续再次部署出现的问题

1、 查看版本出错

A fatal error occurred. The folder [/usr/share/dotnet/host/fxr] does not exist 

dll也无法启动

core_web.dll
-bash: core_web.dll: command not found
 

 2、一顿安装

yum install libunwind libicu

sudo yum update

sudo yum install libunwind libicu

sudo yum install dotnet-sdk-2.1.4

安装运行环境
yum install dotnet-runtime-3.1

3、卸载删除.Net Core

sudo yum remove dotnet-sdk-*

sudo yum remove libunwind libicu

sudo yum remove /etc/yum.repos.d/dotnetdev.repo

4、重新安装,查看版本出错

添加yum源
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

安装sdk
sudo yum install dotnet-sdk-2.1

 5、标志当前服务器在使用.net core

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

 6、CentOs 8 最低支持.net core 3.1

安装 .NET Core SDK,只是用于开发调用的sdk,如果当前电脑仅作为服务器,则不用安装
sudo yum install dotnet-sdk-3.1

安装 .NET Core 运行时
sudo yum install dotnet-runtime-3.1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值