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.