Leon1010

Я в Соц.сетях:

Теги:

Ссылки

Установка и настройка Apache, PHP, MySQL на CentOS (+ PMA и FTP)

И так, к нам в руки попал новый сервер с только что установленной CentOS.

Задача — сделать из него полноценный веб сервер.

Все действия мы выполняем из под пользователя root.

1. Обновляем систему.

#yum update

2. Устанавливаем любимые редакторы.

Лично я люблю пользоваться mcedit, который встроен в Midnight Commander,  по этому его и ставлю:

#yum -y install mc

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 переносим в самый конец файла.
А перед ней добавляем главный виртуалхост:

<VirtualHost *:80>
ServerName 127.0.0.1
ServerAdmin webmaster@server.ru
DocumentRoot /var/www/html
</VirtualHost>

Ещё советую закомментировать строку # 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 '<h1>It Works!</h1>' > /var/www/html/index.html

Проверяем результат, открыв в браузере с другой машины IP-адрес сервера:

http://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:

# echo '<?php phpinfo(); ?>' > /var/www/html/inf.php

Смотрим по адресу http://IP-адрес_сервера/inf.php
Если информация отобразилась, продолжаем дальше.

6. Устанавливаем MySQL или MariaDB.

В связи с тем, что MariaDB набирает все большую популярность за свои выдающиеся характеристики и полную совместимость с mysql приложениями, рассмотрим оба варианта:

  • Ставим MySQL

    #yum -y install mysql mysql-server

    Прописываем MySQL в автозапуск:
    CentOS 6: #chkconfig mysqld on
    CentOS 7: #systemctl enable mysqld

    Запускаем MySQL:
    CentOS 6: #service mysqld start
    CentOS 7: #systemctl start mysqld

    Устанавливаем root пароль MySQL:
    #mysqladmin -u root password 'new-password'
    Где new-password — ваш новый root пароль для MySQL.

  • Или ставим MariaDB

    #yum install -y mariadb-server mariadb

    Прописываем MariaDB в автозапуск:
    CentOS 6: #chkconfig mysql on
    CentOS 7: #systemctl enable mysql

    Запускаем MariaDB:
    CentOS 6: #service mysql start
    CentOS 7: #systemctl start mysql

    Затем нужно запустить простой скрипт безопасной установки, который удалит некоторые опасные настройки по умолчанию и усложнит доступ к системе базы данных. Запустите интерактивный скрипт:
    #mysql_secure_installation
    Система спросит текущий root-пароль. Но поскольку система MySQL только что установлена, такого пароля пока что нет, потому просто нажмите enter. Затем вас спросят, хотите ли вы установит пароль, введите Y и следуйте инструкциям.
    На все остальные вопросы просто нажмите enter.

Подключаем и проверяем

Устанавливаем модуль php для работы с БД
#yum -y install php-mysql

Проверяем MySQL (или MariaDB):
Создаём и редактируем проверочный фаил mysqltest.php
#mcedit /var/www/html/mysqltest.php
Копируем в него следующий код:

<?php
ini_set('display_errors', 1); //включаем вывод ошибок на страницу
$dblocation = "localhost"; //хост бд (не меняем)
$dbname = "mysql"; //база данных, которая создается по умолчанию при установке
$dbuser = "root"; //имя пользователя БД
$dbpasswd = "ваш пароль"; //Ваш root пароль от БД 

$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx){
    echo "<p>К сожалению, не доступен сервер mySQL</p>";
    exit();
}
if (!@mysql_select_db($dbname,$dbcnx)){
    echo "<p>К сожалению, не доступна база данных</p>";
    exit();
}
$ver = mysql_query("SELECT VERSION()");
if(!$ver){
    echo "<p>Ошибка в запросе</p>";
    exit();
}
echo mysql_result($ver, 0);
?>

Сохраняем. Проверяем:
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:

<VirtualHost *:80>
	ServerName site1.ru
	ServerAlias www.site1.ru
	DocumentRoot /home/site1.ru/www
	<Directory /home/site1.ru/www>
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
	#лог ошибок
	ErrorLog /home/site1.ru/logs/error.log
	#
	#лог обращений выключен по умолчанию, для включения уберите #
	#CustomLog /home/site1.ru/logs/access.log common
	#
	# php safety options
	#
	php_admin_flag register_globals 1
	php_admin_value date.timezone 'Europe/Moscow'
	php_admin_value open_basedir /home/site1.ru
	php_admin_value max_execution_time 60
	php_admin_value upload_max_filesize 50M
	php_admin_value upload_tmp_dir /home/site1.ru/tmp
	php_admin_value session.save_path /home/site1.ru/tmp
</VirtualHost>

Такой-же фаил надо создать для каждого сайта из директории /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/

Дополнительно читаем: Тонкая настройка PhpMyAdmin

9. Установка и настройка FTP клиента

Лично мне нравится использовать ProFTPD.
Как его установить и настроить на CentOS читаем тут — Установка и настройка ProFTPD на CentOS.

Запись опубликована в рубрике Администрирование с метками , , , , , .