zoukankan      html  css  js  c++  java
  • asp.net core2.0网站的环境搭建和网站部署

    使用到的软件和硬件

    1.       centos7.3服务器一台

    2.       xshellxftp

    3.       vs2017

    4.       .NET Core

     

    1. 安装 libicu 依赖

    [root@jdu4e00u53f7 ~]# yum install libunwind libicu

     

    2.下载.NET Core2.0

    https://www.microsoft.com/net/download/linux

    下载对应操作系统的Runtime版本

    使用xftp5将下载的文件上传到opt目录下

    [root@jdu4e00u53f7 opt]# mkdir -p /opt/dotnet && tar zxf dotnet-runtime-2.0.0-linux-x64.tar.gz -C /opt/dotnet

     

    3.创建连接(环境配置)

    [root@jdu4e00u53f7 dotnet]# ln -s /opt/dotnet/dotnet /usr/local/bin

     

    4.测试环境是否成功

    [root@jdu4e00u53f7 dotnet]# dotnet --info

     

     

    234也可参考官网给的操作,安装sdk版也可以。

    https://www.microsoft.com/net/download/linux

     

     

    5.项目发布

    .net core项目在不制定具体端口的情况下,会默认使用5000端口

    Program.cs添加.UseUrls("http://*:80")

    使用xftp将发布程序上传到服务器

    [root@jdu4e00u53f7 aspnetcoreapp]# dotnet aspnetcoreapp.dll

    至此,就是下图的原理。

    如果只是测试服务器上是否能跑起来程序,到此结束了。如果要正式线上运行还需要下面的操作。Nginx不识别http://*:80这样的设置。

    使用nginx+ supervisor后的原理。Nginx也可以使用jexus(开发者:宇内流云)

     

    6.安装守护进程

    所在目录(/etc/supervisor/conf.d

    [root@jdu4e00u53f7 aspnetcoreapp]# yum install python-setuptools

    [root@jdu4e00u53f7 aspnetcoreapp]# easy_install supervisor

    #配置supervisor

    [root@jdu4e00u53f7 aspnetcoreapp]# mkdir /etc/supervisor

    [root@jdu4e00u53f7 aspnetcoreapp]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

    [root@jdu4e00u53f7 aspnetcoreapp]# cd /etc/supervisor

    [root@jdu4e00u53f7 supervisor]# ls

    supervisord.conf

    #修改配置文件

    [root@jdu4e00u53f7 supervisor]# vi supervisord.conf

    #将文件最后的内容修改为

    创建目录conf.d,在目录下创建文件aspnetcoreapp.conf,编辑vi aspnetcoreapp.conf

    [program:aspnetcoreapp]

    command=dotnet aspnetcoreapp.dll

    directory=/var/www/html/aspnetcoreapp

    autostart=true

    autorestart=true

    stderr_logfile=/var/log/aspnetcoreapp.err.log

    stdout_logfile=/var/log/aspnetcoreapp.out.log

    environment=ASPNETCORE__ENVIRONMENT=Production

    user=root

    stopsignal=INT

     

    运行supervisord并查看进程是否生效

    [root@jdu4e00u53f7 conf.d]# supervisord -c /etc/supervisor/supervisord.conf

    [root@jdu4e00u53f7 conf.d]# ps -ef | grep aspnetcoreapp

    重启supervisord

    [root@jdu4e00u53f7 conf.d]# supervisorctl reload

    关闭

    [root@jdu4e00u53f7 bin]# supervisorctl shutdown

    Shut down

    开启

    [root@jdu4e00u53f7 bin]# supervisord -c /etc/supervisor/supervisord.conf

    禁用开机启动命令:systemctl disable supervisord  

    查看是否开机自启动:systemctl is-enabled supervisord

     

    开启管理界面

    [root@jdu4e00u53f7 supervisor]# vi /etc/supervisor/supervisord.conf

     

     

    7.安装nginx

    http://dl.fedoraproject.org/pub/epel/

    下载

    [root@jdu4e00u53f7 opt]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

    安装epel

    [root@jdu4e00u53f7 opt]# rpm -ivh epel-release-7-10.noarch.rpm

     

    安装nginx

    [root@jdu4e00u53f7 opt]# yum install nginx

    启动nginx

    [root@jdu4e00u53f7 opt]# systemctl start nginx

    nginx添加至SELinux的白名单,否则会报502错误

    [root@jdu4e00u53f7 opt]# yum install policycoreutils-python

    semodule -i mynginx.pp

    测试nginx是否正常

    curl http://127.0.0.1

    由于京东云上面已经安装了nginx,上面的步骤也就没执行。

     

    8.配置nginx

    修改配置文件/etc/nginx/nginx.confserver部分为以下内容,配置Nginx侦听之前的网站

    nginx -s reload  :修改配置后重新加载生效

    nginx -s stop  :快速停止nginx

     

     

    小知识

    防火墙设置

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

    命令含义:

    --zone #作用域

    --add-port=80/tcp  #添加端口,格式为:端口/通讯协议

    --permanent  #永久生效,没有此参数重启后失效

    重启防火墙

    firewall-cmd –reload

     

    通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。

    通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。

    再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。

    如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。

    再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。

     

     

    参考资料:

    1. UseUrls的使用

    https://q.cnblogs.com/q/80263/

    2. 官方下载安装说明

    https://www.microsoft.com/net/download/linux

    3. kestrel介绍

    http://www.cnblogs.com/Wddpct/p/6123653.html

    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x

    https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x

     

    4. self-contained(自宿主)部署方式,不推荐

    http://www.cnblogs.com/dudu/p/5638172.html

    https://docs.microsoft.com/zh-cn/dotnet/core/deploying/index

    https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs

    https://github.com/dotnet/corefx/blob/master/pkg/Microsoft.NETCore.Platforms/runtime.json

     

    5.asp.net core迁移博客

    http://www.cnblogs.com/mantgh/p/5658398.html

    6.asp.net core发布到linux

    http://www.cnblogs.com/smileberry/p/6878421.html

    7.另一篇部署

    http://www.cnblogs.com/ants/p/5732337.html

    8.asp.net core启动流程

    http://www.cnblogs.com/sheng-jie/p/7640163.html

    9.还是一篇部署

    https://segmentfault.com/a/1190000010763523

    http://www.cnblogs.com/yuangang/p/5787122.html

    10.守护进程

    http://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html

     

    11..NET文档

    https://docs.microsoft.com/zh-cn/dotnet/

    https://www.microsoft.com/net/core#windowscmd

     

     

     

     

     

    总结

    1.       Program.cs里设置.UseUrls("http://*:8080"),发布后使用dotnet XXXX.dll后,不使用ctrl+C退出则可以公网访问。但是,一旦退出(关闭远程连接)则无法访问,需要使用守护进程+nginx,Program.cs则要设置.UseUrls("http://127.0.0.1:8080")

     

     

     

     

     

     

     

    Jexus

    1.安装

    curl https://jexus.org/release/x64/install.sh|sh

     

    2.开启与关闭

    [root@jdu4e00u53f7 jexus-5.8.2]# cd /usr/jexus

    [root@jdu4e00u53f7 jexus]# ./jws start

    Starting ... OK

    [root@jdu4e00u53f7 jexus]# ./jws stop

    Stopping ... ... OK.

     

    2.配置

    先关闭nginxSupervisor

    [root@jdu4e00u53f7 siteconf]# pkill -9 nginx

    [root@jdu4e00u53f7 siteconf]# supervisorctl shutdown

     

    [root@jdu4e00u53f7 siteconf]# vi default

    port=80

    root=/ /var/www/html/aspnetcoreapp

    hosts=*    #OR your.com,*.your.com

     

     

    # addr=0.0.0.0

    # CheckQuery=false

    NoLog=trueAppHost={CmdLine=dotnet /var/www/html/aspnetcoreapp/aspnetcoreapp.dll;AppRoot=/var/www/html/aspnetcoreapp;Port=8080}

    # NoFile=/index.aspx

    Keep_Alive=false

    UseGZIP=false

    OutLog=/tmp/out.txt;

    ErrorLog=/tmp/err.txt;

     

    [root@jdu4e00u53f7 siteconf]# cd ..

    [root@jdu4e00u53f7 jexus]# ./jws start

     

    2.设置自启动

     

     

    Jexus包括如下操作命令(首先 cd /usr/jexus):

    启动:sudo ./jws start

    停止:sudo ./jws stop

    重启:sudo ./jws restart

     

    如何部署多个网站?(jexus的版本必须是5.8.2及以上)

    1.去除Program.cs里的UseUrls

    2. siteconf下新建每个网站的配置文件,一个网站一个配置文件

    3.配置里Port设置为0

    我这边配置了2个网站core.uoolo.comnetcore.uoolo.com 2个站点

     

    参考:

    http://blog.csdn.net/u010584641/article/details/73611223

    https://www.jexus.org/

    http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html

  • 相关阅读:
    Python数据爬虫,爬链家的二手房信息
    驼峰命名法
    变量
    use strict(变得严格)
    注释
    分号(line break:分行符号)
    使用外部js文件
    confirm
    prompt
    https和http的区别
  • 原文地址:https://www.cnblogs.com/wuchao/p/7716679.html
Copyright © 2011-2022 走看看