Перенос сайта с mysql на другую машину .
Была задача перенести сайт с mysql с одной машины на другую. Сайт работал на 4-й версии mysql и php, а будет работать на 5-й. Итак устанавливаем апач, php, suphp, mysql:
# cd /usr/ ports/www/apache22
# make install clean
# cd /usr/ports/databases/mysql50
# make install clean
# cd /usr/ports/lang/php5
# make install clean
# cd /usr/ports/lang/php5-extensions
# make install clean
# cd /usr/ports/www/suphp
# make install clean
В make.conf прописываем:
.if ${.CURDIR:M*/www/apache22}
WITH_SUEXEC= yes
WITH_SUEXEC_MODULES= yes
SUEXEC_DOCROOT= /home
SUEXEC_LOGFILE= /var/log/httpd/suexec.log
.endif
#PHP_SAPI= cgi
.if ${.CURDIR:M*/www/suphp}
WITH_SETID_MODE= force
WITH_LOGFILE= /var/log/suphp.log
MIN_UID= 1000
MIN_GID= 1000
.endif
.if ${.CURDIR:M*/databases/mysql50-server}
WITH_XCHARSET= all
WITH_CHARSET= cp1251
WITH_COLLATION= cp1251_general_ci
.endif
.if ${.CURDIR:M*/databases/mysql50-client}
WITH_XCHARSET= all
WITH_CHARSET= cp1251
WITH_COLLATION= cp1251_general_ci
.endif
При установке модуля php-extensions в опциях можно выбрать что необходимо использовать. PHP работает в режиме cgi, для этого в апаче необходимо подгрузить модуль suphp. Но лучше использовать модуль апача fast-cgi, он намного быстрее обрабатывает запросы. Ниже приведен кусок конфига апача при использовании suphp (закомментарен) и fast-cgi:
### su_php options ###
#suPHP_Engine on
#AddType application/x-httpd-php .php
#suPHP_AddHandler application/x-httpd-php
#LoadModule suphp_module libexec/apache22/mod_suphp.so
### php_fastcgi options ###
LoadModule fastcgi_module libexec/apache22/mod_fastcgi.so
<IfModule mod_fastcgi.c>
FastCgiConfig -singleThreshold 30 -minProcesses 2 -restart \
-idle-timeout 400 -killInterval 200 -autoUpdate \
-pass-header HTTP_AUTHORIZATION
FastCgiWrapper /usr/local/sbin/suexec
FastCgiIpcDir /var/run/fastcgi
Action application/x-httpd-fastphp /cgi-bin/php-fcgi
AddType application/x-httpd-fastphp .php .php4 .php5
</IfModule>
# user homedirs
<Directory “/home/*/public_html”>
Options MultiViews Indexes Includes IncludesNoExec FollowSymlinks SymLinksIfOwnerMatch
AllowOverride All
Order deny,allow
Allow from all
</Directory>
DirectoryIndex index.php5 index.php index.html index.htm
Include etc/apache22/httpd.vhosts.conf
Include etc/apache22/Includes/*.conf
В /usr/local/etc/apache22/httpd.vhosts.conf прописаны виртуалхосты, первый дефолтный куда будут попадать те, кто вводят ip вместо названия сайта:
NameVirtualHost 1.1.1.1:80
#BEGIN_app-web
<VirtualHost 1.1.1.1:80>
ServerAdmin root@app.domain
ServerName app.domain
ServerAlias *.app.domain app.domain
SuexecUserGroup app-web app-web
# suPHP_UserGroup app-web app-web
DocumentRoot /home/app-web/public_html
ScriptAlias /cgi-bin/ /home/app-web/public_html/cgi-bin/
CustomLog /home/app-web/log/apache.log combined
ErrorLog /home/app-web/log/apache.error
</VirtualHost>
#END_app-web
#BEGIN_user
<VirtualHost 1.1.1.1:80>
ServerAdmin postmaster@domain
DocumentRoot /home/user/public_html
ServerName www.domain
ServerAlias *.domain domain
ScriptAlias /cgi-bin/ /home/user/public_html/cgi-bin/
CustomLog /home/user/log/apache.log combined
ErrorLog /home/user/log/apache.error
SuexecUserGroup user wwwusers
#suPHP_UserGroup user wwwusers
</VirtualHost>
#END_user
Добавляем в rc.conf строчки запуска апача и mysql:
apache22_enable=”YES”
mysql_enable=”YES”
mysql_dbdir=”/home/mysqldb”
mysql_args=”–key_buffer_size=96M –default-character-set=cp1251
Делаем начальные настроки mysql. Создаем пользователя root с паролем test и проверяем его:
# mysqladmin -u root password test
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 183801
Server version: 5.0.51a-log FreeBSD port: mysql-server-5.0.51
mysql>create database test;
Тут мы создали базу данных test, теперь создадим пользователя user c паролем test и дадим ему права на базу test:
# mysql -u root -p
Enter password:
mysql>GRANT ALL PRIVILEGES ON test.* TO user@localhost IDENTIFIED BY ‘test’ WITH GRANT OPTION;
Тут ALL означает все права, можно отдельно через запятую прописать CREATE, SELECT, INSERT, … Выходим из базы и можем проверить пароль mysql -u user -p. Теперь делаем дамп базы :
# mysqldump -u root -p –add-drop-table –add-locks –default-character-set=cp1251 test >
/usr/home/user/dump.sql
Тут указана опция –default-character-set=cp1251, т.к. такая кодировка базы, вместо test можно указать –all-databases, если нужно задампить все базы. Теперь вливаем дамп в новый сервер:
# mysql -u root -p < /home/user/dump.sql
Теперь делаем архив домика и распаковываем его на новом сервере:
# cd /usr/home/user
# tar -zcvpf /root/user.tar.gz public_html
# cd /home/user
# tar -zxvp user.tar.gz
Тут в примерах домик находится в /usr/home на старом сервере и в отдельной выделенной партиции /home на новом сервере. Рестартуем сервисы и проверяем работу сайта, видим что все работает.
Источник информации:
1. http://www.gentoo.org/doc/ru/mysql-howto.xml
© Mau, 2008.