Установка и настройка WEB сервера NGINX + Apache (httpd) + MariaDB (MySQL) + PHP + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Postfix на AlmaLinux 9
Веб-сервер, настроенный по данной инструкции можно будет использовать для размещения собственных сайтов в локальной сети или сети Интернет.
После установки на сервер AlmaLinux 9 (Minimal) (x86_64) 4Gb RAM, 4 CPU, 50Gb SSD, приступаем к подготовке сервера. (https://almalinux.org/get-almalinux/)
Проверить какая у вас версия ОС можно командой:
cat /etc/*release
Подготовка сервера
Обновляем AlmaLinux 9:
dnf update -y
Устанавливаем репозиторий EPEL и дополнительные пакеты для загрузки и распаковки:
dnf install epel-release wget nano mc unzip open-vm-tools dnf-utils net-tools diffutils curl tar -y
Настройка времени
Устанавливаем корректный часовой пояс:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* данной командой мы установим часовой пояс по московскому времени.
Теперь устанавливаем и запускаем службу для автоматической синхронизации времени:
dnf install chrony -y systemctl enable chronyd systemctl start chronyd
Безопасность
Если на сервере используется SELinux (по умолчанию, на системах RPM), рекомендуется ее отключить.
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config setenforce 0
* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово.
Брандмауэр
Для нормальной работы WEB сервера нужно открыть порты:
- 80 — основной порт (http);
- 8080 — дополнительный порт (http);
- 443 — SSL порт (https);
- 20, 21 — порты нужны для работы (FTP);
- 60000-65535 — порты необходимы для работы FTP (динамические порты для пассивного режима);
- 25, 465, 587 — порты нужны для работы почтового сервера по SMTP;
firewall-cmd --permanent --add-port={80,443,8080}/tcp firewall-cmd --permanent --add-port={20,21,60000-65535}/tcp firewall-cmd --permanent --add-port={25,465,587}/tcp firewall-cmd --reload
* Команда (firewall-cmd --reload) перезапускает firewalld, чтобы применить новые правила.
Установка NGINX
Устанавливаем NGINX:
dnf install nginx -y
Внесем небольшую корректировку в файл nginx.conf:
nano /etc/nginx/nginx.conf
http { ... server_names_hash_bucket_size 1024; .... }
* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Разрешаем автозапуск сервиса и запустим его:
systemctl enable nginx systemctl start nginx
Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:
- обратите внимание, что данное приветствие может иметь и другой вид.
Установка PHP и PHP-FPM
Если мы введем команду: dnf install php php-fpm , то у нас репозитария установиться php версии 8.0, но нам нужно php версии 8.3.
Добавляем репозиторий:
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Обновляем кеш после добавления двух репозиториев.
dnf makecache -y
Смотрим лист конфигурационных репозиториев системы:
dnf repolist
Видим:
repo id repo name appstream CentOS Stream 9 - AppStream baseos CentOS Stream 9 - BaseOS epel Extra Packages for Enterprise Linux 9 - x86_64 epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64 epel-next Extra Packages for Enterprise Linux 9 - Next - x86_64 extras-common CentOS Stream 9 - Extras packages remi-modular Remi's Modular repository for Enterprise Linux 9 - x86_64 remi-safe
Теперь вы можете перечислить модули PHP и посмотреть, был ли добавлен PHP 8.4
dnf module list php
После этого теперь вы можете сбросить модуль и включить PHP 8.4:
dnf module reset php dnf module install php:remi-8.4 dnf module enable php:remi-8.4
И устанавливаем php и PHP-FPM версии 8.4:
dnf install php php-fpm -y
Проверяем:
php -r "phpinfo();" | grep "PHP Version"
Установим наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
dnf install php-{common,spl,hash,ctype,cli,gd,ldap,odbc,pdo,pecl-memcache,opcache,pear,xml,xmlrpc,mbstring,json,snmp,soap,intl,devel,apcu,igbinary,curl,imagick,fpm,zip,cgi,mysqlnd,gettext,bcmath,imap} -y dnf install libicu-devel -y
Запускаем php-fpm и разрешаем его автозапуск:
systemctl enable --now nginx php-fpm
Настройка связки NGINX + PHP
Открываем файл для настройки виртуального домена по умолчанию. Открываем файл для настройки виртуального домена по умолчанию. В зависимости от версии AlmaLinux 9 пути могут различаться:
1) nano /etc/nginx/conf.d/default.conf 2) nano /etc/nginx/nginx.conf 3) nano /etc/nginx/nginx.conf.default
В секции server редактируем параметр index на следующее значение:
server { ... index index.php index.html index.htm; ... }
- добавляем index.php в начало списка. Если параметра index нет, создаем его.
А внутри секции server добавим следующее:
location ~ \.php$ { set $root_path /usr/share/nginx/html; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name; include fastcgi_params; fastcgi_param DOCUMENT_ROOT $root_path; }
- где /usr/share/nginx/html — корневой путь хранения скриптов; unix:/run/php-fpm/www.sock — файл для взаимодействия с php-fpm.
Открываем настройки php-fpm:
nano /etc/php-fpm.d/www.conf
Проверяем, настройки параметров:
listen = /run/php-fpm/www.sock ... listen.group = nginx ...
- listen должен иметь значение /run/php-fpm/www.sock (путь до сокетного файла, который мы указали в конфигурационном файле nginx); listen.group указывает, какую группу назначить сокетному файлу.
... иначе, меняем значение. После перезагружаем php-fpm:
systemctl restart php-fpm
- в данном примере мы указываем, что php-fpm будет использовать сокетный файл /run/php-fpm/www.sock для взаимодействия. Этот файл мы указали выше в настройке NGINX.
Проверяем правильность настроек nginx:
nginx -t
Если все настроено верно, то видим следующее:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
И перезагружаем его:
systemctl restart nginx
Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:
nano /usr/share/nginx/html/index.php
<?php phpinfo(); ?>
Открываем в браузере IP-адрес нашего сервера. Теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:
Установка MariaDB или MySQL
Подключение актуального репозитория:
В примерах выше мы установили СУБД из репозиториев операционных систем. А значит — нет гарантии, что будет установлена последняя версия MariaDB. Для решения задачи мы можем подключить официальный репозиторий самого разработчика.
Генерируем репозиторий mariadb.repo.
Скачиваем скрипт из оф.сайта для генерации репозитория mariadb.repo и даем ему право на выполнение.
cd ~ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup chmod +x mariadb_repo_setup
После предоставления необходимых прав, нужно запустить этот скрипт и он уже сгенерирует репозиторий.
./mariadb_repo_setup
Итак, после выполнения скрипта файл mariadb.repo будет сгенерирован в директории /etc/yum.repos.d.
Заходим и смотрим, что он там намутил...
nano /etc/yum.repos.d/mariadb.repo
После генерации репозитория теперь запускаем установку самой MariaDB:
dnf install mariadb mariadb-server --allowerasing
- для установки mysql выполняем команду dnf install mysql
Чтобы, проверить какие пакеты установились нужно использовать команду:
yum list installed | grep mariadb
Разрешаем автозапуск и запускаем СУБД:
systemctl enable mariadb --now
- для работы с mysql меняем mariadb на mysql.
Проверьте состояние службы MariaDB, выполнив следующую команду.
systemctl status mariadb
Если у вас включен брандмауэр, тогда нужно добавить MariaDB в правило брандмауэра. Для этого выполните следующую команду.
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
Сразу создаем пароль для учетной записи root:
mysqladmin -u root password
PHP + MariaDB (MySQL)
Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:
dnf install php-mysqli php-mysql -y
Проверяем, что поддержка mysql теперь есть в PHP:
php -i | grep mysql
Мы должны увидеть:
... mysqlnd mysqlnd => enabled Version => mysqlnd 8.0.30 ...
- нас не должно смущать, что установили мы mariadb, а заголовок mysql.
После перезагружаем php-fpm:
systemctl restart php-fpm
И открываем наш сайт в браузере. В phpinfo появится новая секция MySQL:
* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.
Установка phpMyAdmin
Устанавливаем phpMyAdmin командой:
dnf install phpmyadmin -y
Готово. Так как в процессе установки были также установлены компоненты PHP и добавлен конфигурационный файл для NGINX, перезапускаем сервисы:
После перезапускаем NGINX и php-fpm:
systemctl reload nginx php-fpm
И открываем в браузере наш домен, в данном примере, http://<IP-адрес сервера>/phpMyAdmin. Откроется форма для авторизации — вводим логин root и пароль, который мы указали после установки и запуска mariadb.
Теперь создадим для phpmyadmin отдельный виртуальный домен в NGINX:
nano /etc/nginx/conf.d/phpMyAdmin.conf
И добавим в него следующее содержимое:
server { listen 80; server_name phpmyadmin.putyato.local; set $root_path /usr/share/phpMyAdmin; location / { root $root_path; index index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name; include fastcgi_params; fastcgi_param DOCUMENT_ROOT $root_path; fastcgi_read_timeout 300; } }
* где phpmyadmin.putyato.local — адрес для виртуального домена, именно этот адрес должен быть введен в адресную строку браузера, чтобы открылся нужный сайт. Поэтому если нет возможности зарегистрировать домен и имя узла в DNS, можно воспользоваться локальным файлом hosts. /usr/share/phpMyAdmin — это каталог, в который по умолчанию устанавливается phpMyAdmin.
После перезапускаем NGINX и php-fpm:
systemctl reload nginx systemctl restart php-fpm
И открываем в браузере наш домен, в данном примере, http://phpmyadmin.putyato.local. Откроется форма для авторизации — вводим логин root и пароль, который мы указали после установки и запуска mariadb.
Установка и настройка FTP-сервера
В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизоваться под uid системных учетных записей.
Нам нужен будет репозиторий CodeReady Linux Builder (CRB):
dnf config-manager --set-enabled crb
Теперь ProFTPd и набор утилит для работы с ним можно установить командой:
dnf install proftpd proftpd-utils
Создаем виртуального пользователя:
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpwww --uid=48 --gid=48 --home=/var/www --shell=/sbin/nologin
- где
/etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи;
ftpwww — имя пользователя (логин);
uid и gid — идентификаторы пользователя и группы системной учетной записи (apache);
/var/www — домашний каталог пользователя;
/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Изменим права для созданного файла с паролями:
chmod 440 /etc/proftpd/ftpd.passwd
* в противном случае, при запуске proftpd мы получим ошибку «...fatal: AuthUserFile: unable to use /etc/proftpd.d/ftpd.passwd: Operation not permitted...»
Открываем на редактирование конфигурационный файл proftpd:
nano /etc/proftpd.conf
И редактируем следующее (комментируем):
#AuthOrder ...
Создадим конфигурационный файл со своими настройками:
nano /etc/proftpd/conf.d/custom.conf
И добавим следующее:
UseIPv6 off IdentLookups off PassivePorts 60000 65535 RequireValidShell off AuthUserFile /etc/proftpd/ftpd.passwd AuthPAM off LoadModule mod_auth_file.c AuthOrder mod_auth_file.c
* где 60000 - 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и запускаем его:
systemctl enable proftpd --now
Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.
Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS.
Apache (httpd)
Несмотря на то, что мы установили и настроили PHP-FPM, Apache нам понадобится, как минимум, по двум причинам. Во-первых, многие сайты используют файл .htaccess, который читает Apache. Во-вторых, последний включает большое число модулей, которые может использовать портал.
В некоторых случаях, можно обойтись без Apache, но в данной инструкции мы опишем процедуру его установки и настройки.
И так, устанавливаем httpd:
dnf install httpd -y
Заходим в настройки:
nano /etc/httpd/conf/httpd.conf
И редактируем следующее:
Listen 8080
* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.
<IfModule dir_module> DirectoryIndex index.php index.html </IfModule>
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html
Добавляем:
<Directory /var/www/*/www> AllowOverride All Options Indexes ExecCGI FollowSymLinks Require all granted </Directory>
* где Directory — разрешенные каталоги для запуска из apache; Options — разрешенные опции; Require — с каких IP-адресов можно открывать сайты, определенные в данном каталоге. Итого, мы разрешаем все каталоги в /var/www, но только если следующий каталог будет www; разрешаем опции Indexes (возвращает список файлов, если нет индексного файла, например, index.php), ExecCGI (разрешены сценарии CGI), FollowSymLinks (включены символические ссылки в этом каталоге); доступ для данных каталогов разрешен со всех адресов (all granted).
Проверяем синтаксис конфигурационного файла httpd:
apachectl configtest
И если получаем ответ:
Syntax OK
... разрешаем автозапуск и запускаем службу:
systemctl enable httpd --now
Создаем php-файл со следующим содержимым:
nano /var/www/html/index.php
<?php phpinfo(); ?>
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера и добавляем :8080 (http://<IP-адрес нашего сервера>:8080). Откроется привычная нам страница с информацией о PHP.
В разделе «PHP Variables» мы должны увидеть Apache для опции $_SERVER['SERVER_SOFTWARE']:
Вводим команду для отправки http-запроса веб-серверу Apache:
curl -s http://127.0.0.1:8080 | grep SERVER_SOFTWARE
Мы должны получить что-то на подобие:
<tr><td class="e">$_SERVER['SERVER_SOFTWARE']</td><td class="v">Apache/2.4.57 (Rocky Linux)</td></tr>
NGINX + Apache
Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.
Открываем конфигурационный файл nginx:
1) nano /etc/nginx/conf.d/default.conf 2) nano /etc/nginx/nginx.conf 3) nano /etc/nginx/nginx.conf.default
- если при настройке nginx мы редактировали файл /etc/nginx/nginx.conf, то необходимо открыть его.
Находим наш настроенный location для php-fpm:
... location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name; include fastcgi_params; fastcgi_param DOCUMENT_ROOT $root_path; } ...
и меняем на:
... location ~ \.php$ { proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ...
Проверяем и перезапускаем nginx:
nginx -t systemctl restart nginx
Пробуем открыть в браузере IP-адрес нашего сервера — должна открыться та же страница, что при проверке Apache (с добавлением 8080):
Apache Real IP
Так как все запросы на httpd приходят от NGINX, они воспринимаются как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей.
Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:
dnf install httpd-devel gcc unzip redhat-rpm-config -y
Переходим в каталог /usr/local/src, Скачиваем модуль, Распаковываем его, Переходим в распакованный каталог, Собираем модуль и устанавливаем его:
cd /usr/local/src wget https://github.com/gnif/mod_rpaf/archive/stable.zip unzip stable.zip cd mod_rpaf-stable/ make make install
* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой dnf install which.
Создаем конфигурационный файл со следующим содержимым:
nano /etc/httpd/conf.d/mod_rpaf.conf
LoadModule rpaf_module modules/mod_rpaf.so RPAF_Enable On RPAF_ProxyIPs 127.0.0.1 RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On RPAF_ForbidIfNotProxy Off
Перезапускаем httpd:
systemctl restart httpd
Для проверки настройки открываем на редактирование созданный index-файл для httpd:
nano /var/www/html/index.php
<?php echo $_SERVER['REMOTE_ADDR'] ?>
Открываем браузер и вводим в адресную строку IP-адрес нашего сервера. Мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу.
Postfix
Устанавливаем postfix командой:
dnf install postfix -y
Теперь нам необходимо сделать несколько простых настроек:
nano /etc/postfix/main.cf
Редактируем:
... myorigin = $mydomain ... inet_protocols = ipv4 ...
Добавляем:
smtp_generic_maps = hash:/etc/postfix/generic_map
* myorigin — имя домена, которое будет подставляться всем отправляемым сообщениям без явного указания оного; inet_protocols — задает версию IP, с которой будет работать Postfix (если на нашем сервере используется ipv6, значение параметра стоит оставить all); smtp_generic_maps указывает на карту с общими правилами пересылки.
Открываем карту пересылки:
nano /etc/postfix/generic_map
И добавляем:
@putyato.ru no-reply@putyato.ru
* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес no-reply@putyato.ru.
Создаем карту: Открываем карту пересылки:
postmap /etc/postfix/generic_map
Для применения настроек перезагружаем почтовый сервер:
systemctl restart postfix
Тюнинг веб-сервера
PHP
Открываем на редактирование следующий файл:
nano /etc/php.ini
И правим следующее:
upload_max_filesize = 1024M ... post_max_size = 1024M ... memory_limit = 1024M ... short_open_tag = On ... date.timezone = "Europe/Moscow" ... max_execution_time = 180
Перезапускаем php-fpm и httpd:
systemctl restart php-fpm systemctl restart httpd
NGINX
Открываем на редактирование следующий файл:
nano /etc/nginx/nginx.conf
И правим следующее:
worker_processes auto;
И внутри секции http добавляем:
client_max_body_size 1024M;
После перезапускаем nginx:
systemctl restart nginx
Создание первого сайта
Задаем переменную, значение которой будет домен сайта:
TMP_SITE=putyato.ru
- где putyato.ru — имя домена. Нам будет намного удобнее копировать и вставлять команды с переменной (не придется править после копипасты).
Создаем новый файл виртуального домена NGINX:
nano /etc/nginx/conf.d/$TMP_SITE.conf
- обязательно на конце должен быть .conf, так как только такие файлы веб-сервер подгружает в конфигурацию.
И добавляем следующее содержимое.
Для HTTP:
server { listen 80; server_name putyato.ru www.putyato.ru; set $root_path /var/www/putyato.ru/www; access_log /var/www/putyato.ru/log/nginx/access_log; error_log /var/www/putyato.ru/log/nginx/error_log; gzip on; gzip_disable "msie6"; gzip_min_length 1000; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; root $root_path; location / { proxy_pass http://127.0.0.1:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ { expires modified +1w; } }
- где putyato.ru — домен, для которого создается виртуальный домен; /var/www/putyato.ru — каталог, в котором будет размещаться сайт.
- все запросы будут переводиться на локальный сервер, порт 8080, на котором работает apache, кроме обращений к статическим файла (jpg, png, css и так далее).
- обратите внимание на выделения полужирным — здесь нужно подставить свои данные.
- все запросы будут переводиться на локальный сервер, порт 8080, на котором работает apache, кроме обращений к статическим файла (jpg, png, css и так далее).
Для HTTPS:
server { listen 80; server_name putyato.ru www.putyato.ru; location ~ /.well-known { root /usr/share/nginx/html; allow all; } if ($uri !~ /.well-known){ return 301 https://$host$request_uri; } } server { listen 443 ssl; ssl on; #Если возникнет ошибка, то закомментировать эту строку. ssl_certificate /etc/nginx/ssl/putyato.ru/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/putyato.ru/privkey.pem; server_name putyato.ru www.putyato.ru; set $root_path /var/www/putyato.ru/www; access_log /var/www/putyato.ru/log/nginx/access_log; error_log /var/www/putyato.ru/log/nginx/error_log; gzip on; gzip_disable "msie6"; gzip_min_length 1000; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; root $root_path; location ~ /.well-known { root /usr/share/nginx/html; allow all; } location / { proxy_pass http://127.0.0.1:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ { expires modified +1w; } }
- в первой секции server мы перенаправляем все запросы по незащищенному http на https.
- ssl_certificate и ssl_certificate_key — пути к публичному и приватному ключам соответственно.
- для получения бесплатного сертификата читайте статью Получение бесплатного SSL сертификата Let's Encrypt.
- ssl_certificate и ssl_certificate_key — пути к публичному и приватному ключам соответственно.
Теперь создаем виртуальный домен в Apache:
nano /etc/httpd/conf.d/$TMP_SITE.conf
<VirtualHost *:8080> Define root_domain putyato.ru Define root_path /var/www/putyato.ru ServerName ${root_domain} ServerAlias www.${root_domain} DocumentRoot ${root_path}/www ErrorLog ${root_path}/log/apache/error_log TransferLog ${root_path}/log/apache/access_log </VirtualHost>
Создаем каталоги для сайта:
mkdir -p /var/www/$TMP_SITE/{www,tmp} mkdir -p /var/www/$TMP_SITE/log/{nginx,apache}
Создаем индексный файл со следующим содержимым:
nano /var/www/$TMP_SITE/www/index.php
<?php echo "<h1>Hello from putyato.ru</h1>"; ?>
Задаем права на папки:
chown -R apache:apache /var/www/$TMP_SITE chmod -R 775 /var/www/$TMP_SITE
Проверяем корректность настроек конфигурационных файлов:
nginx -t apachectl configtest
Перезапускаем веб-сервер:
systemctl reload nginx systemctl reload httpd
Открываем сайт в браузере.
При необходимости, создаем базу данных.
mysql -uroot -p > CREATE DATABASE site1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; > GRANT ALL PRIVILEGES ON site1.* TO dbuser@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
- данными sql-командами мы создаем базу данных site1 и предоставляем к ней доступ для учетной записи dbuser с паролем password. При желании сделать соединение более безопасным, можно убрать WITH GRANT OPTION.
Установка MediaWiki
Убедитесь, что ваша система соответствует требованиям к установке:
https://www.mediawiki.org/wiki/Manual:Installation_requirements/ru
Загрузите tar-файл MediaWiki с официальной страницы загрузки:
https://www.mediawiki.org/wiki/Download/ru
Распаковываем скаченный архив, на сегодняшний день последняя версия архива: mediawiki-1.40.0.zip И переносим содержимое архива на сервер в папку:
/var/www/wiki.putyato.ru/www
Настройка базы данных если требуется, но скрипт LocalSettings при первом запуске MediaWIKIэто делает автоматически.
Следующие команды создают базу данных с именем my_wiki, пользователя с именем wikiuser, и установят разрешения для пользователя в этой базе данных.
CREATE DATABASE my_wiki; CREATE USER 'wikiuser'@'localhost' IDENTIFIED BY 'database_password'; GRANT ALL PRIVILEGES ON my_wiki.* TO 'wikiuser'@'localhost' WITH GRANT OPTION;
Запуск установочного скрипта
Далее, завершите установку MediaWiki, перейдя по URL вашей установленной MediaWiki в вашем веб-браузере: Следуйте инструкциям в Manual:Настройка скрипта.
https://www.mediawiki.org/wiki/Manual:Config_script/ru
Полученный файл LocalSettings.php переносим в корневую папку с MediaWiki:
/var/www/wiki.putyato.ru/www
Расширенные настройки файла LocalSettings.php и частые вопросы:
https://www.mediawiki.org/wiki/Manual:FAQ/ru
Можно скачать файл LocalSettings.php с моими настройками и заменить старый. Но после скачивания файла, следует в этом файле установить свой пароль на БД.
$wgDBpassword = "Указываем свой пароль на БД";
cd /var/www/wiki.putyato.ru/www wget "https://cloud.putyato.ru/index.php/s/pSRkwEXBffXH7iQ/download/LocalSettings.php" --no-check-certificate -O LocalSettings.php
Как убрать : Заглавная страница.
Запускаем наш сайт с префиксом: ?title=MediaWiki:Mainpage
http://wiki.putyato.ru?title=MediaWiki:Mainpage
Вместо Заглавная страница, вписываем свое название.- Шпаргалка знаний.
Так же можно править и меню слева: ?title=MediaWiki:Sidebar
Доработка WordPress.
Добавить в корневом каталоге WordPress в файл wp-config.php:
define('WP_MEMORY_LIMIT', '1024M'); define('WP_MAX_MEMORY_LIMIT', '1024M');