当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《(php/mysql)部署到共享主机的最佳实践?》经验,为你挑选了1个好方法。

我曾在一家网络开发公司工作,在那里我们有本地机器,一台临时服务器和一些生产服务器.我们在perl中处理mac并使用svn提交stage,并将perl脚本加载到生产服务器.现在我正在开发自己的项目,并希望在使用共享Web托管时找到良好的Web开发实践,而不是在基于unix的环境中工作(我可以使用perl/bash脚本/ cron作业完成所有的魔术)

所以我的问题是我的条件,它是:

我正在使用来自外部提供商的单一标准共享虚拟主机(使用ssh访问)

我正在与至少一个其他人合作,并打算使用SVN进行源代码管理

我在Windows下开发php/mysql(但是使用linux是可能的)

您建议对代码/数据的测试,部署和迁移进行哪些设置?我在本地计算机上安装了xampp服务器,但不确定哪些方法用于在Windows下迁移数据等.



1> Pascal MARTI..:

我在共享托管上有一些PHP个人项目; 这里有几点想法,从我在其中一个上做的(最活跃的,需要一些至少半自动同步方式):

关于我的设置几句话:

前段时间,我在SVN上拥有一切; 现在,我正在使用集市 ; 但这个想法是完全一样的(除了有市集,我有本地历史和所有这些)

我有一个ssh访问生产服务器,就像你一样

我专门研究Linux (因此,我所做的事情可能并不像Windows一样容易)

现在,我的工作方式:

生产服务器上的所有东西(源代码,图像......)都被提交给SVN/bazarr /等等

我在本地工作,使用Apache/PHP/MySQL (我使用我偶尔在本地导入的生产数据库的转储)

我是唯一一个从事该项目的人; 对于一个由2/3开发人员组成的小团队来说,这可能是可以的,但不会更多.

我之前做过的事:

我有一些PHP脚本检查SVN服务器在"最后修订推送到生产"和HEAD之间的修改

我猜这个自制的PHP脚本看起来像你目前使用的Perl脚本^^

该脚本构建了一个要上载到生产环境的目录/文件列表

并通过FTP访问上传

这不是很令人满意(我想我的剧本中有错误;我从来没有花时间纠正这些错误) ; 并强迫我记住我上次投入生产的时间的修订号(好吧,它被脚本自动存储在一个文件中,所以不是那么难^^)

我现在应该做什么 :

当切换到集市时,我不想重写那个无论如何都不能很好地工作的脚本

我完全放弃了剧本

由于我有ssh访问生产服务器,我使用rsync从我的开发机器同步到生产服务器,当我在本地的东西被认为是稳定/生产就绪.

关于这种做事方式的几点注意事项:

我没有登台服务器:我的本地设置足够接近生产的设备

对于具有一个或两个开发人员的简单项目,没有登台服务器是可以的

如果我有一台临时服务器,我可能会选择:

当你想要登台时,对它进行"svn更新"

当它没问题时,从登台服务器启动rsync命令(这将是最新的"稳定"版本,因此可以推送到生产中)

随着更大的项目,更多的开发人员,我可能不会采用这种设置; 但我觉得这个(不是太大的)个人项目很不错.


这里唯一的"特殊",可能是"面向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用于该项目^^)


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

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有