gpt4 book ai didi

php - (php/mysql)部署到共享主机的最佳实践?

转载 作者:可可西里 更新时间:2023-11-01 13:42:21 25 4
gpt4 key购买 nike

我曾在一家Web开发公司工作,那里有我们的本地计算机,登台服务器和许多生产服务器。我们在perl中处理Mac,并使用svn提交到阶段,并使用perl脚本加载到生产服务器。现在,我正在从事自己的项目,并希望在使用共享Web托管而不是在基于Unix的环境中工作时(使用Perl/bash脚本/cron作业可以做的所有魔术工作)找到Web开发的良好实践。

因此,给我的问题是我的条件,即:

  • 我正在使用来自外部提供商(具有ssh访问权限)的单个标准共享Web托管
  • 我正在与至少一个其他人一起工作,并打算将SVN用于源代码控制
  • 我正在Windows下开发php/mysql(但可以使用linux)

  • 您建议使用什么设置来测试,部署,迁移代码/数据?我在本地计算机上安装了xampp服务器,但不确定使用哪种方法在Windows下迁移数据等。

    最佳答案

    我有一些关于共享主机的PHP个人项目;这是我的一种想法(最活跃的一种,至少需要半自动同步方式),这是我的一些想法:

    关于我的设置的几句话:

  • 前一段时间,我在SVN上安装了所有工具;现在,我正在使用bazaar;但是这个想法是完全一样的(除了集市,我有本地的历史等等)
  • 我可以通过ssh访问生产服务器,就像
  • 一样
  • 我专门在Linux上工作(因此,我在Windows上所做的可能不那么容易)

  • 现在,我的工作方式:
  • 生产服务器上的所有内容(源代码,图像等)都将提交给SVN/bazarr/无论
  • 我在本地工作,使用Apache/PHP/MySQL(我使用偶尔会在本地导入的生产数据库转储)
  • 我是该项目上唯一的一名工作人员;对于一个由2/3的开发人员组成的小型团队来说可能是可以的,但不能超过这个数目。

  • 我之前做过的事情:
  • 我有一些PHP脚本检查了SVN服务器是否在“上次修订推送到生产环境”和HEAD之间进行了修改
  • 我猜这个自制的PHP脚本看起来像您当前使用的Perl脚本^^
  • 该脚本构建了一个目录/文件列表,以上传到生产
  • 并通过FTP访问
  • 上载了这些文件
  • 这不是很令人满意(我想脚本中有错误;我从来没有花时间来纠正这些错误);并迫使我记住我上次投入生产的时间的修订号(好吧,它是由脚本自动存储在文件中的,因此不是那么难^^)

  • 我现在应该做什么 :
  • 切换到集市时,我不想重写该脚本,但无论如何它都不能很好地工作
  • 我完全删除了脚本
  • 由于我具有ssh对生产服务器的访问权限,因此当我本地拥有的稳定或可用于生产时,可以使用rsync从开发计算机同步到生产服务器。

  • 关于这种做事方式的几点注意事项:
  • 我没有暂存服务器:我的本地设置与生产环境中的
  • 足够接近
  • 对于具有一个或两个开发人员的简单项目,没有暂存服务器是可以的。
  • 如果我有一个登台服务器,我可能会选择:

    当您要上演
  • 时,
  • 对其进行“svn更新”
  • 正常时,从登台服务器启动rsync命令(它将在最新的“stable”修订版中运行,因此可以将其推送到生产环境中)
  • 对于一个更大的项目,更多的开发人员,我可能不会采用这种设置。但是对于个人项目(不是太大),我觉得还可以。

  • 这里唯一可能是“面向Linux”的“特殊”是使用rsync;快速搜索似乎表明可以在Windows上安装rsync可执行文件: http://www.itefix.no/i2/node/10650

    不过,我从未尝试过。

    附带说明一下,这是我的rsync命令的样子:
    rsync --checksum \
    --ignore-times \
    --human-readable \
    --progress \
    --itemize-changes \
    --archive \
    --recursive \
    --update \
    --verbose \
    --executability \
    --delay-updates \
    --compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
    --exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
    /LOCAL_PATH/ \
    USER@HOST:/REMOTE_PATH/

    我正在使用私钥/公钥机制,所以rsync不会要求输入密码,顺便说一句。

    而且,当然,我通常首先在“空运行”模式下使用相同的命令,以查看要同步的内容,并带有“ --dry-run”选项

    而且 ignore-rsync.txt包含我不想推送到生产环境的文件列表:
    .svn
    cache/cbfeed/*
    cache/cbtpl/*
    cache/dcstaticcache/*
    cache/delicious.cache.html
    cache/versions/*

    在这里,我只是防止将高速缓存目录推送到生产中-似乎不发送这些目录是合乎逻辑的,因为生产数据与开发数据不同。

    (我只是注意到该文件中仍然存在“ .svn” ...我可以删除它,因为我不再对该项目使用SVN ^^)

    希望这个对你有帮助...

    关于php - (php/mysql)部署到共享主机的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281683/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com