В этой статье мы собираемся показать вам, как установить LAMP (Linux Apache, MariaDB и PHP) на CentOS 7.
Что такое LAMP?
LAMP на самом деле это аббревиатура для стека веб — сервисов, состоящее из Linux, Apache HTTP Server , MySQL или СУБД MariaDB, и PHP, Perl или Python. Все компоненты являются программным обеспечением со свободными и открытыми исходными кодами, которые подходит для создания динамических веб — страниц.
Как всегда, убедитесь, что ваш CentOS 7 полностью обновлен, используя следующие команды:
screen -U -S lamp-centos7 yum update
MariaDB является сервер базы данных по умолчанию в CentOS 7, так что идти вперед и установите ее с помощью следующей команды:
yum install mariadb mariadb-server mysql
После установки, добавьте bind-address = 127.0.0.1
в /etc/my.cnf.d/server.cnf
, чтобы связать MariaDB локально:
vim /etc/my.cnf.d/server.cnf [mysqld] #log-bin=mysql-bin #binlog_format=mixed bind-address = 127.0.0.1
Перезапустите сервер базы данных MariaDB и включите ее в автозапуск системы с помощью:
systemctl restart mariadb systemctl status mariadb systemctl enable mariadb
И, наконец, вы можете запустить скрипт mysql_secure_installation
после установки, чтобы закончить настройку MariaDB. Например:
mysql_secure_installation Enter current password for root (enter for none): ENTER Set root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Затем приступитtе к установке Apache, OpenSSL и mod_ssl с использованием yum
, так:
yum install httpd openssl mod_ssl
Перезапустите Apache и добавьте его для автоматического запуска на вашей системе с помощью:
systemctl restart httpd systemctl status httpd systemctl enable httpd
Проверьте настройку путем открытия, например, http: //ваш_ip_адрес_сервера/ в вашем браузере. Вы должны увидеть страницу Apache по умолчанию, например:
Отлично. Теперь давайте настроим некоторые дополнительные параметры Apache, например, скрыть свой номер версии, его баннер и т.п …, добавив следующее в /etc/httpd/conf.d/options.conf.
vim /etc/httpd/conf.d/options.conf TraceEnable off ## Disable Signature ServerSignature Off ## Disable Banner ServerTokens Prod
Тестирование конфигурационного файла Apache и перезапустить веб-сервер для того, чтобы изменения вступили в силу:
apachectl configtest systemctl restart httpd systemctl status httpd
Для того, чтобы иметь возможность работать веб — приложениям на основе PHP, мы должны добавить поддержку PHP для веб — сервера Apache, поэтому давайте установим некоторые необходимые пакеты с yum
:
yum install php php-mysql
Кроме того, вы можете установить некоторые другие расширения PHP, необходимые для ваших приложений. Вот список:
php-bcmath : модуль для PHP-приложений для использования библиотеки BCMath php-cli : Интерфейс командной строки для PHP php-common : Общие файлы для PHP php-dba : Модуль абстракции базы данных для PHP-приложений php-devel : Файлы, необходимые для построения расширений PHP php-embedded : PHP библиотека для встраивания в приложения php-enchant : расширение enchant правописания для PHP-приложений php-fpm : PHP FastCGI Process Manager php-gd : модуль для PHP-приложений для использования библиотеки графики gd php-intl : расширение для PHP интернационализации приложений php-ldap : модуль для PHP-приложений, которые используют LDAP php-mbstring : модуль для PHP-приложений, которые требуют обработки многобайтовых строк php-mysql : модуль для PHP-приложений, использующих базы данных MySQL php-mysqlnd : модуль для PHP-приложений, которые используют базы данных MySQL php-odbc : Модуль для PHP приложений, использующих базы данных ODBC php-pdo : Модуль абстракции доступа к базам данных для PHP-приложений php-pear.noarch : PHP Extension и Application Repository framework php-pecl-memcache : Расширение для работы с кэширования демона Memcached php-pgsql : Модуль базы данных PostgreSQL для PHP php-process : Модули для PHP скрипт с использованием интерфейсов системного процесса php-pspell : модуль для PHP-приложений для использования pspell интерфейсов php-recode : модуль для PHP-приложений для использования библиотеки перекодирования php-snmp : Модуль для PHP приложений, запрашивающих SNMP-управляемых устройств php-soap : Модуль для PHP-приложений, использующих протокол SOAP php-xml : модуль для PHP-приложений, использующих XML php-xmlrpc : модуль для PHP-приложений, использующих протокол XML-RPC
Хорошо, давайте продолжим с конфигурацией PHP. Отредактируйте файл /etc/php.ini
и установите следующие параметры :
vim /etc/php.ini
date.timezone = Europe/Moscow memory_limit = 64M expose_php = Off
перезапустите Apache, используя systemctl
для того, чтобы изменения вступили в силу:
systemctl restart httpd systemctl status httpd
Тестируем загрузку модуля PHP в Apache с помощью:
httpd -M | grep php also ## php -v
Вы можете создать тестовый скрипт info.php
, с помощью следующей команды:
echo -e "<?php\n\tphpinfo();" > /var/www/html/info.php
и получите доступ к нему с помощью следующей команды:
curl -I $(curl -s icanhazip.com)/info.php
Теперь вам придется настроить в Apache директивы Virtual Host, чтобы иметь возможность размещать несколько доменов, даже SSL, используя приведенные в действие один один IP — адрес. Таким образом, создайте файл /etc/httpd/conf.d/vhosts.conf
и добавьте следующее:
cat /etc/httpd/conf.d/vhosts.conf # Загрузка моих vhosts IncludeOptional vhosts.d/*.conf
Это говорит Apache, загрузить конфигурационные файлы, оканчивающиеся на .conf
которые находятся в /etc/httpd/vhosts.d
. Как вы может уже догадались, это место, где мы указываем наши виртуальные хосты, так что давайте настроим один для my_domain.com
и другой для my_domain2.ru
.
## cat /etc/httpd/vhosts.d/my_domain.com.conf <VirtualHost YOUR_SERVER_IP:80> ServerAdmin webmaster@my_domain.com DocumentRoot "/var/www/html/my_domain.com" ServerName my_domain.com ServerAlias www.my_domain.com ErrorLog "/var/log/httpd/my_domain.com-error_log" CustomLog "/var/log/httpd/my_domain.com-access_log" combined <Directory "/var/www/html/my_domain.com/"> DirectoryIndex index.html index.php Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
## cat /etc/httpd/vhosts.d/my_domain.net.conf <VirtualHost YOUR_SERVER_IP:80> ServerAdmin webmaster@my_domain.net DocumentRoot "/var/www/html/my_domain.net" ServerName my_domain.net ServerAlias www.my_domain.net ErrorLog "/var/log/httpd/my_domain.net-error_log" CustomLog "/var/log/httpd/my_domain.net-access_log" combined <Directory "/var/www/html/my_domain.net/"> DirectoryIndex index.html index.php Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
И, наконец, перезапустите Apache для того, чтобы изменения вступили в силу:
apachectl configtest systemctl restart httpd systemctl status httpd