Установка сайта на web-хост на примере Joomla!

Создайте пользователя сервера MySQL и базу данных для сайта. Никогда не указывайте пользователя root в конфигурации БД ваших сайтов! В целях безопасности на каждый отдельный сайт необходимо создать отдельного пользователя, который будет иметь доступ только к базе данных этого сайта. Права доступа пользователей различных сайтов не должны пересекаться. Не давайте пользователям БД глобальные привелегии — разрешайте только работу с базой данных отдельного сайта. Для создания базы данных и пользователя выполните в phpMyAdmin следующие действия:

  1. Перейдите во вкладку «Учётные записи пользователей» с помощью верхнего меню навигации.
  2. Нажмите на ссылку «Добавить учетную запись пользователя».
  3. Придумайте имя пользователя БД, введите его в соответствующем поле.
  4. В качестве имени хоста для повышения степени безопасности выберите «Локальный».
  5. Сгенерируйте сложный пароль.
  6. Перепишите имя пользователя и новый пароль.
  7. Отметьте галочкой «Создать базу данных с таким же именем и предоставить на неё все привилегии».
  8. Нажмите на кнопку «Вперёд» в правом нижнем углу.

Создайте пользователя операционной системы с помощью консольной команды adduser. Для этого пользователя будет также создан домашний каталог, находящийся в директории /home. В каталоге нового пользователя и должны размещаться файлы web-сайтов. Права на все файлы в домашнем каталоге пользователя должны принадлежать данному пользователю. Флаг --ingroup определяет группу по умолчанию, в которую входит этот пользователь. Если группа не задана, то будет создана новая группа, и её имя будет совпадать с именем пользователя. При создании нового пользователя необходимо будет определить для него пароль и ответить на необязательные вопросы, которые можно пропустить, если ввести пустые значения.

adduser fil --ingroup www-data

Создайте новый пул PHP для пользователя fil. Для этого скопируйте пул по умолчанию, а потом внесите в него изменения:

cd /etc/php/7.0/fpm/pool.d
cp www.conf fil.conf

/etc/php/7.0/fpm/pool.d/fil.conf:

; pool name ('www' here)
[fil]

user = fil
group = www-data
listen = /run/php/php7.0-fpm-fil.sock
listen.owner = www-data
listen.group = www-data

Создайте общий каталог для web-сайтов, а также каталог нового сайта (одной командой можно создать несколько директорий):

mkdir /home/fil/www /home/fil/www/joomla

Создайте новый хост в конфигурационном файле Nginx /etc/nginx/conf.d/default.conf (при желании можно создать новый файл в этом же каталоге). Скопируйте уже имеющийся серверный блок тестового хоста и внесите в него изменения (выделено красным):

server {
    listen 80;
    server_name joomla.dev;
    root /home/fil/www/joomla;

    # ЧПУ-перенаправление для CMS
    location / {
        try_files $uri $uri/ index.php?$args;
    }
	
    location ~ \.php($|/) {
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }
        fastcgi_split_path_info          ^(.+?\.php)(/.*)$;
        fastcgi_param                    PATH_INFO            $fastcgi_path_info;
        fastcgi_param                    SCRIPT_FILENAME      $document_root$fastcgi_script_name;
        include                          fastcgi_params;
        fastcgi_pass                     unix:/var/run/php/php7.0-fpm-fil.sock;
        fastcgi_intercept_errors         on;
    }
}

Директива try_files проверяет существование запрошенного файла — если его не существует, сервер проверяет существование запрошенной директории, если её не существует, сервер делает внутреннее перенаправление на индексный файл index.php. Корневая локация по умолчанию / соответствует любому файлу. Сервер направляет в локацию по умолчанию в том случае, если не было совпадений с указанными ниже локациями по регулярным выражениям, а также если не было точных совпадений.

Создайте запись для нового хоста в файле C:\Windows\System32\drivers\etc\hosts:

11.222.333.44        joomla.dev
11.222.333.44        www.joomla.dev

Для работы сайта могут понадобиться дополнительные расширения PHP. Установите их:

apt-get install php7.0-curl php7.0-bz2 php7.0-mcrypt php7.0-gd

Перезагрузите Nginx и PHP, чтобы изменения вступили в силу:

/etc/init.d/nginx restart
/etc/init.d/php7.0-fpm restart

Загрузите архив последней версии Joomla! CMS в папку временных файлов из официального репозитория GitHub

cd /tmp
wget https://github.com/joomla/joomla-cms/releases/download/3.5.1/Joomla_3.5.1-Stable-Full_Package.tar.gz -O joomla.tar.gz

Распакуйте архив в директорию домашнего каталога нового пользователя. Обратите внимание на флаг -C (change), который меняет каталог назначения:

tar xpzf joomla.gar.gz -C /home/fil/www/joomla

Так как операция по разархивированию производилась от имени пользователя root, необходимо сменить владельца вновь созданных файлов. В дальнейшем рекомендуется манипулировать файлами от имени пользователя, которому принадлежат данные файлы:

chown fil:www-data -R /home/fil

Установите Joomla! В настройках БД укажите имя пользователя и пароль созданного вами ранее пользователя MySQL. На этом всё: сервер готов к использованию. Вам следует учитывать, что в настоящий момент единственной защитой от взлома сервера являются пароли. Поэтому пароли должны быть сложными. Существует ряд необходимых требований, связанных с безопасностью, которые настоятельно рекомендуется выполнить: установка и настройка брандмауэра (файрвола), введение базовой авторизации для открытых точек доступа, защита от перебора паролей, настройка политики безопасности приложений. Эти темы я попытаюсь раскрыть в следующей статье. А пока сделайте полную резервную копию Вашей ОС с помощью архиватора tar. Главное — это вовремя сохраниться:

tar cpzf /backup.tar.gz --exclude=/media --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.gz --exclude=/mnt --exclude=/sys /

Дождитесь завершения выполнения процесса архивирования. После чего загрузите резервную копию /backup.tar.gz на ваш локальный компьютер (архив на сервере можете удалить — он занимает место на диске). Впоследствии вы можете восстановить резервную копию на свежеустановленной операционной системе Debian таким образом:

tar xpfz /backup.tar.gz -C /

Желаю приятной работы!