精华内容
下载资源
问答
  •   各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是 https://qinyuanpei.github.io .在曾经的一篇博客:《持续集成在Hexo自动化部署上的实践》中,我为大家分享了在线持续集成服务 Travis CI ...

      各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是 https://qinyuanpei.github.io .在曾经的一篇博客:《持续集成在Hexo自动化部署上的实践》中,我为大家分享了在线持续集成服务 Travis CI 的相关内容,在这篇文章中我们通过 Travis CI 为 Hexo 提供了自动部署的支持。其原理是Github为 Travis CI 分配一个token,当我们向 Github 推送新的代码以后,Travis 就会从代码仓库中拉取代码,并通过 npm 安装依赖生成静态页面,我们将这些静态页面推送到 master 分支,即可完成对Hexo的部署操作。这个流程从去年10月份建立以来,一直运行得非常稳定,对我个人而言,随着博客里得内容越来越多,在本地生成静态页面需要
    20多秒得时间,而有了持续集成服务以后,我可以用这个时间去做更多的事情,当持续集成流程发生异常的时候,微信上会收到 Travis 发送的邮件,整个过程简直令人心情愉悦。

      今天想继续写点这个话题相关的内容,即如何通过 Travis CI 实现 Hexo 在 Github 和 Coding 的同步部署。显然,部署 Hexo 到 Github Pages 我们已经实现,今天我们着重来说 Coding Pages。为什么我们需要 Coding Pages 呢?主要从两个方面考虑,首先,因为 Github Pages 屏蔽了百度的爬虫,所以我们托管在 Github 上的博客,无法被搜索引擎正常收录;其次,由于 Github Pages 的服务器在国外,所以在国内博客的速度会受到影响,而且“防火墙”的国情决定了 Github 是一个不稳定的网站。曾经经历过短时间内无法使用 Github 的情形,故而,为了保证博客可以更加稳定地运行,我们必须为博客提供一个备份镜像,这就是我们今天要提到的 Coding Pages 服务啦。在正式使用这个服务前,我们首先简单介绍下这个服务。

      我们知道 Github Pages 是 Github 提供的静态页面托管服务,其初衷是为个人项目或者组织项目创建演示或者文档站点,而 Coding Pages 则是国内的代码托管平台 Coding 提供的类似服务,国内类似的代码托管平台还有码云Gitlab 等。Coding Pages 支持自定义域名、SSL 等基本特性,随着官方不断对这一服务进行升级,目前该服务除支持静态页面部署以外,同时支持 PHP 和 MySQL这类动态页面部署的特性。对 Hexo 来说,静态页面部署的特性完全可以支撑我们这个想法。我的想法是以 Github 作为代码的主仓库,其上面的 blog 分支存放博客的源代码, master 分支存放博客的静态页面,在此基础上,我们同时推送静态页面到 Github 和 Coding 的代码仓库,这样就可以实现两个平台的同步部署,这里的部署自然是指由 Travis 完成的自动化部署。整体的流程设想如下图所示:

    博客同步部署流程图

      通过这个流程图,我们可以注意到,新增加的工作量,主要体现在 Travis 向 Coding 的代码仓库推送静态页面,因此我们首先要有一个 Coding 的代码仓库。关于如何注册 Coding 及在 Coding 上创建代码仓库,这里不再详细赘述啦,大家可以自行百度、Google 或者阅读官方文档。Travis CI 的行为主要由 .travis.yml 这个文件来决定,要推送静态页面到 Coding 的代码仓库,Travis CI 需要有代码仓库的读写权限。顺着这个思路,尝试让 Coding 授权 给 Travis CI,结果从文档中发现Travis CI 并不支持 Coding,而 Coding 官方支持的持续集成 flow.ci 需要使用者从 Docker 创建镜像,所以看起来这条路无法走通。从搜索引擎中检索相关问题,从 Git 工作机制的角度入手,可以想到三种常见思路,即 SSH Key、Hexo 的 deploy 插件和 HTTPS协议。

      第一种思路是考虑让 Travis CI 的远程服务器共享本机的SSH Key,通过 ssh-copy-id 命令即可实现,可问题是 Travis CI 每次创建虚拟机环境是变化的,因此我们无法确定目标主机的 IP 或者计算机名称等信息,这种思路不适合 Travis CI。而 Travis CI 官方同样提供了命令行工具来完成这个工作,因为 Travis CI 是基于 Ruby 开发而来,所以需要 Ruby 的环境支持,作为一个为逃避 Jekyll 而选择 Hexo 的人,我是不会让自己再受到 Ruby 的摧残的,所以这种思路基本放弃。第二种思路是使用 Hexo 提供的 deploy 插件,例如 hexo-deploy-git 这个插件支持通过 git 部署,而 Coding 和 Github 都支持 Git 相关的协议,所以可以考虑使用这个插件来完成这个操作,目前网络上可以检索到的资料,都是使用这个插件来完成同步部署。可是经过我一位使用过这个插件的朋友确定,该插件需要再执行 git 命令行期间输入用户名和密码,Travis CI 是不会给你机会输入用户名和密码的,所以这种思路再次放弃。第三种 HTTPS 协议,这个想都不用想是需要输入密码的,所以果断直接放弃。

      正所谓”行至水穷处,坐看云起时”,山重水复之间,柳暗花明之际,我意外发现 Coding 提供了和 Github 类似的”访问令牌”,我们在使用 Travis CI 的时候,实际上做了两步授权操作,第一次是授权 Travis CI 读取我们在 Github 上的仓库列表,这是一个通过 OAuth 授权的过程;第二次授权是授权 Travis CI 向指定仓库推送或者拉取内容,这是一个通过 Token 授权的过程。我们会在 Travis CI 的后台设置中将 Token 作为全局变量导出,这样我们就可以在 .travis.yml 文件中引用这些全局变量。我意识到这是一个值得一试的想法,首先我们在 Coding 的”个人设置”页面中找到访问令牌,新建一个新的访问令牌,这里我们选第一个权限即可,因为我们只需要为 Travis 提供基本的读写权限,这样我们会生成一个 Token,这里注意保存 Token,因为它在这里只显示这一次,我们将 Token 填写到 Travis CI 的后台,取名为 CO_Token 即可,依次如下图所示:

    在Coding中新建访问令牌

    在Coding中保存访问令牌

    在Travis中新建全局变量

      好了,现在有了Token,就意味着 Travis CI 有权限向 Coding 推送或者拉取内容了,那么怎么让它工作起来呢?我们记得 Travis CI 有一个叫做 .travis.yml 的配置文件对吧?这里我们需要简单修改下这个文件,让 Travis CI 在生成静态页面以后同时推送静态页面到 Coding。修改后的关键配置如下,我已经写好了详细注释,关于这个文件配置可以参考这里,这里不再详细说明:

    after_script:
      - cd ./public
      - git init
      - git config user.name "qinyuanpei"
      - git config user.email "qinyuanpei@163.com"
      - git add .
      - git commit -m "Update Blog By TravisCI With Build $TRAVIS_BUILD_NUMBER"
      # Github Pages
      - git push --force --quiet "https://${CI_TOKEN}@${GH_REF}" master:master 
      # Coding Pages
      - git push --force --quiet "https://qinyuanpei:${CO_TOKEN}@${CO_REF}" master:master
      - git tag v0.0.$TRAVIS_BUILD_NUMBER -a -m "Auto Taged By TravisCI With Build $TRAVIS_BUILD_NUMBER"
      # Github Pages
      - git push --quiet "https://${CI_TOKEN}@${GH_REF}" master:master --tags
      # Coding Pages
      - git push --quiet "https://qinyuanpei:${CO_TOKEN}@${CO_REF}" master:master --tags
    
    branches:
      only:
        - blog
    
    env:
     global:
       # Github Pages
       - GH_REF: github.com/qinyuanpei/qinyuanpei.github.io
       # Coding Pages
       - CO_REF: git.coding.net/qinyuanpei/qinyuanpei.coding.me.git

      好了,现在我们就可以同时部署博客到 Github 和 Coding了,现在大家可以使用下面两种方式来访问我的博客。需要说明的是,使用 Coding Pages 的特性需要开启仓库的 Pages 服务,并且 Coding 支持免费托管私有项目,虽然目前仓库的容量存在限制,对我们部署 Hexo 来说完全足够啦,下图是 Coding 上展示的提交历史,排版效果棒棒哒,哈哈,好了,以上就是这篇文章的内容啦,希望大家喜欢哦!

    Coding上展示的提交历史

      本文使用的 .travis.yml 文件可以从这里 获取哦!

    展开全文
  • sudo -u www ssh-keygen -t rsa -C "xxx@xx.com"
  • 区块链开发笔记一:以太坊自动化环境部署 docker 环境正常 详细操作请参考 区块链开发笔记五:以太坊源码编译及环境搭建 区块链开发笔记一:以太坊自动化环境部署 以太坊搭建 创建acco...

    环境前准备

    1. 多台(两台及以上)虚拟机 :CentOS 7 64位 / Ubuntu16.04 64位
    2. linux虚拟机都有可正常使用的以太坊客户端工具。
      若不能,请参考以下连接:
      区块链开发笔记五:以太坊源码编译及环境搭建
      区块链开发笔记一:以太坊自动化环境部署
    3. linux虚拟机都有可正常使用的docker环境。
      若不能,请参考以下连接:
      区块链开发笔记五:以太坊源码编译及环境搭建
      区块链开发笔记一:以太坊自动化环境部署

    以太坊搭建

    创建account账号

    geth --datadir node account new
    

    此处创建三个account账号
    在这里插入图片描述
    创建私链

    pupeth
    

    在这里插入图片描述
    创建创世块
    此处创建创世区块可输入多个account账号来创建,但是会影响后面的节点部署效率,故推荐只用一个account账号来主服务器的挖矿节点使用,其他account账户通过console界面来添加。
    在这里插入图片描述
    连接服务器

    此处连接了三个服务器,也可以只选择连接一个服务器去部署好ethstats以及其他节点,在后续创建第二个挖矿节点的时候再去选择连接其他服务器,个人推荐先连接所有需要部署的服务器。
    在这里插入图片描述
    部署监控页面

    选择将121服务器作为主服务器,来监控其他服务器上部署的节点服务。
    先保证121那台服务器所有网络组件正常,因此(ethstats)监控页面创建在121服务器。
    监控页面可以监视123和125机器上的挖矿节点。
    在这里插入图片描述
    部署根节点

    同样创建在121服务器上。
    在这里插入图片描述
    部署挖矿节点(第一个挖矿节点)

    同样创建在121服务器上。
    在这里插入图片描述
    后续的钱包,水龙头等网络组件此处就不创建了,只测试挖矿节点。
    详细操作参考:
    区块链开发笔记二:以太坊自动部署环境测试

    创建完成后,通过游游览器访问121服务器创建的监控页面。
    在这里插入图片描述
    部署第二个挖矿节点

    同样还是在121服务器的puppeth界面创建,只不过需要连接到第二台服务器,且节点工作文件创建在第二台服务器的目录。
    此处第二台服务器选择125服务器创建,而且只创建挖矿节点,后续的网络组件目前不考虑。
    在这里插入图片描述
    刷新监控页面
    此时可以看到在125服务器上部署的挖矿节点会显示在121服务器的监控页面上,但是125服务器的挖矿节点没有连接到121服务器的私链上,因此下一步操作是添加信任账户。
    在这里插入图片描述
    添加信任账户

    首先找到121服务器挖矿节点目录下的ipc文件,然后进入挖矿节点的console界面。

    geth attach ipc:geth.ipc
    

    在这里插入图片描述
    查看125服务器创建挖矿节点用的account账号有没有添加到信任列表中

    clique.getSigners()
    

    在这里插入图片描述
    如果125服务器挖矿节点用的account账号没有添加的,则需要添加到信任的账户

    clique.propose('0xda29a67a1868c3959e5f5ac63f75e25f370ac424', true)
    

    但是此处需要主要的是,执行propose操作后,需要在125虚拟机的console界面下执行挖矿操作,不然添加不成功。
    在这里插入图片描述
    去125服务器挖矿节点的console界面下,执行miner.start(),即可正常交易及显示。
    在这里插入图片描述
    刷新监控页面,会发现第二个挖矿节点已成功连接到私链,但是挖矿节点还是没正常工作,还需要做节点同步连接处理。
    在这里插入图片描述
    挖矿节点之间同步连接

    先在121服务器的挖矿节点console界面查看节点连接情况。

    admin.peers
    

    在这里插入图片描述
    如果发现121服务器的挖矿节点没有连接上125服务器的挖矿节点,则需要关联。
    首先查看125服务器挖矿节点信息

    admin.nodeInfo
    

    admin.nodeInfo.enode
    

    在这里插入图片描述
    执行下面指令连接节点。

    admin.addPeer("enode://2a98980efebf19d975bcf567a730c8619217fcd98d01ed34580995a37a46d0ac8deeb3d38bc66134bfe30618e4e0ec6b89dd4e1c9d8961c738790a013a71f780@192.168.5.125:30304")
    

    连接过程中可能会出现延迟情况,请耐心等待。
    在121服务器上查看连接情况,会发现已连接成功。
    在这里插入图片描述
    在125服务器上查看。
    在这里插入图片描述
    刷新监控页面,会发现挖矿节点开始正常工作
    在这里插入图片描述
    所有部署的节点可以在对应的服务器上同docker日志查看。

    docker logs -f 私链名+挖矿节点名
    

    在这里插入图片描述
    121服务器puppeth界面显示
    在这里插入图片描述

    问题注意

    在加入信任账户的操作中,有一点需要注意,就是信任支持率要达到50%以上,不然无法加入信任列表。
    举个例子:
    假如有三台服务器的挖矿节点已经相互信任且相互连接起来了,此时加入第四台服务器来挖矿,此时至少要有两台虚拟机执行propose操作,不然第四台服务器挖矿节点作用的account账户无法加入信任列表。
    图片说明:
    在这里插入图片描述
    在这里插入图片描述
    多节点的部署就到此结束了,可能在部署过程中存在点问题,不懂的可以私信小编,谢谢。

    更多详细介绍
    https://download.csdn.net/download/qq_36651243/11068809

    更多资料:
    以太坊自动化部署
    以太坊环境测试
    go-ethereum编译
    docker切换代理
    docker启动问题
    puppeth中私链绑定账户问题
    以太坊中go版本问题
    智能合约部署上链操作
    ipfs私有网络搭建

    展开全文
  • Pycharm部署 项目同步

    万次阅读 2019-12-31 23:37:54
    Pycharm部署 我们在使用编程的时候,经常需要将项目上传到服务器上测试,Pycharm给我们提供了一个非常方便的方式。以下是操作过程, 打开pycharm,最上面的目录栏找到Tools -> Deployment -> ...

    Pycharm部署 项目同步

    我们在使用编程的时候,经常需要将项目上传到服务器上测试,Pycharm给我们提供了一个非常方便的方式。以下是操作过程,

    1. 打开pycharm,最上面的目录栏找到Tools -> Deployment -> Configuration在这里插入图片描述
    2. 点击 + 号,选择SFTP在这里插入图片描述
    3. 给部署起一个名字在这里插入图片描述
    4. 将信息填好,点击Test Connection在这里插入图片描述
    5. 如果出现 Successfully 则表示连接成功在这里插入图片描述
    6. 连接成功之后,继续配置,Local Path是本地的项目地址,deployment Path是将要上传的服务器上的项目地址在这里插入图片描述
    7. 上传项目,最上面的目录栏找到Tools -> Deployment -> Upload to Apple在这里插入图片描述
    8. 下拉项目,最上面的目录栏找到Tools -> Deployment -> Upload to Apple在这里插入图片描述
    9. 本地和服务器实时同步在这里插入图片描述
    10. 上传的快捷键 Ctrl + Alt + Shift + x
    展开全文
  • 前后端分离项目部署(部署一台服务器) 博主现在参与的项目是前后端分离的,前端是用vue写的并用npm构建的,后端是用java写的用maven构建的,但是前端和后端在一个项目中,之前的部署方式是前端代码在本地调试好...

    前后端分离项目部署(部署在同一台服务器)

    博主现在参与的项目是前后端分离的,前端是用vue写的并用npm构建的,后端是用java写的用maven构建的,但是前端和后端在同一个项目中,之前的部署方式是前端代码在本地调试好后,编译完之后,提交在git上,然后用持续集成工具(基于jenkins)进行编译,部署。
    这样无疑会影响效率,而且很容易出错,有没有一种方法能一键编译前后端代码并部署呢。

    编译前脚本

    很容易想到,在编译后端代码之前先运行脚本编译前端代码即添加个编译前脚本不就行了吗?然而结果是博主的公司不支持这种脚本。
    在这里插入图片描述
    如图,根本没有编译前或者编译后脚本。虽然可以用启动前脚本替代,但是这样会引入新的问题,前端的代码会在运行前编译,编译代码的环境依赖于实际运行的机器,而且会导致每个机器运行前都会编译,显然不合适。

    exec-maven-plugin插件

    既然上面的方法不行,那么有没有办法能在maven的生命周期内编译前端代码呢?博主想到了 exec-maven-plugin 这个插件。
    exec-maven-plugin 插件让我们在maven的编译的生命周期内可以有机会运行一些命令。
    代码结构是这样的
    在这里插入图片描述
    只需要进入 market-win-man-vue中运行 npm命令就可以了。
    以下是插件配置

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>exec-npm-install</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
                <configuration>
                    <executable>npm</executable>
                    <arguments>
                        <argument>
                            install
                        </argument>
                        <argument>
                            --verbose
                        </argument>
                        <argument>
                            --registry=http://artifactory.jd.com/api/npm/npm
                        </argument>
                    </arguments>
                    <workingDirectory>../market-win-man-vue</workingDirectory>
                </configuration>
            </execution>
            <execution>
                <id>exec-npm-run-build</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
                <configuration>
                    <executable>npm</executable>
                    <arguments>
                        <argument>run</argument>
                        <argument>build</argument>
                    </arguments>
                    <workingDirectory>../market-win-man-vue</workingDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    本地试了以下,完全可行,但是到了线上编译的时候,又失败了,一脸懵逼。
    什么原因呢?原来是线上的编译环境没有安装node,而且这个镜像一时半会改不了。再换个方法。
    (后来证明即使有node环境也无法编译,没有执行npm命令的权限)

    frontend-maven-plugin

    frontend-maven-plugin 插件是一个在maven编译时,下载前端并安装前端环境并执行编译的插件,简单的说就是在编译的时候下载一个node.js安装包,安装完成后再编译。
    以下是配置:

    <plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>1.6</version>
        <configuration>
            <workingDirectory>${project.basedir}/../market-win-man-vue</workingDirectory>
        </configuration>
        <executions>
            <execution>
                <phase>generate-resources</phase>
                <id>install node and npm</id>
                <goals>
                    <goal>install-node-and-npm</goal>
                </goals>
                <configuration>
                    <nodeVersion>v8.9.3</nodeVersion>
                    <npmVersion>5.8.0</npmVersion>
                    <nodeDownloadRoot>http://artifactory.jd.com/api/npm/npm_nodejs/</nodeDownloadRoot>
                    <npmDownloadRoot>http://artifactory.jd.com/npm.taobao-cache/npm/download/
                    </npmDownloadRoot>
                </configuration>
            </execution>
            <execution>
                <phase>generate-resources</phase>
                <id>npm clean</id>
                <goals>
                    <goal>npm</goal>
                </goals>
                <configuration>
                    <arguments>cache clear --force</arguments>
                </configuration>
            </execution>
            <execution>
                <phase>generate-resources</phase>
                <id>npm install</id>
                <goals>
                    <goal>npm</goal>
                </goals>
                <configuration>
                    <arguments>install --unsafe-perm --verbose
                        --registry=http://artifactory.jd.com/api/npm/npm
                    </arguments>
                </configuration>
            </execution>
            <execution>
                <phase>prepare-package</phase>
                <id>npm build</id>
                <goals>
                    <goal>npm</goal>
                </goals>
                <configuration>
                    <arguments>run build</arguments>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    注意由于会去node.org下载node的安装包,而公司当然是把node.org给墙了,所以需要指定一下node和npm的安装包下载路径。
    同时npm install需要指定–unsafe-perm参数,否则也会报一些权限错误。
    到此,基本完事。
    但是!
    还有一个隐藏的坑,就是项目不能用一些依赖node-gyp的包,比如node-sass,为什么呢,因为node-gyp会去官网下载node-headers,因为node被墙了,所以到这里就会报错,而且这东西还不能配置下载路径,所以在博主用的环境上编译前端项目不能用node-gyp
    具体错误如下

    > node-sass@3.9.0 install C:\workspace\CMOTStyles\node_modules\gulp-sass\node_modules\node-sass
    > node scripts/install.js
    
    Start downloading binary at https://github.com/sass/node-sass/releases/download/v3.9.0/win32-x64-48_binding.node
    Cannot download "https://github.com/sass/node-sass/releases/download/v3.9.0/win32-x64-48_binding.node":
    
    getaddrinfo ENOTFOUND github.com github.com:443
    
    Hint: If github.com is not accessible in your location
          try setting a proxy via HTTP_PROXY, e.g.
    
          export HTTP_PROXY=http://example.com:1234
    
    or configure npm proxy via
    
          npm config set proxy http://example.com:8080
    
    > node-sass@3.9.0 postinstall C:\workspace\CMOTStyles\node_modules\gulp-sass\node_modules\node-sass
    > node scripts/build.js
    
    Building: C:\apps\nodejs\node.exe C:\workspace\CMOTStyles\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
    gyp info it worked if it ends with ok
    gyp verb cli [ 'C:\\apps\\nodejs\\node.exe',
    gyp verb cli   'C:\\workspace\\CMOTStyles\\node_modules\\node-gyp\\bin\\node-gyp.js',
    gyp verb cli   'rebuild',
    gyp verb cli   '--verbose',
    gyp verb cli   '--libsass_ext=',
    gyp verb cli   '--libsass_cflags=',
    gyp verb cli   '--libsass_ldflags=',
    gyp verb cli   '--libsass_library=' ]
    gyp info using node-gyp@3.4.0
    gyp info using node@6.2.0 | win32 | x64
    gyp verb command rebuild []
    gyp verb command clean []
    gyp verb clean removing "build" directory
    gyp verb command configure []
    gyp verb check python checking for Python executable "python2" in the PATH
    gyp verb `which` failed Error: not found: python2
    gyp verb `which` failed     at getNotFoundError (C:\workspace\CMOTStyles\node_modules\which\which.js:14:12)
    gyp verb `which` failed     at F (C:\workspace\CMOTStyles\node_modules\which\which.js:69:19)
    gyp verb `which` failed     at E (C:\workspace\CMOTStyles\node_modules\which\which.js:81:29)
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\which\which.js:90:16
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\index.js:44:5
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\windows.js:29:5
    gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:117:15)
    gyp verb `which` failed  python2 { Error: not found: python2
    gyp verb `which` failed     at getNotFoundError (C:\workspace\CMOTStyles\node_modules\which\which.js:14:12)
    gyp verb `which` failed     at F (C:\workspace\CMOTStyles\node_modules\which\which.js:69:19)
    gyp verb `which` failed     at E (C:\workspace\CMOTStyles\node_modules\which\which.js:81:29)
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\which\which.js:90:16
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\index.js:44:5
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\windows.js:29:5
    gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:117:15) code: 'ENOENT' }
    gyp verb check python checking for Python executable "python" in the PATH
    gyp verb `which` failed Error: not found: python
    gyp verb `which` failed     at getNotFoundError (C:\workspace\CMOTStyles\node_modules\which\which.js:14:12)
    gyp verb `which` failed     at F (C:\workspace\CMOTStyles\node_modules\which\which.js:69:19)
    gyp verb `which` failed     at E (C:\workspace\CMOTStyles\node_modules\which\which.js:81:29)
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\which\which.js:90:16
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\index.js:44:5
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\windows.js:29:5
    gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:117:15)
    gyp verb `which` failed  python { Error: not found: python
    gyp verb `which` failed     at getNotFoundError (C:\workspace\CMOTStyles\node_modules\which\which.js:14:12)
    gyp verb `which` failed     at F (C:\workspace\CMOTStyles\node_modules\which\which.js:69:19)
    gyp verb `which` failed     at E (C:\workspace\CMOTStyles\node_modules\which\which.js:81:29)
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\which\which.js:90:16
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\index.js:44:5
    gyp verb `which` failed     at C:\workspace\CMOTStyles\node_modules\isexe\windows.js:29:5
    gyp verb `which` failed     at FSReqWrap.oncomplete (fs.js:117:15) code: 'ENOENT' }
    gyp verb could not find "python". checking python launcher
    gyp verb check python launcher python executable found: "C:\\Python27\\python.exe"
    gyp verb check python version `C:\Python27\python.exe -c "import platform; print(platform.python_version());"` returned: "2.7.10\r\n"
    gyp verb get node dir no --target version specified, falling back to host node version: 6.2.0
    gyp verb command install [ '6.2.0' ]
    gyp verb install input version string "6.2.0"
    gyp verb install installing version: 6.2.0
    gyp verb install --ensure was passed, so won't reinstall if already installed
    gyp verb install version not already installed, continuing with install 6.2.0
    gyp verb ensuring nodedir is created C:\Users\NBKA0O5\.node-gyp\6.2.0
    gyp verb created nodedir C:\Users\NBKA0O5\.node-gyp\6.2.0
    gyp http GET https://nodejs.org/download/release/v6.2.0/node-v6.2.0-headers.tar.gz
    gyp WARN install got an error, rolling back install
    gyp verb command remove [ '6.2.0' ]
    gyp verb remove using node-gyp dir: C:\Users\NBKA0O5\.node-gyp
    gyp verb remove removing target version: 6.2.0
    gyp verb remove removing development files for version: 6.2.0
    gyp ERR! configure error
    gyp ERR! stack Error: This is most likely not a problem with node-gyp or the package itself and
    gyp ERR! stack is related to network connectivity. In most cases you are behind a proxy or have bad
    gyp ERR! stack network settings.
    gyp ERR! stack     at Request.<anonymous> (C:\workspace\CMOTStyles\node_modules\node-gyp\lib\install.js:193:21)
    gyp ERR! stack     at emitOne (events.js:96:13)
    gyp ERR! stack     at Request.emit (events.js:188:7)
    gyp ERR! stack     at Request.onRequestError (C:\workspace\CMOTStyles\node_modules\request\request.js:813:8)
    gyp ERR! stack     at emitOne (events.js:96:13)
    gyp ERR! stack     at ClientRequest.emit (events.js:188:7)
    gyp ERR! stack     at TLSSocket.socketErrorListener (_http_client.js:306:9)
    gyp ERR! stack     at emitOne (events.js:96:13)
    gyp ERR! stack     at TLSSocket.emit (events.js:188:7)
    gyp ERR! stack     at connectErrorNT (net.js:1015:8)
    gyp ERR! System Windows_NT 6.1.7601
    gyp ERR! command "C:\\apps\\nodejs\\node.exe" "C:\\workspace\\CMOTStyles\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
    gyp ERR! cwd C:\workspace\CMOTStyles\node_modules\gulp-sass\node_modules\node-sass
    gyp ERR! node -v v6.2.0
    gyp ERR! node-gyp -v v3.4.0
    gyp ERR! not ok
    Build failed
    npm WARN enoent ENOENT: no such file or directory, open 'C:\workspace\CMOTStyles\node_modules\node-sass\package.json'
    npm WARN gulp-jshint@2.0.1 requires a peer of jshint@2.x but none was installed.
    npm WARN gmot_styles@0.0.1 license should be a valid SPDX license expression
    npm ERR! Windows_NT 6.1.7601
    npm ERR! argv "C:\\apps\\nodejs\\node.exe" "C:\\Users\\NBKA0O5\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install" "--save-dev" "gulp-sass"
    npm ERR! node v6.2.0
    npm ERR! npm  v3.10.6
    npm ERR! code ELIFECYCLE
    
    npm ERR! node-sass@3.9.0 postinstall: `node scripts/build.js`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the node-sass@3.9.0 postinstall script 'node scripts/build.js'.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the node-sass package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     node scripts/build.js
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR!     npm bugs node-sass
    npm ERR! Or if that isn't available, you can get their info via:
    npm ERR!     npm owner ls node-sass
    npm ERR! There is likely additional logging output above.
    
    npm ERR! Please include the following file with any support request:
    npm ERR!     C:\workspace\CMOTStyles\npm-debug.log
    
    展开全文
  • Mongodb机多实例部署

    千次阅读 2014-12-31 15:55:32
    所谓机多实例是指在一台服务器上部署多个mongod实例,本部署教程在2.4、2.6和2.8版本下均可使用,本博主均已测试通过。需要额外注意的是2点: 1、需要同步服务器时间 2、使用numactl启动mongod、mongos。 ...
  • 蓝绿部署、 滚动部署、 灰度部署、 金丝雀部署、 功能开关发布、 影子测试
  • 一个tomcat部署多个项目

    万次阅读 热门讨论 2018-10-17 13:50:36
    在开发项目中,有时候我们需要在一个tomcat中部署多个项目,小编之前也是遇到了这样的情况,碰过不少的壁,故整理总结如下,以供大家参考。(以Linux为例,其他系统同样适用)   一、首先将需要部署的项目打成...
  • 一个Tomcat部署多个项目

    万次阅读 多人点赞 2017-07-18 11:28:30
    一个Tomcat 一个端口 部署多个项目第一步:把待发布的多个项目.war文件放入tomcat的webapps文件下下 第二步:修改 $TOMCAT_HOME\conf 下的server.xml文件 在server.xml文件中新增节点,一个节点代表一个...
  • 一个Tomcat 部署多个项目

    千次阅读 2018-04-20 19:17:04
    一个Tomcat 部署多个项目 (1)一个Tomcat 一个端口 部署多个项目 直接把多个项目的war包放在tomcat下webapps文件夹下 端口号无修改,默认http://localhost:8080访问 第二步:修改 $TOMCAT_HOME\...
  • 静态部署和动态部署

    千次阅读 2018-10-29 10:28:54
    静态部署     在jetty安装目录下存在一个名为webapps的目录,你可以存放web应用程序或者war文件.Jetty服务启动时会扫描webapps目录下面的文件,如果识别为web应用程序,那么就启动它。上下文路径就是文件夹的...
  • 上线对应着部署,或者重新部署部署对应着修改;修改则意味着风险。 目前有很多用于部署的技术,有的简单,有的复杂;有的得停机,有的不需要停机即可完成部署。本文的目的就是将目前常用的布署方案做一个总结。 ...
  • Maxwell_kafka_bireme同步数据部署方案

    千次阅读 2018-05-02 10:49:24
    https://blog.csdn.net/kiddyt05/article/details/79948772本文转自... 1Maxwel部署... 2bireme部署... 2注意事项... 3 Kafka部署[plain] view plain copyapt-get update wget http://mirrors.tuna.ts...
  • 部署ELK

    千次阅读 2021-01-08 15:03:01
    Elasticsearch 部署手册 第一章:部署前准备工作 本文档适用于Elaticsearch集群的安装和部署。 1.1 产品的构成 本产品包含安装包、相关管理脚本和相关文档,并可根据不同需求,提供不同版本Elasticsearch的集群 ...
  • Linux-一个Tomcat端口部署多项目

    万次阅读 2018-05-17 15:16:27
    通常情况下多个项目会部署在多个tomcat或者多个端口上,但是有时候资源受限或者有要求需要将多个项目部署一个tomcat上 其实方法很简单,只需要修改一下配置就能将多个项目部署在同一端口上,用不同项目名即可...
  • 部署方案

    千次阅读 2019-02-22 10:26:43
    上线对应着部署或者重新部署部署对应着修改,修改则意味着风险。 目前有很多用于部署的技术,有的简单,有的复杂,有的得停机,有的不需要停机即可完成部署。本文将对目前常用的部署方案做一个简单的总结。 蓝绿...
  • nginx安装及部署

    万次阅读 多人点赞 2019-04-11 15:52:47
    下载 官方网站:... Windows下安装 ...下载后解压(切记不能含有中文路径!...),文件结构如图(我解压的路径就有中文,记得拷贝放置于英文目录下即可!...2) 命令行进入该文件夹,执行start ngin...
  • Nginx一个端口部署多个vue项目

    千次阅读 2020-08-03 11:42:10
    Nginx一个端口部署多个vue项目,亲测有效
  • nginx域名下部署多个vue项目

    千次阅读 2019-07-16 15:16:53
    想要在一个域名下部署多个前端项目,通过不同url来区分调用相应前端项目。 比如:部署项目a,项目b。想要效果如下。 浏览器输入:http://localhost:8082/a/,展示项目a。 浏览器输入:http://localhost:8082/b/...
  • 简介ansible-playbook实战之批量安装mysql介绍了如何批量安装mysql,本篇博文用于按照自定义的参数批量部署mysql主从同步。ansible-playbook配置思路: ansible配合使用mysql_user、mysql_db、mysql_replication在...
  • 联想 云部署首次部署流程-视频,安装云教室必看。
  • 一个Tomcat部署多个项目,并实现端口访问,本地部署步骤如下(小白,轻喷) 1.将war包复制到webapps目录下,如下 注意:复制前先关掉Tomcat服务 2.更改web.xml下的webAppRootKey配置 webAppRootKey的值和...
  • 私有部署和全局部署

    千次阅读 2008-10-03 11:00:00
    非强命名程序集的私有部署(简单拷贝部署)和应用程序部署一个目录下的程序集称作私有部署程序集。私有部署给程序员带来方便。安装(复制),移动,卸载(删除)都很简单。简单管理控制(配置)可在应用程序目录...
  • 主备 Harbor 部署(harbor同步)

    千次阅读 2019-07-11 15:44:51
    主备 Harbor 部署(harbor同步) 前提 两台或以上harbor服务器,其中一台为主服务器,其他为备份服务器 1,仓管管理中,新建目标 [外链图片转存失败(img-rBXvvYkr-1562830960854)(images/1562656559566.png)] 2,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 541,649
精华内容 216,659
关键字:

同部署