Установка Apache2 с PHP5 и MySQL + phpmyadmin для CentOS/RedHat/Fedora
Хочу рассказать как можно установить LAMP с поддержкой phpmyadmin на такие ОС как CentOS/RedHat или Fedora. Все необходимое приведено в статье «Установка Apache2 с PHP5 и MySQL + phpmyadmin для CentOS/RedHat/Fedora» и на готовых примерах покажу как это делается очень просто и с минимальными усилиями. Я недавно описывал данную установку но для Debian/Ubuntu и Mint, если нужно, то прочитайте и ознакомьтесь:
Установка Apache2 с PHP5 и MySQL + phpmyadmin для Debian/Ubuntu/Mint
Установка Web-сервера
Обновим ОС нашу и после чего установим веб сервер, апач:
# yum update # yum install httpd
Вся конфигурация в apache сохранена в файле под названием httpd.conf, я рекомендую вам создать резервную копию данного файла:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.origin
И все конфигурационные файлы апача будут лежать в /etc/httpd/conf.d/ и имеют розширение *.conf.
Установка поддержки сценариев (скриптов)
Следующие команды являются необязательными и должны быть запущены, если вы хотите иметь поддержку в Apache таких скриптов как PHP, Ruby, Python, или Perl.
Чтобы установить поддержку Ruby:
# yum install ruby
Чтобы установить поддержку Perl:
# yum install mod_perl
Чтобы установить поддержку Python:
# yum install mod_wsgi
Если вам нужна поддержка MySQL в Python, вы также должны установить поддержку Python MySQL:
# yum install MySQL-python
Настройка Virtualhosts
Теперь покажу как можно создать или настроить виртуальные хосты, чтобы можно было использовать несколько доменов (или субдоменов) на вашей VPS или выделенном сервере. Созданными доменами можно управлять с помощью различных пользователей или одного пользователя. Есть разные способы сделать это но я рекомендую именно как написано у меня. По дефолту, апач ведет прослушку всех IP-адресов, которые доступны виртуальному серверу. Но я должен исправить это и указать слушать только 1 ИП.
Начните с добавления следующей строки в файл конфигурации вашего виртуального хостинга:
# vim etc/httpd/conf.d/vhost.conf
[...] NameVirtualHost 203.75.34.45:80 [...]
Теперь необходимо будет создать виртуальные хосты для каждого сайта. Для примера я использую домены «linux-notes.org» и «windows-notes.org». Снова открываем файл vhost.conf (который открывали выше) и пропишем виртуальные хосты следующим образом:
<VirtualHost linux-notes.org:80> ServerAdmin mail@linux-notes.org ServerName linux-notes.org ServerAlias www.linux-notes.org DocumentRoot /srv/www/linux-notes.org/public_html/ ErrorLog /srv/www/linux-notes.org/logs/error.log CustomLog /srv/www/linux-notes.org/logs/access.log combined </VirtualHost> <VirtualHost windows-notes.org:80> ServerAdmin admin@windows-notes.org ServerName windows-notes.org ServerAlias www.windows-notes.org DocumentRoot /srv/www/windows-notes.org/public_html/ ErrorLog /srv/www/windows-notes.org/logs/error.log CustomLog /srv/www/windows-notes.org/logs/access.log combined </VirtualHost>
Примечание:
Каталог /srv/www для расположения файлов и скриптов для сайтов виртуального хостинга выбран для примера. При необходимости эти файлы можно расположить в других местах.
ErrorLog и CustomLog создаются для отслеживания ошибок и сбора статистики. Их создание не обязательно. Если они определены (как показано выше), каталоги должны быть созданы до перезагрузки Apache.
Так же нужно создать недостающие папки для наших сайтов и для хранение ошибок:
# mkdir -p /srv/www/linux-notes.org/public_html # mkdir -p /srv/www/linux-notes.org/logs # mkdir -p /srv/www/windows-notes.org/public_html # mkdir -p /srv/www/windows-notes.org/logs
После создания виртуальных хостов, нужно запустить сервер апач:
# /etc/init.d/httpd start
Так же, если установлен iptables, то стоит открыть 80-й порт или любой другой (если используете другой):
# system-config-securitylevel-tui --quiet --port=80:tcp
Я предполагаю, у вас уже имеется настроенные DNS для ваших доменов, и хостинг для вашего доменов должен заработать.
Для того, чтобы Apache запускался после следующего цикла перезагрузки, введите следующую команду:
# /sbin/chkconfig httpd on
или
# chkconfig httpd on
После любых изменений в файле vhost.conf, или в любом другом конфигурационном файле апач, не стоит делать перезагрузку веб-сервера:
# /etc/init.d/httpd reload
Установка дополнительных модулей для apache
Одним из главных достоинств Apache является его крайняя настраиваемость и гибкость. По умолчанию, модули расположены в /etc/httpd/modules/. Директивы конфигурации для модулей по умолчанию находятся в /etc/httpd/conf/httpd.conf, в то время как параметры конфигурации для дополнительных модулей, установленных с yum, как правило, размещены в *.conf файлов в /etc/httpd/conf.d/.
Чтобы убедиться, что модуль включен, смотрите в «конф» файлов для строк, начинающихся с LoadModule. Следующие две команды должны создать или вывести список доступных модулей:
# grep ^LoadModule /etc/httpd/conf/httpd.conf # grep ^LoadModule /etc/httpd/conf.d/*
Чтобы отключить существующий модуль (на свой страх и риск) отредактировать файл и закомментируйте LoadModule (например #).
Чтобы получить список доступных модулей Apache в репозитории CentOS используют следующие команды:
# yum search mod_
Вы можете установить один из этих модулей с помощью команды:
# yum install mod_[module-name]
Модули должны быть включены и готовы к использованию после установки, если вы, возможно, придется применить дополнительные параметры конфигурации, чтобы иметь доступ к функциональности модулей.
Понимание .htaccess конфигурации
Файл .htaccess является интерфейсом настройки Apache и многие веб-мастера и разработчики имеют самый большой опыт работы с ним. Ввод опции конфигурации в этих файлах позволит вам контролировать поведение сервера Apache в каждом каталоге. Это позволяет «заблокировать» каталог чтобы предотвратить общий доступ к ним.
Помните, что параметры, указанные в файле .htaccess применяются ко всем каталогам что находятся ниже. Кроме того, обратите внимание, что все параметры, указанные в файле .htaccess можно указать местоположение конфигурации на уровене выше. Если такая организация конфигурации желательно для вашей установки можно задать опции каталога уровня с помощью <Directory> блоки в каталоге виртуального сервера.
По умолчанию, файл httpd.conf ограничивается и не позволяют переопределения. Вам нужно будет настроить следующие строки:
# vim /etc/httpd/conf/httpd.conf
<Directory /srv/www> Options FollowSymLinks AllowOverride All </Directory>
Защита каталога паролем
В не веб доступной директории, нам нужно создать файл .htpasswd. Например, если корень документа для вашего виртуального хоста /srv/www/example.com/public_html/, использовать /srv/www/example.com/. Вход в этот каталог:
# cd /srv/www/example.com/
С помощью команды Htpasswd мы создадим новый ввод пароля для пользователя с именем cecil:
# htpasswd -c .htpasswd cecil
Обратите внимание, что можно указать альтернативное имя для файла паролей (например. .htpasswd), Что может быть разумным, если вы хотите сохранить ряд .htpasswd файлов для разных каталогов в том же месте.
Эти имена пользователей и пароли не нужны (и не должны) соответствовать системных имен пользователей и паролей. Кроме того, вы можете указать, как пароли шифруются / хэшируется с флагом «-m» для MD5, или «-s» для SHA-хэшей. Кроме того, обратите внимание, что при добавлении дополнительных пользователей для файла .htpasswd вы не должны использовать опцию «-c» (что создает новый файл).
В файле .htaccess для каталога, который вы хотите защитить, добавьте следующие строки:
# vim /путь_к_сайту_где_будет_блокироваться_доступ/.htaccess
AuthUserFile /srv/www/example.com/.htpasswd AuthType Basic AuthName "Advanced Choreographic Information" Require valid-user
Хочу отметить, что AuthName представлена пользователю в качестве объяснения в диалоге аутентификации для того, что они просят доступ к серверу.
Перепись адресов с mod_rewrite
Mod_rewrite engine очень мощный, и доступен для использования по умолчанию. Хотя возможности mod_rewrite далеко выходит за рамки данного раздела, я хочу предоставить краткое описание и некоторые случаи общего пользования.
В <Directory > блока или .htaccess файла, разрешите использование модуля mod_rewrite. Нужно сделать в виртуальном хосте самого апача или в .htaccess файле:
[...] RewriteEngine on [...]
Теперь, вы можете создать любое количество отдельных правил перезаписи. Эти правила обеспечивают шаблон, который сервер сравнивает все входящие запросы, и, если запрос соответствует образцу перезаписи, сервер обеспечивает альтернативную страницу. Вот правил переписывания. Нужно сделать в виртуальном хосте самого апача или в .htaccess файле:
[...] RewriteRule ^post-id/([0-9]+)$ /posts/$1.html [...]
Разберем это правило. Во-первых, обратите внимание, что первая строка шаблон для сопоставления с входящих запросов. Вторая строка определяет фактические файлы, которые будут поданы. patterns mod_rewrite используют синтаксис регулярных выражений: ^ соответствует началу строки, а $ совпадает с концом строки, это означает, что движок перезаписи не будет переписывать строки, которые частично соответствуют шаблону.
Строка в вопросе переписывает все адреса URL, которые определяют пути, которые начинаются с /post-id/ и содержат один или несколько номеров (например. [0-9] +), отбывает соответствующий .html файл в/posts/ каталоге. Термины в шаблоне указывают переменную, которая передается на второй строке, как $ 1, $ 2, $ 3 и так далее.
Есть много других возможностей для использования mod_rewrite, чтобы пользователи могли видеть и взаимодействовать с полезными адресами, сохраняя при этом структуру файлов, что имеет смысл с развитием или развертывания точки зрения.
Установка и конфигурирование MySQL
Думаю что не стоит объяснять что такое MySQL и для чего она нужна. Просто перейдем к установке.
Сейчас я установлю MySQL-сервера:
# yum install mysql-server
Добавлю данный сервис в автозагрузку мой ОС:
# /sbin/chkconfig mysqld on
Чтобы запустить MySQL:
# /etc/init.d/mysqld start
MySQL готов к использованию. Но можно внести некоторые изменения перед его запуском. Я не вижу смысла сейчас что либо править в файле конфигурации которая находится /etc/my.cnf.
После того как установили MySQL, крайне рекомендую использовать mysql_secure_installation, эта утилита поможет вам настроить безопасность в MySQL. В ходе настройки вас попросят изменить пароль MySQL для пользователя root, так же удалить учетные записи всех пользователей, а так же удалить тестовые БД:
# mysql_secure_installation
Далее, я покажу как можно создать БД, но для этого нужно войти в MySQL:
# mysql -u root -p
После входа, можно уже приступать к работе, а именно создания БД:
mysql> create database test_db; mysql> grant all on test_db.* to ’user_name’ identified by 'user_name_pass';
В данном примере, test_db — имя новой БД, user_name — это имя пользователя у которого пароль user_name_pass.
Чтобы выйти с MySQL нужно использовать следующую команду:
mysql> quit
Apache и MySQL установлены, теперь вы готовы перейти к установке PHP. Чтобы сбросить пароль в MYSQL прочитайте:
Сброс пароля root в MySQL
Установка и настройка PHP
PHP — это скриптовый язык программирования. И необходим для работы наших веб сайтов.
Чтобы установить PHP нужно выполнить:
# yum install php php-pear
После установки, необходимо настроить или поправить конфигурационный файл php.ini. Все что я внесу в данный файл, хватит вам для начала чтобы начать использовать PHP.
Открываем файл и начнем редактирование:
# vim /etc/php.ini
[...] error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR display_errors = Off log_errors = On error_log = /var/log/php.log max_execution_time = 300 memory_limit = 64M register_globals = Off [...]
Если вам нужна поддержка MySQL в PHP, то вы должны установить php5-MySQL пакет с помощью следующей команды:
# yum install php-mysql
Установка phpmyadmin
На этом данная тема «Установка Apache2 с PHP5 и MySQL + phpmyadmin для CentOS/RedHat/Fedora» завершена и сервер готов к использованию.