草庐IT

git - 在我自己的服务器上部署 Meteor,但在版本控制 repo 协议(protocol)中?和 MongoHQ

coder 2023-11-06 原文

首先让我说我完全糊涂了。既然那已经不在了,这就是我所做的:

我有两个远程服务器 (Ubuntu)(开发和生产)和我的本地机器。

在本地机器上:

  1. 我创建了一个基本的 meteor 应用程序 - 你好,世界。
  2. 启动了一个 git 仓库
  3. 创建了一个开发分支
  4. 推送到 beanstalkapp(如 github),我在其中创建了一个自动部署,只要开发分支更新。

在开发机器上 - 远程 dev.mysite.com

  1. 从前面提到的步骤中收到的文件
  2. 我可以通过运行 $ meteor 在其中创建 MongoDB 实例并开始监听 3000 来像在我的本地主机计算机上一样对待该应用程序

好的,让我就此打住并解释我理想的工作流程,如果有更好的方法,我很乐意改变它。我需要我的开发站点在线,但我不希望它托管在 meteor.com 上

  1. 我不明白我读到的关于必须“部署”我的应用程序的内容。我想这就是最小化一切的原因?
  2. 我如何从 git 工作流中获益,自动将​​更改部署到我选择的服务器,而不必每次都进行此部署?
  3. 我刚刚注册了 MongoHQ 并且有一个数据库设置,我想使用它而不是 Meteor 默认创建本地实例。我可以将其更改为通过我的本地计算机指向 MongoHQ 远程数据库,将更改推送到存储库并将它们部署到我的开发站点吗?我必须在开发机器上执行此操作吗?
  4. 我需要做什么才能让它在端口 80 上监听?还是它会自动监听任何打开的端口?

我希望我的问题能让您了解我的困境,我只是不了解工作流程并且文档令人困惑。我只想能够在我的本地计算机上处​​理我的网站/应用程序,提交并推送我的更改,这些更改会自动为我部署到开发服务器......但是这个部署协议(protocol)让我失望,数据库正在抛出我下车。

是否有更好的方法来创建从本地到开发再到生产的快速高效工作流?我没有在上面提到生产,因为我正计划使用相同的自动部署。我会将我的 dev 分支与 master 和 push master merge ,这将自动部署到生产服务器。我有一个单独的生产数据库,所以这也让我陷入困境......如果我正在 merge ,我正在交叉数据库配置,或者这是一次严格在服务器上完成但我没有需要担心吗?

啊。请帮忙!谢谢。

最佳答案

除了发布一些配置服务器的长篇 Gist 外,我可以引导您朝着正确的方向前进:

1 & 2 & 3. 该模式是在每台机器上设置一个post-receive 钩子(Hook)。 钩子(Hook)应该:

  • 将 repo 克隆到 tmp 目录
  • 调用 meteor bundle(生成一个 .tar.gz 文件)
  • 停止正在运行的 meteor 应用程序
  • 将包解压缩到已知的应用程序目录
  • 开始你的 meteor 应用

你可以在 init.d 中设置一个脚本,它使用 forever 来操作 meteor ,例如。 /etc/init.d/meteor 开始|停止

您还可以添加所需的配置变量 - 例如 MONGO_URL

开始 meteor 的例子:

      echo "$(date +'%Y-%m-%d %T,000') INFO $SERVICE_NAME started" >> $LOG_DIR/forever.log
      export MONGO_URL=''
      export PORT=3000
      export ROOT_URL=myserver.myapp.com
      export METEOR_SETTINGS="\`cat /path/to/production/settings.json\`"
      export MAIL_URL=mail.myapp.com

      sudo -u meteor -H -E forever -l $LOG_DIR/forever.log -o $LOG_DIR/out.log -e $LOG_DIR/err.log --minUptime 30000 --spinSleepTime 5000 -a -s start $WWW_APP_DIR/main.js
      ;;

4。除非你以 root 身份运行 meteor,否则端口 80 不走运——你最好让 nginx 位于 Meteor 前面并提供静态资源——所以获取 nginx 配置,例如。

server {                                                                                                                     
  listen 3000;                                                                                                               

  server_name localhost;                                                                                                     

  # this should include any files / directories that belong to /public
  location ~ "^/(resources/|robots.txt|humans.txt|favicon.ico)" {
    root /path/to/bundle/programs/client/app/;
    access_log off;
    expires max;
  }

  # this is any assets that belong in packages
  location ~ "^/packages" {
    root /path/to/bundle/programs/client/;
    access_log off;
    expires max;
  }

  # this is for the main css & js
  location ~* "^/[a-z0-9]{40}\.(css|js)$" {
    root /path/to/bundle/programs/client;
    access_log off;
    expires max;
  }

  # this is for any sockets
  location /sockjs/ {
    proxy_pass http://meteor;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
  }

  location / {
    proxy_pass http://meteor;
    # dont know if this is missing some stuff
  }
}

关于git - 在我自己的服务器上部署 Meteor,但在版本控制 repo 协议(protocol)中?和 MongoHQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21982444/

有关git - 在我自己的服务器上部署 Meteor,但在版本控制 repo 协议(protocol)中?和 MongoHQ的更多相关文章

  1. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  2. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  3. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  4. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  5. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  6. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby - Rails 开发服务器、PDFKit 和多线程 - 2

    我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:

  9. ruby - Dropbox 类似 git 的服务——没有 rsync 和 inotify - 2

    关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec

  10. ruby - 混帐 & ruby : How can I unset the GIT_DIR variable from inside a ruby script? - 2

    我编写了一个非常简单的“部署”脚本,作为我的裸git存储库中的post-updateHook运行。变量如下livedomain=~/mydomain.comstagingdomain=~/stage.mydomain.comgitrepolocation=~/git.mydomain.com/thisrepo.git(bare)core=~/git.mydomain.com/thisrepo.gitcore==addedremoteintoeachlive&stagegitslive和stage都初始化了gitrepos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为co

随机推荐