У меня есть целый набор веб-сайтов на моем компьютере с Ubuntu, которые я использую для тестирования и разработки. Я не размещаю их в Интернете, я просто получаю к ним доступ локально для проектирования и отладки.
Каждый из них построен на PHP, каждый использует базу данных MySQL. Их около двенадцати.
Я хочу перенести их в новую версию Ubuntu. Я делал это раньше, и когда я это сделал, я создал каждый файл конфигурации в /etc/apache2/sites-enabled
, я загружаю в каждую базу данных MySQL, я создаю пользователя для каждой базы данных ... Это утомительно и склонно к (моей) человеческой ошибке.
У меня уже есть все сайты и все конфигурации на одном компьютере. Разве нет способа, которым я могу купить все базы данных, файлы, настройки Apache, конфигурации и все остальное и перенести его на новый сервер за один раз?
Это довольно простая задача, для которой вам нужно 4 вещи:
mysqldump
) и /etc/apache2/sites-available
(так как именно там должны быть файлы конфигурации виртуального хоста - файлы в включенных сайтах должны быть только символическими ссылками обычно создаются с помощью a2ensite
/etc/apache2
, в которые вы внесли изменения. Если вы делаете это вручную каждый раз, когда хотите переместить их, тогда да это утомительно, и это одна из причин, по которой вы должны стремиться автоматизировать ее, написав простой сценарий оболочки, который позаботится обо всем этом для вас.
Благодаря советам как от Askubuntu, так и от Linux & amp; Unix SE, я собрал то, что кажется наиболее эффективным способом сделать то, что я намеревался сделать. Я надеюсь, что это полезно для других, и если кто-то может увидеть какие-либо места, где этот процесс может быть оптимизирован и улучшен, пожалуйста, внесите свой вклад.
Перед тем, как продолжить, обратите внимание, что я использую phpMyAdmin, и именно здесь я выполнил все свои операции MySQL. Кроме того, это предполагает, что целевой компьютер является новой установкой и что никакие настройки или файлы на новом компьютере не требуют сохранения. Эти операции перезапишут то, что находится на целевом компьютере. Наконец, это то, что я сделал для переноса моей системы, поэтому ваша конкретная ситуация, скорее всего, будет другой. Это просто предлагается в надежде дать людям в подобных ситуациях страницу, которая будет менее пустой для начала. Я перешел с Ubuntu 13.04 на Linux Mint 14.
На старом компьютере:
Создайте каталог, в котором вы можете хранить все, что собираетесь передать.
Скопируйте каталог, в котором вы храните все свои HTML, CSS и любые другие файлы, которые составляют ваш сайт. Я храню мой в каталоге в моей папке /home
, а затем делаю ссылку на него из /var/www
с помощью ссылки с символической ссылкой под названием Websites
.
Скопируйте весь каталог /etc/apache2 directory
.
Скопировать файл /etc/hosts
.
Используя phpMyAdmin, экспортируйте в файл sql
все базы данных, которые вы создали, и хотите переместить на новый сервер. В phpMyAdmin на вкладке export
в домашней области вам нужно использовать опцию custom
, чтобы выбрать, какие базы данных экспортировать. Убедитесь, что не скопировали базы данных с именами mysql
, performance_schema
и information_schema
. Они вам не нужны, и вы все равно не сможете перезаписать их на новом сервере. Поэтому, если вы включите их, это приведет к головной боли при установке на новый компьютер.
Перейдите в базу данных mysql
и скопируйте таблицу user
в файл sql
.
На новом компьютере:
Установить phpMyAdmin
в Synaptic. Это устанавливает все необходимые файлы для сервера 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
. Оставьте остальную часть файла в покое. Вам понадобятся права суперпользователя для редактирования и сохранения файла /etc/hosts
.
Скопируйте HTML-файлы и данные веб-сайта туда, где вы обычно это делаете. В моем случае я храню их в каталоге /home
. Создайте символическую ссылку на этот каталог в /var/www
, и если вы это сделаете, убедитесь, что у вас FollowSymLinks
установлена опция в /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 по умолчанию разрешается загрузка только до 2 МБ. Чтобы изменить это, откройте /etc/php5/apache2/php.ini
, найдите, где написано upload_max_filesize
, и измените его так, чтобы оно было достаточно большим, чтобы загрузить файл sql
. Это требует привилегий суперпользователя и измените их обратно после завершения всего этого, если вы считаете, что это имеет значение. Если вы сделаете это, вам придется перезапустить 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
В этот момент вам нужно идти. Откройте браузер и зайдите на свои веб-сайты, как вы делали на старой машине, и все готово!
Я надеюсь, что это будет полезно для некоторых других.