2016-03-28 54 views
1

我正在托管服务器上开发我的Web应用程序。我使用自动下载/上传正在编辑的文件的IDE。我想建立第二个服务器(即development.domain.com),我将用它来处理更新。一旦我完成并测试了一个更新,如何将所有更改推送到发布服务器(数据库方案更改,文件更改/添加/删除,系统更改为cron等)?是否有任何软件可以通过一个按钮为我执行此操作,还是必须跟踪我所做的所有更改,然后复制这些文件并逐个更改生产服务器上的方案? 谢谢设置开发/生产PHP/MYSQL服务器

+1

git用于源代码跟踪,您的数据库更新应该由您正在编写的软件管理。 –

回答

0

我会看看使用源代码管理的持续集成或持续部署解决方案。

3

这是一个很好的问题,许多早期的开发者都面临着这个问题。我们在StrollUp上使用tomcat和Elastic beanstalk,并在生产机器上部署。所以我们很容易将war文件从我们的开发环境上传到prod。你也可以试试Elastic beanstalk。一些php框架如Laravel提供了这些功能比较RoR。但随着自己的PHP代码和单一实例PROD服务器,你可以遵循以下原则:

  1. 推代码为正式服务器

    1. 一旦你测试你的开发代码,上传整个目录/ var/www/html/YOUR_PROJECT(压缩即。YOUR_PROJECT.gz或YOUR_PROJECT.phar)到您的prod服务器(不要逐个上传,有可能某些文件上传成功,有些失败)
    2. 解压缩产品服务器上的压缩上传文件
  2. Transfering分贝改变

    1. Db的变化可能包含DDL和DML两者。在prod上传输它们的最佳方法是根据我的要求保存sqld ,顺序为,您可以在开发环境中运行它们,并在解压缩prod服务器上的压缩项目之前运行它们。
    2. 另一种方式(不建议,但它适用于我)是将整个dev数据库(显然不是用户或日志表)转储到您的prod数据库。
  3. 转移Crons

    1. 我刚才的所有的cron复制从开发到刺。你可以在bash脚本中完成。

      的crontab -r #remove目前所有的cron作业
      的crontab cron.txt#放在cron.txt列出的所有cronjobs

关于上面的最好的部分步骤:你可以把所有上述步骤都在bash脚本中并在一行中执行。这将像你自己的软件,只需点击一下按钮;) 我为自己制作了“一键式”脚本,但它们只针对tomcat和Elastic Beanstalk。你可以看看它可能给你如何进行的一些想法:AWS Deploy

最重要的:取两个数据库的数据库备份第一督促服务器上运行SQL查询之前。请使用VCS(git,bitbucket是一个不错的选择)来保证所有更改的安全。