PHP является одним из самых распространенных веб-языков, используемых сегодня. Установка стека LAMP в CentOS — это то, что каждый системный администратор должен выполнить, скорее всего раньше, чем позже.
Традиционный стек LAMP состоит из (L) inux (A) pache (M) ySQL (P) HP.
Существует три основных компонента стека LAMP на CentOS —
- Веб сервер
- Платформа веб-разработки / Язык
- Сервер базы данных
Примечание . Термин LAMP Stack также может включать следующие технологии: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.
В этом руководстве мы будем использовать традиционный LAMP-стек CentOS GNU Linux: веб-сервер Apache, сервер баз данных MySQL и PHP.
На самом деле мы будем использовать MariaDB. Конфигурационные файлы, базы данных и таблицы MySQL прозрачны для MariaDB. MariaDB теперь включен в стандартный репозиторий CentOS вместо MySQL. Это связано с ограничениями лицензирования и совместимости с открытым исходным кодом, поскольку Oracle взяла на себя разработку MySQL.
Первое, что нам нужно сделать, это установить Apache.
[root@CentOS]# yum install httpd Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 extras/7/x86_64/primary_d | 121 kB 00:00:00 Loading mirror speeds from cached hostfile * base: mirror.sigmanet.com * extras: linux.mirrors.es.net * updates: mirror.eboundhost.com Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed --> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64 --> Running transaction check ---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed --> Finished Dependency Resolution Installed: httpd.x86_64 0:2.4.6-45.el7.centos Dependency Installed: httpd-tools.x86_64 0:2.4.6-45.el7.centos mailcap.noarch 0:2.1.41-2.el7 Complete! [root@CentOS]#
Давайте настроим сервис httpd .
[root@CentOS]# systemctl start httpd && systemctl enable httpd
Теперь давайте удостоверимся, что веб-сервер доступен через firewalld.
bash-3.2# nmap -sS -p 1-1024 -T 5 -sV 10.211.55.1 Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST Nmap scan report for centos.shared (10.211.55.1) Host is up (0.00054s latency). Not shown: 1022 filtered ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.6 ((CentOS)) Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#
Как видно из теста службы nmap, веб-сервер Apache прослушивает и отвечает на запросы на хосте CentOS.
Установите MySQL Database Server
[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb- devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64
Мы устанавливаем следующие пакеты репозитория для MariaDB —
MariaDB-server.x86_64
Основной пакет демона сервера MariaDB.
MariaDB-devel.x86_64
Файлы должны компилироваться из исходного кода с совместимостью MySQL / MariaDB.
mariadb.x86_64
Клиентские утилиты MariaDB для администрирования Сервера MariaDB из командной строки.
MariaDB-libs.x86_64
Общие библиотеки для MariaDB, которые могут понадобиться для других приложений, скомпилированных с поддержкой MySQL / MariaDB.
Теперь давайте запустим и включим сервис MariaDB.
[root@CentOS]# systemctl start mariadb [root@CentOS]# systemctl enable mariadb
Примечание. В отличие от Apache, мы не будем разрешать подключения к MariaDB через наш межсетевой экран на основе хоста (firewalld). При использовании сервера базы данных рекомендуется использовать только локальные сокеты, если только удаленный доступ к сокету не требуется.
Давайте удостоверимся, что сервер MariaDB принимает соединения.
[root@CentOS#] netstat -lnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN [root@CentOS rdc]#
Как мы видим, MariaDB прослушивает порт 3306 tcp. Мы оставим наш брандмауэр на основе хоста (firewalld), блокирующий входящие соединения к порту 3306.
Установите и настройте PHP
[root@CentOS#] yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64 && php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64
Я бы порекомендовал установить следующие пакеты php для общей совместимости —
- PHP-common.x86_64
- PHP-mysql.x86_64
- PHP-mysqlnd.x86_64
- PHP-pdo.x86_64
- PHP-soap.x86_64
- PHP-xml.x86_64
[root@CentOS]# yum install -y php-common.x86_64 php-mysql.x86_64 php- mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64
Это наш простой php-файл, расположенный в руте Apache / var / www / html /
[root@CentOS]# cat /var/www/html/index.php <html> <head> <title>PHP Test Page</title> </head> <body> PHP Install <?php echo "We are now running PHP on GNU Centos Linux!<br />" ?> </body> </html> [root@CentOS]#
Давайте изменим группу-владельца нашей страницы на системного пользователя, под которым работает наш демон http.
[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php ---
При запросе вручную через ncat.
bash-3.2# ncat 10.211.55.1 80 GET / index.php HTTP/1.1 200 OK Date: Sat, 28 Jan 2017 12:06:02 GMT Server: Apache/2.4.6 (CentOS) PHP/5.4.16 X-Powered-By: PHP/5.4.16 Content-Length: 137 Connection: close Content-Type: text/html; charset=UTF-8 <html> <head> <title>PHP Test Page</title> </head> <body> PHP Install We are now running PHP on GNU Centos Linux!<br /> </body> </html> bash-3.2#
PHP и LAMP — очень популярные технологии веб-программирования. Установка и настройка LAMP обязательно войдет в список ваших потребностей в качестве администратора CentOS. Простые в использовании пакеты CentOS потребовали много усилий от компиляции Apache, MySQL и PHP из исходного кода.