• 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 #来验证是否为开机启动

  • 相关阅读:
    JAVA_SE基础——59.权限访问修饰符
    JAVA_SE基础——58.如何用jar命令对java工程进行打包
    JAVA_SE基础——57.有了包之后类与类之间的访问使用import语句
    JAVA_SE基础——56.包的创建
    JAVA_SE基础——55.自定义异常类
    JAVA_SE基础——54.异常
    JAVA_SE基础——53.什么是异常?
    Spring整合Mybatis
    Mybatis的ResultMap结果集映射、日志、分页
    Java中的值传递机制
  • 原文地址:https://www.cnblogs.com/HansZimmer/p/9541424.html
Copyright © 2020-2023  润新知