我们在GoDaddy有两个“Linux Deluxe”服务器。
我习惯使用两台相同的服务器进行开发和生产,但是我从未设置或管理它们,所以我想知道如何去做。
如何在服务器之间移动文件?我可以使用哪些工具来自动执行此过程?
答案 0 :(得分:3)
如前所述,我们需要更多地了解您的系统,以便给出一个好的答案。
但我要指出,在大多数环境中,将生产计算机设置为git
主机并使用git push
来管理来自开发环境的同步是值得的。 (如果你曾经使用过Heroku,这似乎很熟悉。)
原因:
git
使用post post hook更新生产机器。在生产服务器上的登录主页中设置裸存储库。
mkdir site.git
cd site.git
git init --bare
设置站点根目录,例如:
mkdir /var/www/www.mysite.com
然后创建包含以下内容的n shell脚本hooks/post-receive
(不要忘记chomod +x
):
#!/bin/sh
GIT_WORK_TREE=/var/www/www.mysite.com git checkout --force
现在将site.git
添加为开发计算机存储库的远程。推送到该目标将更新生产机器。
<强> NB 强>
我并不主张git是一个完整的解决方案。正如@Will I Am在评论中所说,您需要根据存储库的存储位置来考虑敏感数据。但即便如此,如果设置正确的方式e.g. as explained here,git
也可能是一个有用的工具。敏感数据的一般想法是使用git
和单独的repo或子模块作为安全FTP的智能形式。当然,如果敏感数据的数量和/或复杂性很小,那么简单的副本或远程shell脚本也可以。
答案 1 :(得分:1)
移动文件的方法:
FTP:适用于Windows和Linux,但非常不安全 - 你永远不应该使用它。
SFTP:非常安全,但您需要对Linux服务器进行shell(SSH)访问。
SCP的简短语法如下,more details here。此命令在本地开发服务器中运行,它将文件复制到生产服务器。
scp <your-local-files> <prod-username>@<prod-host>:<prod-port>
还有像WinSCP和Putty / SuperPutty这样的GUI,用于从Windows到Linux执行SCP。
RSync:SCP上的包装器,可用于有效复制大量文件,因为它可以执行很多操作,例如仅复制已更改的文件,压缩等。适用于Linux,但您可能找不到它对于Windows。
移动数据的方法:我假设你在谈论数据库数据?在这种情况下,它取决于您的数据库。一般说明是:
请参阅您的数据库文档,了解如何将所有数据导入文件或导出/快照/备份(术语不同但所有意思相同)。 e.g。
使用上述文件复制方法复制生成的转储文件。
再次参阅有关如何导入此文件的数据库文档。
自动执行此过程的工具:我假设您正在询问如何自动复制这些文件。以下是选项:
SCP和RSync是命令行工具,因此您可以在Linux中使用Cron(作业调度程序)在每天的某个给定时间自动复制文件。如果您使用的是Windows,则需要查找其他一些计划工具。
如果您要自动化,则需要一些方法来保存密码。但建议您使用无密码的基于密钥的身份验证,这比在脚本中某处硬编码密码更安全。您可以在SSH Public-key authentication找到很多教程。
最后,有各种工具和包装器可以简化(或有时复杂化)这个过程。但是他们需要安装/设置其他软件包等。一般来说,它们属于软件部署领域,但我不会进一步解释这一点,因为它可以得到非常的见解。在进入更高级别的抽象之前,首先要更好地理解基本工具。
答案 2 :(得分:0)
确实,你没有给我们足够的信息,但话虽如此,我会采用像@Gene这样的方法,并做一些改变:
这样做有一些好处:
当然这只是一种方法,因为你没有提供很多关于你的应用程序是什么以及如何使用源代码控制或正确设置应用程序配置需要的信息,但我认为这应该适用于大多数基本设置。
祝你好运!答案 3 :(得分:0)
我会使用这些工具自动执行文件复制: