• 部署DTCMS到Jexus遇到的问题及解决思路---部署


    上一篇我们环境已经准备完成,此时可以部署了,我们就以dtcms作为例子,http://bbs.dtcms.net/forum.php?mod=viewthread&tid=2420&extra=page%3D1,到这里下载源码,里面有文档和数据库脚本

    用这个项目做例子主要是帮朋友研究的就是这个产品,并且相对来说功能比vs创建的模板网站要多不少,应该会遇到一些问题

    1.创建数据库

      我们需要一个可在虚拟机中访问到的数据库服务器,大部分同学本机应该就有数据库引擎,数据库创建到本地即可,我这边由于没装,所以使用了一个阿里云上的数据库,执行源码里面的脚本即可

    2.修改webconfig连接字符串

    3.发布网站,根据文档,我们发布后要把bin目录下的一些dll拷贝到发布文件的bin目录下

    4.压缩发布后的文件夹,记得使用zip格式,现在我们遇到的问题就是如何上传到虚拟机的指定文件夹中

      1)使用xshell连接Linux虚拟机

      2)使用xshell的文件传输功能,需要你下载Xftp

      3)和普通的ftp软件差不多,上传zip文件即可

    5.解压缩zip,我上传到了/var/www/dtcms文件夹下

    1
    2
    cd /var/www/dtcms/ #定位到文件
    unzip -o PublishOutput.zip #解压缩

    6.创建网站配置

    1
    vi /usr/jexus/siteconf/dtcms #创建文件

    #内容
    port=8080
    root=/ /var/www/dtcms
    indexs=index.aspx,index.html

    记得增加防火墙配置
    7.重启Jexus

    1
    2
    cd /usr/jexus/
    ./jws restart

    8.访问测试(发现不通)无任何日志,请求未被网站应用接收,开始尝试解决问题

    1)使用vs创建默认网站模板(webform)部署测试不存在问题

    2)创建默认mvc网站模板部署测试不存在问题

    3)检查cms请求处理管道发现cms为了url重写,采用了自定义的httpModules,因此,尝试注释webconfig中httpModules相关配置,共三处

    复制代码
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <customErrors mode="Off"/>
        <!--<httpModules>
          <add type="DTcms.Web.UI.HttpModule, DTcms.Web.UI" name="HttpModule" />
        </httpModules>-->
    
        <!--<httpHandlers>
          <add verb="*" path="templates/main/*.html" type="System.Web.HttpForbiddenHandler" />
        </httpHandlers>-->
        <!-- 文件上传大小KB-->
        <httpRuntime requestValidationMode="2.0" maxRequestLength="2097151" executionTimeout="36000" />
      </system.web>
    
      <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <!--<modules runAllManagedModulesForAllRequests="true">
          <add type="DTcms.Web.UI.HttpModule, DTcms.Web.UI" name="HttpModule" />
        </modules>-->
        <security>
          <requestFiltering>
            <requestLimits maxAllowedContentLength="2147483647" />
          </requestFiltering>
        </security>
      </system.webServer>
    复制代码

    部署后可以访问管理后台

    4)由于xml中第三处依赖第一处,因此通过恢复注释的方法,确认问题出现在

      

    <httpHandlers>
          <add verb="*" path="templates/main/*.html" type="System.Web.HttpForbiddenHandler" />
        </httpHandlers>

    这个节点功能是定义禁止访问下载 templates/main/ 下的html模板文件,主要是考虑安全问题,目前还未找到为何影响了Jexus

    目前修改为

     <httpHandlers>
          <add verb="*" path="*.html" type="System.Web.HttpNotFoundHandler" />
        </httpHandlers>

    解决了问题,但看起来和上面的配置并不等价

    还有个解决的方案,可以通过Jexus配置:

      https://www.linuxdot.net/bbsfile-3084
      禁止访问某文件夹及其子文件夹中的内容
      DenyDirs=网站文件夹路径的URL路径,如 “/abcfiles”或 “~/abcfiles”,多个路径,用英文逗号分开

    解决这样的安全问题

    5.url大小写问题

    1
    vi /usr/jexus/jws

      注释掉export MONO_IOMAP前面的#

    目前来说基本功能无问题了,准备生成模板看看url重新有没有问题,结果发现控制面板-界面管理-站点模板管理 没有模板记录,通过代码分析+记录日志发现 

    DTcms.Webadminsettings emplet_list.aspx.cs中的GetInfo方法存在Linux兼容问题,

    其实就是路径的/问题,windows下就两种都可以,而Linux只支持/,修改后重新发布,问题解决(目前发现此问题已无法重现)

  • 相关阅读:
    PHP sessions that have already been started
    DOM对象和JQuery对象的区别
    iOS在支持arc的工程中,导入不支持arc的第三方的插件
    Android下利用RadioGroup和RadioButton实现Tabbar的效果
    iOS7.1以后企业应用发布需要HTTPS协议,解决步骤
    Scrapy基础(四)————Scrapy的使用Pycharm进行Debuge设置
    Scrapy基础(三) ------xpath基础
    Scrapy基础(二)————Scrapy的安装和目录结构
    python基础一 ------Python 的编码
    Scrapy基础(一) ------学习Scrapy之前所要了解的
  • 原文地址:https://www.cnblogs.com/jjg0519/p/8471489.html
Copyright © 2020-2023  润新知