任何人都知道如何实时进行智能数据库更新. 例如.我有一个具有出色数据库的网站.突然,我进行了一些代码更改,数据库结构和数据更改.是否有任何标准计划可以使用部署脚本或任何部署软软计划?实时而无需停止网站? 例如.在两个克隆数据库或这样的SMTH之间切换.经验丰富的人如何做? 网站用php编写,数据库为mysql. thanx! 解决方案 您是否看过这里的好文章使用 phing phing 和dbdeploy 其他解决方案 红色门MySQL比较具有14天功能性的试验.进行模式更改时,它可以保留数据.还有一个单独的MySQL数据比较工具. http://www.red-gate.com/products/sql-development/mysql-compare/
以下是关于 deployment 的编程技术问答
我是一个带有外壳脚本的新手,因此需要使用Shell脚本来解析PHP文件时需要一些想法. 我们是一个PHP项目,我正在改进我们的Shell脚本,用于将代码上传到生产服务器. 有一个php配置文件production.settings.php在上传过程中需要读取一些常数 - BASE_PATH(通往prod Server上项目root的路径) db_host,db_name等 问题 如何读取常数的值? 它们是这样定义的: define("BASE_PATH","/path/to/project/root"); 如何读取常数的第一个未注听值? 注意 - 可以在同一文件中多次定义常数(假设可能是错误的 - 这可能是错误的,或者可能会在行中注释实例) 到目前为止,我只能在我的shell脚本中使用grep来获取包含字符串define("BASE_PATH"的行数 - cd .. PROJECT_ROOT=$PWD result= grep -
假设我在本地开发并在Live Server上调试小东西. 在我的代码中拥有类似的东西是个好主意吗? : $is_local = (strpos($_SERVER['HTTP_HOST'], 'localhost') !== false); define ('DEBUG',$is_local); ,然后在设置内容时通过我的代码使用它? $mysql_settings = (DEBUG) ? array(/*localhost settings*/) : array(/*live settings*/); 这样,我可以在Live和localhost上使用相同的文件,因此我可以同步而不必担心犯错,例如实时服务器上的连接设置. 是好还是错? 解决方案 按照自己的方式完全没有错. 另一种策略是在您的开发(或其他非生产)系统上设置一些环境变量. 在Apache下,您可以粘贴这样的东西: SetEnv MYAPP_ENVIRONME
产品是在不断开发的情况下的CMS,并且新功能始终被推出.该产品托管在多个服务器上,其中一些我只有FTP凭据和访问DB,而对于其他我有完整的root访问权限.现在,一旦在测试后发布新功能,我就必须手动FTP文件并在所有服务器上运行SQL查询.这是非常耗时的,容易发生且效率低下的.我如何使其更健壮,傻瓜或自动化部分? CMS基于PHP,MySQL,JS,HTML和CSS.管理部门很常见.皮肤和一些自定义模块是为不同客户开发的,我们更新的唯一部分是管理员. 更新 对于管理代码,我们使用git,SQL不是此GIT结构的一部分,我将与产品经理/所有者进行交谈以使其在版本控制下. 解决方案 这是未包装代码的大问题之一. 个人,我有一个PHAR,执行后,将代码提取到特定文件夹并执行所需的查询. 其他解决方案 我已经在数十台服务器上运行网络部署,每月处理数亿个访问者. SQL变更管理始终将成为野兽.您唯一希望要么自己在家中滚动(我做了什么),要么使用 EMS DB
im无法查看如何使用Docker实现零下降的部署. 假设我有一个运行 mywebapp 的PHP容器,由同一服务器上的 nginx 容器提供.然后,我更改一些代码,因为Docker容器是不可变的,我必须在代码更改的情况下再次构建/部署 mywebapp 容器.在执行此操作的过程中 以前我会使用Ansible或类似来部署我的代码,然后将新版本目录符合到Web dir ... Zero-Downtime! ! 是否可以使用Docker和单个服务器应用程序实现零停机时间部署? 解决方案 您可以使用nginx upstreams'>使用nginx upstreams'> S: upstream containers { server 127.0.0.1:9990; # blue server 127.0.0.1:9991; # green } location ~ \.php$ { fastcgi_pass containers; ... }
i 已经部署了我的laravel应用程序中的 vps .它在Localhost上工作正常.我认为错误在我的路线或控制器中,因为路径仍在我的本地计算机目录中(请参阅错误消息行2),但我真的看不到代码中的问题. 我尝试使用php artisan config:cache,php artisan cache:clear,php artisan route:cache,但它仍然不起作用.它仍然指我的本地机器目录. 这是index.blade.php 的目录 Root |-- portofolio |-- app |-- bootstrap |-- config |-- database |-- resources |-- assets |-- lang |-- views |-- index.blade.php |-- routes |-- storag
我以为我会把它扔到那里,看看我是否可以对此获得一些可靠的建议. 我有一个具有相当大的代码库的生产站点,并且刚刚在其上安装了git,与测试站点相同.而且我有一个本地盒子,基本上将是集成的重点.我们的团队将推到本地盒子,小侏儒将来到我们不同的服务器上,或者至少这是我最接近实施Git的方法. 我真的没有丝毫的线索从哪里开始.我有一个大,挑剔的旧代码库,我害怕在美好的一天中触摸. git是要成为大型清理过程的起点,我只是不知道如何开始. 我正在考虑根据我的生产docroot(带有适用的.gitignore的东西)创建一个裸露的.git repo,然后再克隆进行测试和开发环境,然后个人会克隆dev并开始工作,将然后以某种方式神奇地告诉git在进行裸仓库时更新Docroot. 我将在开发上安装Git-Flow(无法在我的生产服务器上使用),然后推入生产.由于它们只是一天结束时的分支,因此我可以逃脱不使用prod/test服务器上的git-flow. 这似乎很好,我只是不
我正在尝试按照以下步骤部署一个符号项目: ./composer.phar update php bin/console cache:clear 我还尝试安装手动教义驱动程序ArrayCache运行: ./composer.phar require doctrine/cache 结果始终相同,我最终出现以下错误: # ./composer.phar update --no-interaction [...] Script cache:clear returned with error code 255 !! !! In ContainerBuilder.php line 1089: !! !! Class Doctrine\Common\Cache\ArrayCache does not exist !! !! !! Script @auto-scripts was called via post-update-cmd 我是Symfony的新手,我无法
我们正在从事Symfony2项目.现在,它已经完成并准备部署.我们将整个项目文件上传到服务器(当然是通过FTP)和数据库.现在,当我们打开其任何页面时,我们只有一个空白页(空源代码).缓存很干净,日志没有显示任何新的.我们搜索了将Symfony2项目部署到托管的步骤,但我们没有找到一个很好的解释(即使这些是关于Symfony Not-version-2). 我们认为这可能是一个配置问题,但到目前为止还不知道. 任何帮助将不胜感激. 预先感谢. 编辑:空白页在Firefox中. Google Chrome在说些什么: 服务器错误该网站在检索时遇到错误 http://* .com/mammoky/web/app_dev.php/main.它可能会下降 维护或配置不正确.这里有一些建议: 稍后重新载入此网页. HTTP错误500(内部服务器错误): 服务器尝试时遇到了意外情况 满足请求. error_log正在显示: [24-MAR-2012 23:29:24] PHP
我想开始自动化更多的Web开发过程,因此我正在寻找构建系统.我主要在Mac OS X上编写PHP应用程序,并通过FTP部署Linux服务器.我的许多客户都有基本的托管提供商,因此通常不可用Shell对其服务器的访问,但是通常存在远程MySQL访问.这是我想使用的构建系统: 建造时: lint javascript文件 验证CSS文件 验证html文件 缩小和串联JS和CSS文件 验证PHP语法 设置调试/生产标志 部署时 SVN的结帐最新版本 运行构建过程 通过FTP上传到服务器 在远程DB上运行SQL脚本 我意识到这是自动化的很多工作,但我认为这是值得的.那么,沿着这条路的最佳方法是什么?是否有一个可以处理构建和部署的系统,还是我应该搜索单独的解决方案?您会推荐什么系统? 解决方案 您所要求的一切都可以用 phing是用PHP编写的部署框架,并以Apache Ant进行建模.它带有一系列现成的部署任务,包括数据库部署,远程文件传输和VCS连
我正在尝试部署Docker容器,尽管我尝试了多个选项,但它总是崩溃.在端口8080上的本地作品中. 现在,我正在使用php + apache. 我的文件夹的遗产看起来像这样: docker-compose.yml Dockerfile www .htaccess index.php 我的dockerfile是这个: FROM php:7.1-apache COPY www /var/www/html RUN a2enmod rewrite RUN a2enmod lbmethod_byrequests RUN service apache2 restart EXPOSE 80 CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 我的docker-composer.yml: version: '3' services: web: build: context: .
我想开始自动化更多的Web开发过程,因此我正在寻找构建系统.我主要在Mac OS X上编写PHP应用程序,并通过FTP部署Linux服务器.我的许多客户都有基本的托管提供商,因此通常不可用Shell对其服务器的访问,但是通常存在远程MySQL访问.这是我想使用的构建系统: 建造时: lint javascript文件 验证CSS文件 验证html文件 缩小和串联JS和CSS文件 验证PHP语法 设置调试/生产标志 部署时 SVN的结帐最新版本 运行构建过程 通过FTP上传到服务器 在远程DB上运行SQL脚本 我意识到这是自动化的很多工作,但我认为这是值得的.那么,沿着这条路的最佳方法是什么?是否有一个可以处理构建和部署的系统,还是我应该搜索单独的解决方案?您会推荐什么系统? 解决方案 您所要求的一切都可以用 phing是用PHP编写的部署框架,并以Apache Ant进行建模.它带有一系列现成的部署任务,包括数据库部署,远程文件传输和VCS连
我一直在开发基于云的(AWS EC2)PHP Web应用程序,并且在与多个服务器(所有这些都在AWS弹性负载均衡器下)一起工作时,我正在努力解决一个问题.在一台服务器上,当我上传最新文件时,它们会立即在整个应用程序中进行生产.但是,当使用多个服务器时,这不是事实 - 每次提交更改时,您都必须将文件上传到它们.如果您不经常更新任何内容,或者您只有一两个服务器,这可能会很好.但是,如果您在一周内多次更新系统,该系统在十个服务器上多次更新? 我正在寻找的是一种"提交"更改我们的开发服务器或测试服务器的方法,并立即将其"将"推向所有生产服务器.理想情况下,该更新一次仅应用于一台服务器(即使每台服务器只需一秒钟或两秒钟),因此ELB在文件更改时不会将流量发送到该服务器,以免破坏任何可能是可能的生产流量流到豆类. 这样做的最好方法是什么?我的想法之一是在开发服务器上使用SVN,但这并不能真正"推"服务器.我正在寻找一个仅需几秒钟即可提交更新的过程,然后开始将其应用于服务器.另外,对于您熟悉
我们正在运行一个PHP(Zend Framework)应用程序,该应用程序可为每个用户创建数据库(出于安全/备份/以及其他原因). 所有这些数据库都具有完全相同的结构,并且总是如此.当我们部署新功能时,我们需要使用新字段/表扩展所有数据库. 我已经阅读了有关使用DBDeploy的内容,但是我不确定它们一次支持多个数据库(而不是一个名称一个名称).数据库称为user1,user2,user3等. 是否有任何好的工具可以使我们更容易且痛苦地更加痛苦? 我们正在运行用于自动部署的PHING,并找到了指南 http://www.davedevelopment.co.uk/2008/04/04/14/how-to-to-simple-database-migrations-with-phing-phing-and-phing-and-phing-and-and-dbdeploy/不之所以有用,是因为它们不支持像我们这样的多个数据库. 另外,我们可以做到这一点的Windows或Ma
我对詹金斯很陌生,并且有某种理解,但需要进一步的指导. 我在Git Repo上有一个PHP应用程序,该应用程序使用Composer,具有资产,用户上传媒体文件,使用Memcache/Redis,有一些代理/工人,并且具有迁移文件. . 到目前为止,我知道我需要在詹金斯创建两个作业. 作业1 =构建 作业2 =部署 在Build作业中,我将Git Repo设置为源 1)我的第一个问题与文件如何/在哪里克隆有关.我知道有一个工作空间,每次都被克隆到那里,或者只拉新的东西. 2)作曲家更新接缝一次又一次地加载相同的东西,并且看起来它没有被多个构建缓存.我很想在这里听到意见,但是我期望在下一个构建中检查它会检查更改,并仅获得差异.做一个完整的作曲家更新需要几分钟. 在Deploy作业中,我很想设置一个采用最新稳定构建的过程,并将文件移至releases2之类的专用文件夹.然后运行一些准备脚本,最后,它将/htdocs文件夹Symlink更新为新的releases
我正在寻找有关如何为我们的项目设置梨通道的说明,以便我们可以使用梨安装程序部署它.我已经搜索了一段时间,找不到任何直接的信息.我跟随这个教程有一段时间,但是我有一段时间让这个工作要工作.有谁知道如何做到这一点?有一种简单的方法吗? 解决方案 看来您是少数想这样做的人之一.您链接到的那个教程似乎是最新的(!),但包裹仍然是 greg beaver ;您链接到的包装和博客文章的作者.他还写了一本关于梨的书2006年.)亚马逊写作提到了: 接下来,您将学习如何设置 您自己的梨通道用于分发 PHP应用程序,包括开源和 专有封闭源PHP 可以使用的申请 梨已经内置的技术 安装程序 . 其他解决方案 您遇到什么问题,遵循您链接到的教程? 您可以使用Pirum或Chiara Server设置自己的频道(其他解决方案 梨网站列出了许多频道服务器 SoftSoftWares(现在页面底部) ). 他们是: chiara_pear_server simplecha
我目前正在为慈善组织开发PHP申请,现在正在定义部署实践的阶段. 我们的应用程序同时使用Zend Framework和Doctrine.该应用程序将被推出到不同的服务器,每个服务器都有不同的配置文件.这些机器既是Windows又是Linux(但全部带有Apache和Php 5.2+). 该源可在颠覆存储库中可用,我们想在Linux服务器上构建和存储包裹. 最好是我们希望更新过程与在应用程序目录中运行更新命令一样容易,在该目录中,更新命令还更新数据库(带有学说脚本)并确保框架的依赖性.此更新命令必须是计算机上的命令(我们不能进入其中).最好选择下载新版本或提供已下载的TARBALL的新版本. (但是只有下载或仅tarball也可以) 带有安装和更新(新版本)的软件包也最好由一个命令构建. 我一直在阅读一些有关Phar's,Pear,Phing的信息,但我不知道最好的方法是什么.连续集成服务器并不是真正的必要条件,但是我考虑在构建版本后自动部署测试环境.
我如何最好地设置PHP(LAMP)开发环境,以便我拥有开发,分期和生产服务器.一个"单击"部署到任何一个,以及一单击回滚到任何修订版.回滚还应回滚数据库架构和数据,以使该源代码当前时如何. 现在,我使用shell脚本的一个应用程序完成了所有这些应用程序(DB回滚能力除外).我很想知道他人的环境是如何设置的,而且还要就布局而言有任何通用工具或最佳实践. 那么,您该怎么做?您使用哪些现有工具? 谢谢! 更新:只是为了澄清我的感兴趣. 我真的希望人们对环境的建立方式进行调整. 如果您运行了PHP项目,并且在版本控件中具有DB模式,您该怎么办?您使用什么工具?它们是内部还是我们都可以在网络上找到它们吗? 如果您运行了一个PHP项目,并且对COMM(和/或每晚)进行自动测试,则该怎么办?您使用哪种源版本控制系统?您是否使用SVN并在邮政后挂钩中运行测试? 如果您使用多个开发服务器,登台服务器和生产服务器运行PHP项目,则如何组织它们以及如何部署?
我试图使开发变得容易,并且在生产中具有高度优化的输出. 我要做的目标是: 快速制作生产页面!我希望 Google Page Speed 和 yslow 返回 best 得分.这意味着: 组合和压缩JS文件和CSS,将组放在HTML中的正确位置(页面底部或顶部)中.对于.js Google关闭似乎是最好的选择. .js和.css巧妙地缓存,但是请确保在更新.js或CSS组合时重新加载它们. 301文件未更改等. 缓存类型:我认为磁盘上的缓存很好.考虑APC和Memcache或Redis,如果它们显着提高速度. 能够在必要时指定和使用.js的懒惰,或者至少不阻止页面渲染. (可选)也压缩HTML. 使网站开发变得容易: 当您要包含.js或.css并仅在生产环境中压缩时,请在.php文件中使用简短命令 使用语法,例如 pack_js(['first.js','second.js''third.js'])和 pack_css(['first.less',',','