Asp.Net Core 2.1.1初识(一)

1.vmware虚拟机安装

https://pan.baidu.com/s/1PfCYFqRAe0DnEOZio46fng

密码:4ng4

2.CentOS 7.3安装

http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso

下载完成后打开vmware准备安装......

 

3.Windows的客户端软件

Xshell下载安装:https://pan.baidu.com/s/1cPvjtTPCiYCKcxilnAOnCw  密码:voly

  作用:远程控制linux终端

WinSCP下载安装:https://pan.baidu.com/s/1eFcJALAbGnTwRnZVSJFUWg 密码:2jt2

  作用:上传发布网站文件至linux系统

进入CentOS,右键

开始第一个命令:查看IP

ifconfig -a

接下来我们试试用Xshell操控Linux终端,打开此软件...

然后输入用户名密码登录,使用root登录名登录(以为后面安装软件等操作需要root权限)

4.Net Core2.1安装

安装.net core2.1.1是因为VS2017里默认2.1.1版本,但是虚拟机里却是2.1.0,版本不同有bug。

Xshell和虚拟机终端均可输入下面命令符,但Xshell前提登录到虚拟机了

cd ~
wget https://download.microsoft.com/download/9/3/E/93ED35C8-57B9-4D50-AE32-0330111B38E8/aspnetcore-runtime-2.1.1-linux-x64.tar.gz
cd /opt/dotnet
sudo cp ~/asp*z .
sudo tar zxvf asp*z

(如果以上输入中提示有错,则用WinSCP去cd /opt/dotnet文件夹下删除2.1.0压缩包)

5.nginx 1.12.1安装

在我们用VS发布完网站并用WinSCP上传到虚拟机上,可以在虚拟机里自带的火狐浏览器中运行后,我们需要在自己电脑物理机浏览器访问,为了这个解决需求,我们需要Nginx这个反向代理服务器。好,接下来接着输入inux命令让虚拟机安装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 #安装

注意:#是Linux命令行的注释符

安装结束以后再输入两行

systemctl start nginx #启动nginx

systemctl enable nginx #设置nginx的开机启动

为了验证Linux虚拟机的nginx是否安装成功,可以在虚拟机上的火狐浏览器输入前面查到的ip地址,来看看结果......

6.配置防火墙

完成Nginx的安装后,如果在自己电脑的物理机的浏览器访问不了,是因为CentOS自带的防火墙拦截了80端口,一下命令行可以解决......

firewall-cmd --zone=public --add-port=80/tcp --permanent #(开放80端口)

systemctl restart firewalld #(重启防火墙以使配置即时生效)

7.部署Asp.Net Core应用程序

接下来我们就可以试着发布第一个.net core的hello word了!

ps:从vs2015才支持core,个人建议vs2017方便一些。

按照平常的发布后看一下发布后的文件里有没有Views的文件夹,如果没有则找到项目里的.csproj文件,在PropertyGroup下加入   <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>,再重新发布。不要问为什么,.net core还在更新......

接下来打开WinSCP,帐号登录连接到Linux虚拟机......

点击登录,然后就可以看到CentOs系统的文件目录了。然后随便建个文件夹,准备放我们发布发好的程序。

接下来执行命令:

 cd /home/NetCoreDemo #这个目录 要输入你自己对应放的目录

dotnet netcoreDemo.dll # netcoreDemo.dll 这个对应你建的项目生成的dll

看到了5000 端口的一个网址,证明部署好了。注意,上面的终端不要关闭,否则下面操作将会失败,访问不会成功。
然后在虚拟机里面访问 http://localhost:5000 ,如下图......

 

8.nginx配置

前面已经在虚拟机里安装了Nginx,接下来就要在项目中使用了。为了让这个项目不光能在Linux中跑起来,还要在Windows中跑起来

在WinSCP中进行操作,打开路径 /etc/nginx/conf.d ,编辑default.conf 文件内容替换为:

server {

  listen 80; location / {

  proxy_pass http://localhost:5000; 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;

  } }

  补充:以后当我们发布第二第三个网站时,需要用到不同的listen端口号......

为了让强大的Nginx正常工作,不出现页面502错误,还有一步就是要将Nginx添加到SELinux的白名单,输入以下命令行......

nginx -s reload #使其即时生效,然后这里访问下 http://192.168.233.130/ (对应你自己的centos ip,这一步好重要。应该是要先主动触发这个502错误吧)

yum install policycoreutils-python #(选y)

cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

semodule -i mynginx.pp

至此,我们就可以在物理机上通过ip访问了(不用带端口了,因为就一个默认端口,直接80 然后 nginx 转到了5000)。

9.配置守护服务(Supervisor)

为了解决关掉那个5000界面也可以访问网站,我们还要进行配置守护服务。

输入命令行:

yum install python-setuptools

easy_install supervisor #安装Supervisor

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf #配置Supervisor

然后WInSCP中找到supervisord.conf文件,右键编辑

在此文件的最后有

;[include] ;

files = relative/directory/*.ini

改成

[include]

files = conf.d/*.conf

结束以后再进入目录 /etc/supervisor/ 新建 conf.d文件夹,conf.d文件夹下新建 netcoreDemo.conf文件
内容为:(【注意】看 第二行 第三行的 注释,根据实际名字填入,并删除下面所含文字)

[program:netcoreDemo]

command=dotnet netcoreDemo.dll ; (注意)运行程序的命令

directory= /home/NetCoreDemo/ ; (注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!!

autorestart=true ; 程序意外退出是否自动重启

stderr_logfile=/var/log/WebApplication1.err.log ; 错误日志文件

stdout_logfile=/var/log/WebApplication1.out.log ; 输出日志文件

environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量

user=root ; 进程执行的用户身份

stopsignal=INT

结束以后,输入命令行

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep netcoreDemo #【注意】netcoreDemo是上面 program:netcoreDemo 的命名

supervisorctl reload #重新加载

10.配置Supervisor开机启动

这么好的东西当然要开机自启了(手动滑稽)

在WinSCP中打开目录 /usr/lib/systemd/system/ 并新建文件 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

结束以后执行Linux命令:

systemctl enable supervisord

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

原文地址:https://www.cnblogs.com/HansZimmer/p/9541424.html