Учебники

Настройте PHP в CentOS Linux

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 из исходного кода.