我的 Ubuntu 电脑上有整套网站,用于测试和开发。我没有将它们托管在互联网上,只是在本地访问它们进行设计和调试。
每个都是基于 PHP 构建的,每个都使用 MySQL 数据库。大约有 12 个。
我想将它们转移到新的 Ubuntu 安装中。我以前做过这个,当我这样做时,我创建了每个配置文件/etc/apache2/sites-enabled
,我加载了每个 MySQL 数据库,我为每个数据库创建了一个用户……这很繁琐,而且很容易出现(我)人为错误。
我已经在一台计算机上设置了所有网站和所有配置。有没有办法可以批量获取所有数据库、文件、Apache 设置、配置和所有内容,并将其一次性移动到新服务器?
答案1
感谢 Askubuntu 和 Linux & Unix SE 的提示,我整理出了似乎是最有效的方法来完成我计划要做的事情。我希望这对其他人有帮助,如果有人发现可以简化和改进此过程的任何地方,请贡献力量。
在继续操作之前请注意,我使用的是 phpMyAdmin,因此我的所有 MySQL 操作都是在那里进行的。此外,这假设目标计算机是全新安装的,并且新计算机上不需要保存任何设置或文件。这些操作将覆盖目标计算机上的内容。最后,这是我转移系统时所做的,因此您的具体情况可能会有所不同。提供这些信息只是为了让处于类似情况的人有一个不那么空白的开始页面。我从 Ubuntu 13.04 转移到 Linux Mint 14。
在旧电脑上:
创建一个目录,在其中存储您要传输的所有内容。
复制保存所有 HTML、CSS 以及构成网站的其他文件的目录。我将我的文件保存在我的/home
文件夹中的目录中,然后/var/www
使用名为 的符号链接目录链接到该目录Websites
。
复制整个/etc/apache2 directory
目录。
复制文件/etc/hosts
。
sql
使用 phpMyAdmin,将您已创建并想要移动到新服务器的所有数据库导出到文件中。在 phpMyAdmin 中,export
在主页区域的选项卡下,您需要使用custom
选项来选择要导出的数据库。确保不是mysql
复制名为、performance_schema
和 的数据库information_schema
。您不需要它们,而且无论如何您都无法在新服务器上覆盖它们。因此,如果您包含它们,在新计算机上安装时只会带来麻烦。
进入mysql
数据库并将表复制user
到sql
文件中。
在新计算机上:
在 Synaptic 中安装phpMyAdmin
。这将通过引入所有相关依赖项来安装 LAMP 服务器所需的所有文件。您可能需要一些其他组件。就我而言,我还需要javascript-common
、 和xdebug
。
如上所述,从存储旧计算机的所有文件的目录中运行以下命令将apache2
目录移动到 /etc/folder。
sudo cp -R apache2 /etc
打开旧hosts
文件,只复制第一行,即 之后的所有内容127.0.01
。确保不要复制以 开头的行127.0.1.1
。/etc/hosts
在新计算机上打开并粘贴第一行。再次注意仅有的复制后面的内容127.0.0.1
。保留文件的其余部分。您需要 root 权限才能编辑和保存/etc/hosts
文件。
将您的 HTML 文件和网站数据复制到您通常使用的位置。就我而言,我将它们保存在/home
目录中。在 中创建指向该目录的符号链接/var/www
,如果这样做,请确保已在和中FollowSymLinks
设置为选项(通常它们是相同的文件,相互链接)。此外,您需要确保在 中符号链接的文件夹的权限可供 Web 服务器访问,即具有正确的权限。这是一个很大的话题,我注意到人们对什么才是有意义的意见不一。涉及(至少)两个用户,您用来登录系统的用户帐户和 ,它们管理 Web 服务器的内容。您可以更改您用来访问服务器的用户,您可以将您的登录用户纳入正确的组以访问 Web 服务器...也许...这部分对我来说不清楚。但是,对我来说,在 目录中运行/etc/apache2/sites-enabled/000-default
/etc/apache2/sites-available/default
/home
www-data
chmod +x
包含所有 HTML 文件的文件夹成功了。为了清楚起见,您必须从包含 HTML 文件的文件夹向上一级运行该命令。就我而言,我的 HTML 文件、目录和网站都在 中/home/dave/Dropbox/Websites
。所以我运行了chmod +x /home/dave/Dropbox/
,然后chmod +x -R /home/dave/Dropbox/Websites
。就像我说的,这部分对我来说很模糊,因为权限总是让我困惑,但这就是有效的方法。
就我而言,我将一些 Apache 日志文件存储在一个名为Apache_Logs
“我的/home
目录”的自定义文件夹中。重新创建该文件,如果您有任何其他自定义功能,则需要执行相同操作。
使用以下命令重新启动 Apache:
sudo service apache2 restart
现在 Apache 已完成,开始恢复数据库。
您创建的文件sql
包含所有数据库,可能很大,有几兆字节。sql
在 phpMyAdmin 中上传文件时,默认只允许上传最大 2MB 的文件。要更改此设置,请打开/etc/php5/apache2/php.ini
,找到它所显示的位置upload_max_filesize
,并将其更改为足以上传sql
文件的大小。这需要 root 权限,如果您认为这很重要,请在完成整个操作后将其改回。如果这样做,您必须再次重新启动 Apache 才能使新设置生效。
在 phpMyAdmin 的Import
选项卡下,通过上传文件导入所有数据库sql
。
仍然在 phpMyAdmin 中,转到mysql
数据库,选择user
表,然后将drop
其导入。然后转到选项Import
卡,上传您从旧计算机保存的user
表sql
文件。此时,您将拥有旧机器上的所有用户以及所有数据库,但用户和数据库尚未连接,因此下一部分仍必须逐一完成。:(
在home
phpMyAdmin 区域中,进入Privileges
选项卡,您将在其中找到所有用户的列表。浏览您创建的每个用户,并对每个用户选择Edit Privileges
,然后在弹出的屏幕中,转到Database-specific privileges
,选择正确的数据库,然后在下一个屏幕中,您可以选择让该用户对您希望他们控制的数据库拥有正确的权限。就我而言,每个用户都可以完全控制他们管理的数据库,因此我使用了该check-all
功能并保存。
此时您需要重新启动 MySQL,以便用户权限的更改生效。
sudo service mysql restart
此时,您应该已经准备就绪。打开浏览器,像以前在旧机器上一样访问您的网站,然后就可以开始了!
我希望这对其他人有帮助。
答案2
这是一个非常简单的任务,你需要 4 样东西:
- 转储所有 MySQL 数据库(用于
mysqldump
此)和 - apache2 已安装软件包列表以及你使用的模块(dpkg -l 和 grep 是你的好帮手)以及
- 文件
/etc/apache2/sites-available
(因为这是实际的虚拟主机配置文件应该在的地方 - 那些在 sites-enabled 中的应该只是通常用创建的符号链接a2ensite
/etc/apache2
您已修改的其他文件。
如果每次想要移动它们时都手动执行此操作,那么是的,这很乏味,这是您应该通过编写一个简单的 shell 脚本来自动化执行此操作的原因之一,该脚本会为您处理所有这些问题。