Skonfiguruj PHP w CentOS Linux

PHP jest obecnie jednym z najbardziej rozpowszechnionych języków internetowych. Instalowanie stosu LAMP na CentOS jest czymś, co każdy administrator systemu będzie musiał wykonać, najprawdopodobniej wcześniej niż później.

Tradycyjny stos LAMP składa się z (L) inux (A) pache (M) ySQL (P) HP.

Istnieją trzy główne składniki stosu LAMP w CentOS -

  • Serwer internetowy
  • Platforma / język programowania sieci Web
  • Serwer bazy danych

Note- Termin LAMP Stack może również obejmować następujące technologie: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.

W tym samouczku będziemy trzymać się tradycyjnego stosu LAMP systemu CentOS GNU Linux: serwer WWW Apache, serwer bazy danych MySQL i PHP.

W rzeczywistości będziemy używać MariaDB. Pliki konfiguracyjne MySQL, bazy danych i tabele są przezroczyste dla MariaDB. MariaDB jest teraz dołączona do standardowego repozytorium CentOS zamiast MySQL. Wynika to z ograniczeń licencjonowania i zgodności z otwartym kodem źródłowym, odkąd Oracle przejął rozwój MySQL.

Pierwszą rzeczą, którą musimy zrobić, jest zainstalowanie 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]#

Skonfigurujmy usługę httpd .

[root@CentOS]# systemctl start httpd && systemctl enable httpd

Teraz upewnijmy się, że serwer WWW jest dostępny przez 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#

Jak widać z sondy usługi nmap, serwer WWW Apache nasłuchuje i odpowiada na żądania na hoście CentOS.

Zainstaluj serwer bazy danych MySQL

[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64

Instalujemy następujące pakiety repozytorium dla MariaDB -

mariadb-server.x86_64

Główny pakiet demona MariaDB Server.

mariadb-devel.x86_64

Pliki muszą zostać skompilowane ze źródła z kompatybilnością MySQL / MariaDB.

mariadb.x86_64

Narzędzia klienckie MariaDB do administrowania serwerem MariaDB z wiersza poleceń.

mariadb-libs.x86_64

Biblioteki wspólne dla MariaDB, które mogą być potrzebne dla innych aplikacji skompilowanych z obsługą MySQL / MariaDB.

Teraz zacznijmy i włączmy usługę MariaDB.

[root@CentOS]# systemctl start mariadb 
[root@CentOS]# systemctl enable  mariadb

Note- W przeciwieństwie do Apache, nie umożliwiamy połączeń z MariaDB przez nasz firewall oparty na hoście (firewalld). W przypadku korzystania z serwera bazy danych za najlepszą praktykę w zakresie bezpieczeństwa uważa się zezwalanie tylko na połączenia lokalne za pomocą gniazda, chyba że zdalny dostęp do gniazda jest szczególnie potrzebny.

Upewnijmy się, że MariaDB Server akceptuje połączenia.

[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]#

Jak widać, MariaDB nasłuchuje na porcie 3306 tcp. Zostawimy nasz firewall oparty na hoście (firewalld) blokujący połączenia przychodzące do portu 3306.

Zainstaluj i skonfiguruj 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

Zalecam zainstalowanie następujących pakietów PHP w celu zapewnienia wspólnej kompatybilności -

  • 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

To jest nasz prosty plik php znajdujący się w katalogu głównym Apache w katalogu / 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]#

Zmieńmy grupę będącą właścicielem naszej strony na użytkownika systemowego, pod którym działa nasz demon http.

[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php
---

Na żądanie ręcznie przez 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 i LAMP to bardzo popularne technologie programowania internetowego. Instalacja i konfiguracja LAMP z pewnością znajdzie się na liście Twoich potrzeb jako Administrator CentOS. Łatwe w użyciu pakiety CentOS pochłonęły dużo pracy przy kompilacji Apache, MySQL i PHP z kodu źródłowego.