Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
В этой части мы рассмотрим порядок переноса со старого хостинга на наш веб-сервер на стеке LEMP сайта на движке phpBB. Так как этот сайт потребует для своей работы базу данных MySQL, первым делом выполним восстановление данных в ранее созданную пустую БД из файла дампа (*.sql) сделанного на старом хостинге.
Произведём восстановление резервной копии (дамп БД в виде sql-файла) в существующую пустую БД командой вида:
mysql -u 'forum-usr' -p'MySQLdbForumPaSSw0rD' 'forum-db' < ~/forumdb.sql
Как наверное понятно, мы выполняем восстановление базы данных не от имени mysql-пользователя root, а от имени mysql-пользователя, которому мы ранее дали права к этой БД, так как его прав для этой операции вполне достаточно.
Прежде чем, копировать со старого хостинга файлы сайта phpBB, выполним настроку виртального хоста nginx таким образом, чтобы сузить права доступа к некоторым файлам, специфичным для phpBB:
sudo nano /etc/nginx/sites-available/forum.mydomain.ru
Какиой бы не была сделана конфигурация виртуального хоста, необходимо позаботиться о закрытии прямого доступа с помощью параметров в секциях location {} к каталогам cache/, files/, store/ и файлам .htaccess, config.php
Пример конфигурационного файла виртуального хоста nginx можно найти в каталоге с файлами phpBB - docs/nginx.sample.conf
Приведу пример настроенного конфигурационного файла виртуального хоста для сайта форума phpBB3 по условиям нашего цикла инструкций:
server { listen 80; server_name forum.mydomain.ru; root /var/www/html/forum; index index.php index.html index.htm; access_log /var/log/nginx/access.forum.mydomain.ru.log; error_log /var/log/nginx/error.forum.mydomain.ru.log; location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|store) { deny all; return 403; } location ~ /\.svn|/\.git|/\.ht { deny all; } location ~* \.(gif|jpe?g|png|css)$ { expires 30d; } location / { if (!-e $request_filename) { rewrite ^(.*)$ /app.php; } } location ~ \.php$ { try_files $uri $uri/ /app.php?$query_string; fastcgi_pass unix:/var/run/php5-fpm-forum.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
После изменения конфигурации виртуального хоста перезапустим nginx:
sudo service nginx restart
C помощью утилиты scp копируем со старого хостинга каталог с архивом сайта phpBB в домашний каталог текущего пользователя на нашем веб-сервере. Затем копируем архив в ранее поготовленную корневую папку виртуального хоста nginx, переходим в этот каталог и выполняем распаковку архива с последующим его обязательным удалением.
sudo cp ~/forum-backup.tgz /var/www/html/forum/ cd /var/www/html/forum/ tar xzf forum-backup.tgz sudo rm forum-backup.tgz
Теперь нам необходимо настроить разрешения на доступ к файлам phpBB на уровне файловой системы.
Установим рекурсивно в качестве владельца для всех файлов и каталогов сайта phpBB пользователя, от имени которого работает пул php-fpm, обслуживающий виртуальный хост сайта (этого пользователя и соответсвующую ему групп мы задали ранее):
sudo find /var/www/html/forum/ -exec sudo chown -R www-pool-forum {} \;
Такая конструкция изменения атрибутов файлов используется не просто. Она позволяет установить нужные атрибуты на все файлы, в том числе и скрытые, типа .htaccess
За счёт вызова sudo для каждого файла/каталога выполнение команды может занять продолжительное время.
По аналогии назначим для всех файлов основную группу пользователя, от имени которого работает пул php-fpm:
sudo find /var/www/html/forum/ -exec sudo chgrp -R www-pool-forum {} \;
Рекурсивно установим права на все файлы и каталоги сайта c правом для записи только для владельца (пользователя, от имени которого работает пул php-fpm):
sudo find /var/www/html/forum/ -type d -exec sudo chmod 0755 {} \; sudo find /var/www/html/forum/ -type f -exec sudo chmod 0644 {} \;
В некоторых источниках можно встретить рекомендацию установки расширенных прав на некоторые каталоги phpBB, примерно таким образом:
cd /var/www/html/forum/ sudo chmod 777 store/ cache/ files/ images/avatars/upload
Однако практика использования описанной в цикле инструкций конфигурации показывает, что такие права для штатной работы форума не нужны.
Следующим действием будет настройка одного из конфигурационных скриптов phpBB (config.php) для возможности подключения к ранее восстановленной базе данных MySQL:
sudo nano /var/www/html/forum/config.php
Изменим в файле значения указанных ниже переменных:
$dbms = 'mysql'; $dbhost = 'localhost'; $dbport = ''; $dbname = 'forum-db'; $dbuser = 'forum-usr'; $dbpasswd = 'MySQLdbForumPaSSw0rD';
Сохраняем изменения в файле и проверяем работу сайта через веб-браузер. Если всё сделано правильно, но возникают ошибки исполнения php-скриптов, из которых понятно, что некоторые скрипты пытаются получить доступ к БД MySQL с параметрами старого хостинга, то возможно нам ещё потребуется выполнить форсированную очистку кэша phpBB
Автор первичной редакции: Алексей Максимов Время публикации: 29.03.2016 19:00