PHP to akronim od słów PHP: Hypertext Preprocessor, jest mechanizmem działającym po stronie serwera. W PHP można tworzyć strony internetowe generowane dynamicznie lub osadzać skrypty PHP bezpośrednio w kodzie HTML. PHP można zintegrować z komercyjnymi i nie komercyjnymi systemami zarządzania bazami danych. Domyślnie CentOS 7/RHEL 7 dostarcza PHP tylko w wersji 5.4. Artykuł wyjaśnia jak zainstalować PHP 7.2 w systemach CentOS 7 l RHEL 7.
Instalacja PHP w wersji 7.2
Włączamy repozytorium EPEL:
1 |
$ sudo yum -y install epel-release |
Włączamy repozytorium Remi remi-php72:
1 |
$ sudo yum-config-manager --enable remi-php72 |
Odświeżenie repozytorium:
1 |
$ sudo yum update |
Instalacja PHP w wersji 7.2:
1 |
$ sudo yum install php |
Instalacja repozytorium Remi:
1 |
$ sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm |
Instalacja pakietu yum-utils:
1 |
$ sudo yum -y install yum-utils |
Włączenie repozytorium remi repo:
1 2 |
$ sudo yum-config-manager --enable remi-php72 $ sudo yum update |
Sprawdzamy czy w repozytorium są dostępne pakiety związane z PHP 7.2:
1 2 |
$ sudo yum search php72 | more $ sudo yum search php72 | egrep 'fpm|gd|mysql|memcache' |
Finalnie instalujemy PHP 7.2:
1 |
$ sudo yum -y install php72 |
A dodatkowo:
1 |
$ sudo yum -y install php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache |
Instalacja PHP 7.2 w RHEL 7
1 2 3 4 5 6 7 8 |
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm $ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm $ sudo yum install yum-utils $ sudo subscription-manager repos --enable=rhel-7-server-optional-rpms $ sudo yum-config-manager --enable remi-php72 $ sudo yum update $ sudo yum search php72 | more $ sudo yum install php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache |
Sprawdzenie wersji PHP:
1 |
$ php --version |
Wylistowanie zainstalowanych modułów:
1 |
$ php72 --modules |
Włączenie usługi PHP fpm dla NGINX
Włączamy autostart php72-php-fpm :
1 |
$ sudo systemctl enable php72-php-fpm.service |
Włączamy usługę php72-php-fpm :
1 |
$ sudo systemctl start php72-php-fpm.service |
Instalacja NGINX:
1 |
$ sudo yum -y install nginx |
Sprawdzenie jakiego użytkownika i grupy używa NGINX:
1 2 |
$ egrep '^(user|group)' /etc/nginx/nginx.conf user nginx; |
Edycja pliku /etc/opt/remi/php72/php-fpm.d/www.conf
:
1 |
$ sudo vim /etc/opt/remi/php72/php-fpm.d/www.conf |
Ustawienie użytkownika i grupy na nginx:
user = nginx
group = nginx
Restart usługi php-fpm:
1 |
$ sudo systemctl restart php72-php-fpm.service |
Edycja konfigu NGINX:
1 |
$ sudo vim /etc/nginx/nginx.conf |
Po linii:
1 |
include /etc/nginx/conf.d/*.conf; |
dodajemy:
1 |
include /etc/nginx/sites-enabled/*; |
Komentujemy lub usuwamy linie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /usr/share/nginx/html; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } |
Zakładamy katalog na logi wirtualnego serwera domain.com:
1 |
$ sudo mkdir /var/log/nginx/domain.com/ |
W katalogu /etc/nginx zakładamy katalogi sites-available i sites-enabled:
1 2 |
$ sudo mkdir /etc/nginx/sites-available $ sudo mkdir /etc/nginx/sites-enabled |
Przykład konfigu /etc/nginx/sites-available/domain.com.vhost
serwera wirtualnego:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
server { listen *:80; server_name domain.com www.domain.com name.domain.com; root /home/domain.com/public_html; index index.html index.htm index.php index.cgi index.pl index.xhtml; error_log /var/log/nginx/domain.com/error.log; access_log /var/log/nginx/domain.com/access.log combined; # in root location location / { # look for index.php/index.html/index.htm as "index file" index index.php index.html index.htm; # this is specifically for wordpress # makes it possible to have url rewrites try_files $uri $uri/ /index.php?$args; } # default error pages # note that wp already catches most error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # here we have to let nginx know what to do with these php files # as html files are just send directly to the client location ~ \.php$ { # if the file is not there show a error : mynonexistingpage.php -> 404 try_files $uri =404; # pass to the php-fpm server fastcgi_pass 127.0.0.1:9000; # also for fastcgi try index.php fastcgi_index index.php; # some tweaking fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; include fastcgi_params; } } |
Po dodaniu pliku konfiguracyjnego dodajemy link symboliczny do konfigu serwera wirtualnego domain.com:
1 |
$ sudo ln -s /etc/nginx/sites-available/domain.com.vhost /etc/nginx/sites-enabled/domain.com.vhost |
Dodajmy jeszcze domyślny serwer wirtualny /etc/nginx/sites-available/default.vhost
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; # in root location location / { # look for index.php/index.html/index.htm as "index file" index index.php index.html index.htm; # this is specifically for wordpress # makes it possible to have url rewrites try_files $uri $uri/ /index.php?$args; } # default error pages # note that wp already catches most error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # here we have to let nginx know what to do with these php files # as html files are just send directly to the client location ~ \.php$ { # if the file is not there show a error : mynonexistingpage.php -> 404 try_files $uri =404; # pass to the php-fpm server fastcgi_pass 127.0.0.1:9000; # also for fastcgi try index.php fastcgi_index index.php; # some tweaking fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; include fastcgi_params; } } |
Link symboliczny:
1 |
$ sudo ln -s /etc/nginx/sites-available/default.vhost /etc/nginx/sites-enabled/default.vhost |
Restart NGINX-a:
1 |
$ sudo systemctl restart nginx |
Możemy utworzyć skrypt testowy foo.php:
1 |
$ sudo vim /var/www/html/foo.php |
O zawartości:
1 2 3 |
<?php phpinfo(); ?> |
Zapisujemy i zamykamy plik. W przeglądarce wpisujemy adres URL:
http://your-domain-name/foo.php
http://10.21.136.134/foo.php