- Установка и настройка Apache, PHP, MySQL на CentOS (+ PMA и FTP)
- 1. Обновляем систему.
- 2. Устанавливаем любимые редакторы.
- 3. Настройка брэндмауера (iptables).
- 4. Устаналвиваем Apache, SSL.
- It Works!
- 5. Устанавливаем PHP с некоторыми его доп. компонентами
- 6. Устанавливаем MySQL или MariaDB.
- Ставим MySQL
- Или ставим MariaDB
- Подключаем и проверяем
- 7. Настраиваем хосты в Apache.
- 8. Установка и настройка PhpMyAdmin (PMA)
- 9. Установка и настройка FTP клиента
- Веб-сервер на CentOS 7 (Apache, NGINX, PHP 8 FastCGI, MySQL 8)
- Подготовка системы
- Настройка брандмауэра
- Установка Apache (httpd)
- Установка Ngnix
- Установка PHP
- Создание сайта
- Установка MySQL
Установка и настройка Apache, PHP, MySQL на CentOS (+ PMA и FTP)
И так, к нам в руки попал новый сервер с только что установленной CentOS.
Задача — сделать из него полноценный веб сервер.
Все действия мы выполняем из под пользователя root.
1. Обновляем систему.
2. Устанавливаем любимые редакторы.
Лично я люблю пользоваться mcedit, который встроен в Midnight Commander, по этому его и ставлю:
3. Настройка брэндмауера (iptables).
Чтобы не вдаваться в долгие сложные настройки, просто отключаем его следующей командой
CentOS 6: # service iptables stop & & chkconfig iptables off
CentOS 7: # systemctl stop firewalld & & systemctl disable firewalld
4. Устаналвиваем Apache, SSL.
# yum — y install httpd mod_ssl
Редактируем конфиг апача
Открываем в любимом редакторе файл /etc/httpd/conf/httpd.conf.
Редактировать можно в mcedit (# mcedit / etc / httpd / conf / httpd . conf ) или, для своего удобства, используйте следующие программы: WinSCP (для windows) или Coda (для MacOS X), которые позволяют работать с файлами на сервере через протокол SFTP (тот-же SSH, только для файлов).
В ServerName пишем ip адрес или имя сервера.
Строчку IncludeOptional conf.d/*.conf переносим в самый конец файла.
А перед ней добавляем главный виртуалхост:
Ещё советую закомментировать строку # CustomLog logs/access_log combined
Прописываем Apache в автозапуск:
CentOS 6: # chkconfig httpd on
CentOS 7: # systemctl enable httpd . service
Запускаем Apache:
CentOS 6: # service httpd start
CentOS 7: # systemctl start httpd . service
Создаем тестовую страницу:
# echo ‘
It Works!
‘ > /var/www/html/index.html
Проверяем результат, открыв в браузере с другой машины IP-адрес сервера:
Если надпись It Works! появилась, продолжаем дальше
5. Устанавливаем PHP с некоторыми его доп. компонентами
# yum — y install php php — common php — gd php — xml php — mbstring
Перезагружаем Apache:
CentOS 6: # service httpd restart
CentOS 7: # systemctl restart httpd . service
Проверяем PHP:
Создадим php скрипт выводящий информацию о php:
Смотрим по адресу http://IP-адрес_сервера/inf.php
Если информация отобразилась, продолжаем дальше.
6. Устанавливаем MySQL или MariaDB.
В связи с тем, что MariaDB набирает все большую популярность за свои выдающиеся характеристики и полную совместимость с mysql приложениями, рассмотрим оба варианта:
Ставим MySQL
Или ставим MariaDB
Подключаем и проверяем
Устанавливаем модуль php для работы с БД
# yum — y install php — mysql
Проверяем MySQL (или MariaDB):
Создаём и редактируем проверочный фаил mysqltest.php
# mcedit / var / www / html / mysqltest . php
Копируем в него следующий код:
echo «
К сожалению, не доступен сервер mySQL
» ;
echo «
К сожалению, не доступна база данных
» ;
Сохраняем. Проверяем:
http://IP-адрес_сервера/mysqltest.php (после успешной проверки скрипт желательно удалить)
Если вывелась версия MySQL сервера, то продолжаем.
7. Настраиваем хосты в Apache.
После того, как мы убедились, что все основные веб-службы у нас хорошо работают, можно переходить к созданию директорий сайтов.
Структура у нас будет такая:
/home/ — директория с сайтами
/home/site1.ru/ — директория отдельного сайта
/home/site1.ru/www/ — файлы этого сайта
/home/site1.ru/logs/ — логи этого сайта
/home/site1.ru/tmp/ — временные файлы этого сайта
И так, создаем в /home/ директории сайтов и в каждом из них папки www, logs, tmp.
После этого прописываем наши хосты в конфиг апача:
/etc/httpd/conf.d/ — В эту директорию будем создавать отдельный конфиг фаил для каждого сайта (так удобнее).
Файл site1.conf:
Такой-же фаил надо создать для каждого сайта из директории /home/
После этого, перезапускаем апач:
CentOS 6: # service httpd restart
CentOS 7: # systemctl restart httpd
Если апач вдруг не запустился, лог ошибок всегда можно посмотреть в /var/log/httpd/
Примечание:
Если столкнулись с ошибкой доступа к файлам или директориям, то необходимо убедиться, что в файле /etc/sysconfig/selinux значение SELINUX равно disabled, если нет, то выставить и перезагрузить сервер командой # reboot.
Проверяем:
Для проверки совершенно не обязательно менять NS записи домена, достаточно отредактировать файл hosts на компьютере, с которого вы производите настройку. В windows он обычно лежит в C:\Windows\System32\drivers\etc\, в nix системах в /etc/
Добавляем туда строчку:
192.168.1.5 site1.ru
Где 192.168.1.5 — ip адрес вашего сервера.
Далее, создаем в /home/site1.ru/www/ фаил index.html с каким нибудь текстом.
Октрываем в браузере http://site1.ru/
Если видим там его содержимое, то продолжаем.
8. Установка и настройка PhpMyAdmin (PMA)
Ставить будем вручную. Для этого нам потребуется менеджер загрузок wget.
Если у вас нет, то ставим:
# yum — y install wget
Идем на http://www.phpmyadmin.net/home_page/downloads.php и копируем ссылку на самую последнюю мультиязычную версию PhpMyAdmin со сжатием .zip (На данный момент это — http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.8/phpMyAdmin-4.2.8-all-languages.zip).
Идем в /var/www/html/:
# cd / var / www / html /
Скачиваем PMA:
# wget http : //sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.2.8/phpMyAdmin-4.2.8-all-languages.zip
В директории появится архив phpMyAdmin-4.2.8-all-languages.zip, распаковываем его:
# unzip phpMyAdmin — 4.2.8 — all — languages . zip
Переименуем директорию phpMyAdmin-4.2.8-all-languages в pma:
# mv phpMyAdmin — 4.2.8 — all — languages pma
Удалим архив phpMyAdmin-4.2.8-all-languages.zip т.к. он нам больше не нужен:
# rm phpMyAdmin — 4.2.8 — all — languages . zip
По идее у нас уже полностью рабочий PhpMyAdmin должен быть доступен по адресу — https://IP-адрес_сервера/pma/
9. Установка и настройка FTP клиента
Лично мне нравится использовать ProFTPD.
Как его установить и настроить на CentOS читаем тут — Установка и настройка ProFTPD на CentOS.
Веб-сервер на CentOS 7 (Apache, NGINX, PHP 8 FastCGI, MySQL 8)
В данном примере использована — связка двух веб-серверов Nginx и Apache, PHP 8 (в режиме FastCGI) и сервер баз данных MySQL 8.
Подготовка системы
Установка репозитория EPEL и REMI
yum install epel-release -y rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install -y wget mc net-tools unzip tar htop
Настройка брандмауэра
В качестве межсетевого экрана будет использоваться iptables.
Остановка сервиса firewalld:
Выключение сервиса автозагрузки firewalld:
systemctl disable firewalld
yum install -y iptables-services
Включение сервиса iptables в автозагрузку:
systemctl enable iptables
Проверка статуса службы iptables:
systemctl status iptables
Создадим файл настроек iptables:
и внесем в него следующее содержимое:
#!/bin/sh # - Очищаем таблицы iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # - Политики по умолчанию iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # - Разрешить трафик по петлевому интерфейсу iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # - Разрешим передавать пакеты, относящиеся к уже установленным соединениям iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # - Разрешить входящий PING iptables -A INPUT -p icmp -j ACCEPT # - Разрешить все исходящие iptables -I OUTPUT 1 -j ACCEPT # - Доступ по SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT # - Разрешить доступ к WEB серверу iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # - Сохранить настройки service iptables save
Сохраняем и назначаем права на выполнение:
Посмотреть список правил iptables можно командой:
iptables --line-numbers -L -v -n
Установка Apache (httpd)
Для настройка Apache работы в связке с Nginx открываем конфигурационный файл:
mcedit /etc/httpd/conf/httpd.conf
Apache будет слушать порт 8080, так как на порту 80 будет работать Nginx.
Включение сервиса Apache в автозагрузку:
Проверка статуса сервиса Apache:
Открываем браузер и вводим в адресную строку IP-адрес или DNS имя сервера и добавляем :8080 (http://:8080). Должна откроется тестовая страница.
Установка Ngnix
Внесем небольшую корректировку в конфигурационный файл Ngnix:
В секцию http добавим строку:
server_names_hash_bucket_size 64;
На практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Включение сервиса Nginx в автозагрузку:
Проверка статуса сервиса Nginx:
Открываем браузер и вводим в адресную строку IP-адрес или DNS имя сервера (http://). Должна откроется страница приветствия.
Установка PHP
Remi имеет отдельный конфигурационный файл для каждой версии php, нужно включить нужную вам версию в конфигурационном файле, например на сервере будет установлена версия php 8.0, для этого включаем именно этот репозиторий в файле remi-php80.repo меняем значение на enabled=1.
Открываем файл remi-php80.repo:
mcedit /etc/yum.repos.d/remi-php80.repo
Меняем значение на enabled=1.
Устанавливаем PHP и php-fpm:
Просмотр установленной версии PHP:
Установка модулей расширений PHP (можно ставить только необходимые для работы):
Включение сервиса php-fpm в автозагрузку:
Проверка статуса сервиса php-fpm:
Открываем настройки php-fpm:
Меняем, настройки параметров для работы Apache с PHP в режиме FastCGI:
listen = /var/run/php-fpm/www.sock listen.backlog = 4096 listen.owner = apache listen.group = apache listen.mode = 0666
После перезагружаем php-fpm:
Создание сайта
В директории /var/www/html создаём первый каталог под веб-сайт, и называем его так же, как и доменное имя нашего сайта, чтобы не было путаницы, если сайтов будет несколько.
Создадим директорию для сайта:
mkdir -p /var/www/html/dev.mailns.local
Создаем новый конфигурационный файл виртуального домена Nginx:
mcedit /etc/nginx/conf.d/dev.mailns.local.conf
Создаем новый конфигурационный файл виртуального домена Apache:
mcedit /etc/httpd/conf.d/dev.mailns.local.conf
ServerName dev.mailns.local DocumentRoot /var/www/html/dev.mailns.local SetEnvIf X-Forwarded-Proto https HTTPS=on SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/" ErrorLog /var/log/httpd/dev.mailns.local.error.log CustomLog /var/log/httpd/dev.mailns.local.access.log commonOptions Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted
Для проверки, создадим файл index.php, с выводом информации о php.
echo '' > /var/www/html/dev.mailns.local/index.php
Назначаем владельца директории:
chown -R apache:apache /var/www/html/dev.mailns.local
Открываем браузер, и заходим по адресу нашего сайта. Открывается страница с информацией о php.
Установка MySQL
rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-6.noarch.rpm
При установке была ошибка:
Неудача получения ключа GPG:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"
Выполним импорт нового ключа:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install -y mysql-server
Включение сервиса mysql в автозагрузку:
Проверим статус сервиса mysql:
При установке mysqld генерирует временный пароль и сохраняет его в лог-файл /var/log/mysqld.log. Посмотреть пароль можно выполнив команду:
grep 'password' /var/log/mysqld.log
После завершения установки можно запустить встроенный сценарий безопасности MySQL, который изменяет некоторые опции по умолчанию и блокирует удалённый root-логин. Чтобы запустить сценарий, введите:
mysql_secure_installation
Программа запросит root-пароль, который вы получили при установке.
Введите новый пароль из 12 символов и подтвердите его. Пароль должен содержать минимум один специальный символ, одну цифру, одну букву верхнего и одну нижнего регистра.
Программа оценит ваш новый пароль и сообщит о его надёжности. После этого программа сразу предложит выбрать новый пароль. Поскольку вы выбрали его только что, не нужно этого делать.
После этого сценарий задаст вам ряд вопросов. Чтобы принять данные по умолчанию, можете просто нажать Y и Enter. Сценарий заблокирует анонимных пользователей и удалённый root логин, удалит тестовые таблицы и перезагрузит привилегии.