设置开发/生产PHP / MYSQL服务器

时间:2016-03-28 20:17:50

标签: php mysql automation server maintenance

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

2 个答案:

答案 0 :(得分:3)

这是一个很好的问题,很多早期的开发人员都面临着这个问题。我们在StrollUp使用tomcat和Elastic beanstalk并在生产机器上进行部署。因此,我们很容易将war文件从我们的开发环境上传到prod。您也可以尝试Elastic beanstalk。像Laravel这样的一些php框架提供了这些功能RoR。但是使用您自己的php代码和单实例prod服务器,您可以遵循以下准则:

  1. 将代码推送到Prod服务器

    1. 一旦测试了您的开发代码,请将/ var / www / html / YOUR_PROJECT的整个目录(压缩即YOUR_PROJECT.gz或YOUR_PROJECT.phar)上传到您的产品服务器(不要逐个上传) ,有些文件上传成功,有些文件失败了)
    2. 在prod服务器上解压缩压缩的上传文件
  2. 转移数据库更改

    1. Db更改可能包含DDL和DML。在prod上传输它们的最佳方法(据我所知)是保存你在dev环境中运行的sqls 顺序,然后在prod服务器上解压缩压缩项目之前运行它们。
    2. 另一种方式(不建议,但它适用于我)是将整个dev数据库(显然不是用户或日志表)转储到prod数据库。
  3. 转移Crons

    1. 我只是将所有的cron从dev复制到prod。你可以用bash脚本来完成它。

      crontab -r #remove all current cron jobs
         crontab cron.txt#将所有cronjobs列在cron.txt中

  4. 关于上述步骤的最佳部分:您可以将所有上述步骤放在bash脚本中并在一行中执行。这就像你自己的软件,只需点击一下按钮;) 我做了一次点击"我自己的脚本,但它们特定于tomcat和Elastic Beanstalk。您可以查看它可能会为您提供有关如何继续的一些建议:AWS Deploy

    最重要的:在prod服务器上运行sql查询之前,先对两个数据库进行数据库备份。使用VCS(git,bitbucket是一个不错的选择)来保证所有更改的安全。

答案 1 :(得分:0)

我将研究使用源代码控制的持续集成或持续部署解决方案。