چگونه می‌توان نصب PHP 7.x را بر روی سرور لینوکس CentOS 8 به همراه Nginx انجام داد؟ نصب آخرین نسخه PHP 7.4 روی سرور CentOS Enterprise Linux 8 چگونه است؟ اینها سؤالاتی هستند که احتمالاً برای دانستن آنها به سراغ این مطلب آمده‌اید.

php یا پردازنده فرامتن یک زبان برنامه‌نویسی متن‌باز است که برای ساخت صفحات وب دینامیک به کار می‌رود. کدهای php بر روی سرورهای وب مانند Nginx،  Apache و … اجرا می‌شوند. در این مطلب قصد داریم که نحوه نصب PHP 7.x را بر روی سرور لینوکس CentOS 8 در کنار سرور Nginx به شما آموزش دهیم.

نصب PHP 7.x بر روی CentOS 8

۱) برنامه ترمینال را باز کنید و به سرور خارجی CentOS 8 لاگین کنید.

۲) باکس CentOS 8 را بروزرسانی کنید؛ برای این منظور، فرمان sudo yum update را اجرا نمایید.

۳) در جستجوی نسخه PHP، فرمان sudo yum search php را اجرا کنید.

۴) ابزار Remi’s repo را برای PHP 7.4 نصب کنید؛ برای این منظور باید از فرمان زیر کمک بگیرید:


sudo yum install yum-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

۵) نسخه <strong>7.2.11</strong> یا <strong>7.4</strong> از php و ماژول FastCGI را برای Nginx در CentOS 8 نصب کنید. برای این منظور فرمان زیر را اجرا نمایید:

sudo yum install php php-fpm;

۶) Nginx را به‌گونه‌ای تنظیم کنید که از php استفاده کند. ۷) با استفاده از فرمان <kbd><strong>sudo yum search php، </strong>ماژول‌های اضافی برای پشتیبانی از گرافیک و پایگاه داده نصب کنید.</kbd> ۸) سرور Nginx و php را فعال و دوباره راه‌اندازی نمایید. ۹) هر دو نصب php را تست کرده و بررسی نمایید. <h2><strong>بروزرسانی باکس CentOS 8</strong></h2> فرمان Yum زیر را اجرا کنید:

sudo yum update

اگر یک کرنل جدید نصب شده باشد، سیستم لینوکس را دوباره راه‌اندازی و ریبوت کنید؛


sudo reboot

<h2>تشخیص و جستجوی نسخه php</h2> برای یافتن نسخه php در سرور لینوکس CentOS اینترپرایز 8 به روش زیر عمل کنید:


-sudo yum search php

<img class=”wp-image-13017 aligncenter” src=”https://s3.me-central-1.amazonaws.com/s3.aws.ariaservice.online/app/uploads/2020/01/07144613/Search-PHP-version-on-CentOS-8-262×300.png” alt=”جستجوی نسخه php” width=”382″ height=”541″ /> ممکن است چند نسخه مختلف از php بر روی سیستم‌های شما نصب شده باشند. بررسی این موضوع می‌تواند با نوشتن فرمان زیر انجام شود:




sudo yum module list php



[php/]

نمونه خروجی:

[php]

<pre>Last metadata expiration check: 0:25:04 ago on Mon Dec 16 13:01:39 2019.
CentOS-8 - AppStream
Name             Stream             Profiles                              Summary                          
php              7.2 [d]            common [d], devel, minimal            PHP scripting language           

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

مثال زیر نشان می‌دهد که نسخه‌های 7.2، 7.3 و 7.4 برای نصب در دسترس هستند.

sudo yum module list php

نمونه خروجی:

</pre>
<pre>Last metadata expiration check: 0:00:05 ago on Mon Dec 16 13:28:05 2019.
CentOS-8 - AppStream
Name            Stream              Profiles                              Summary                          
php             7.2 <strong>[d]</strong>             common [d], devel, minimal            PHP scripting language           

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name            Stream              Profiles                              Summary                          
php             remi-7.2            common [d], devel, minimal            PHP scripting language           
php             remi-7.3            common [d], devel, minimal            PHP scripting language           
php             remi-7.4            common [d], devel, minimal            PHP scripting language           

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

به صورت پیش‌فرض، نسخه 7.2 نصب می‌شود که با علامت [d] مشخص می‌گردد.

یادداشتی بر فعالسازی نسخه‌های مختلف php از جمله 7.3 و 7.4 در CentOS

اکیداً توصیه می‌شود که از نسخه پیش‌فرض 7.2 از php برای تولید برنامه‌های تحت‌وب استفاده کنید. با این وجود اگر به نسخه‌های 7.3 یا 7.4 احتیاج داشتید، از فرمان‌های زیر کمک بگیرید. در نتیجه، ابزارهای Remi’s repo برای شما فعال می‌گردند.


sudo yum install yum-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

فعالسازی نسخه پیش‌فرض

نسخه پیش‌فرض php به 7.2  تنظیم و قفل شده است. امّا در همین حال، شما باید قادر باشید نسخه پیش‌فرض را به دلخواه خودتان تنظیم کنید. برای این منظور، فرمان‌های زیر را تایپ می‌کنید:


sudo yum module list php

sudo yum module reset php

sudo yum module enable php:remi-7.4

## verify it php set to 7.4 ##

sudo yum module list php

نحوه نصب php 7.4 بر روی CentOS 8 با استفاده از فرمان yum

اگر می‌خواهید نسخه 7.4 از php را بر روی لینوکس CentOS 8 نصب کنید، ابتدا بایستی ابزار Remi repo را فعال کنید و سپس با استفاده از yum، نسخه پیش‌فرض را انتخاب نمایید.

برای نسخه 7.3 از php، فرمان زیر را اجرا کنید:


sudo yum module list php

sudo yum module reset php

sudo yum module enable php:remi-7.3

## verify it php set to 7.3 ##

sudo yum module list php

نسخه php تنظیم شد؛ حالا وقت آن رسیده است که نصب PHP 7.x را بر روی سرور ابری CentOS 8 شروع کنید. برای این منظور، فرمان زیر را تایپ می‌کنید:


sudo yum install php php-fpm

اگر به هر دلیلی نمی‌خواهید سرور Apache را نصب کنید، فرمان زیر را تایپ نمایید:


sudo yum install php-fpm php-common php-cli

فعالسازی سرویس php-fpm

فرمان systemctl زیر را تایپ کنید:


sudo systemctl enable php-fpm.service

با فرمان زیر، سرویس php-fpm را راه‌اندازی کنید:


sudo systemctl start php-fpm.service

sudo systemctl status php-fpm.service

 

برای کسب اطلاعات بیشتر، نحوه راه‌اندازی، بارگذاری و شروع سرویس PHP-fpm را ببینید:


sudo systemctl stop php-fpm.service

sudo systemctl restart php-fpm.service

 

چگونه php را برای کار با سرور Nginx تنظیم کنیم؟

ابتدا باید از فرمان cat، تنظیمات سرور PHP-FPM FastCGI را پیدا کنید:


cat /etc/nginx/conf.d/php-fpm.conf

 

مطمئن شوید که سوکت یونیکس فعال است و کار می‌کند. برای این منظور داریم:


ls -l /run/php-fpm/www.sock

تنظیمات نمونه php-fpm برای CentOS 8 با سرور  Nginx


cat /etc/nginx/default.d/php.conf





index index.php index.html index.htm;



location ~ \.php$ {

    try_files $uri =404;

    fastcgi_intercept_errors on;

    fastcgi_index  index.php;

    include        fastcgi_params;

    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

    fastcgi_pass   php-fpm;

}

 

راه‌اندازی دوباره سرویس یا سرور nginx

دوباره فرمان زیر را اجرا کنید:


sudo systemctl restart nginx.service

 

نسخه php را با فرمان زیر بررسی نمایید:


php –version

 

 


PHP 7.4.0 (cli) (built: Nov 26 2019 20:13:36) ( NTS )

Copyright (c) The PHP Group

Zend Engine v3.4.0, Copyright (c) Zend Technologies

تست و بررسی اجرای مناسب PHP 7.x در CentOS 8 همراه با سرور Nginx

یک فایل جدید به صورت زیر ایجاد کنید:


sudo vi /usr/share/nginx/html/hello.php

کد php زیر را اضافه کنید:

<?php
	echo "Hello, world!\n";
?>

فایل را ذخیره کرده و در vim ببندید. سپس آن را به صورت زیر با فرمان curl اجرا نمایید:


curl -I http://localhost/hello.php

curl http://localhost/hello.php<br data-mce-bogus="1">

مثال برنامه demo.php

در مرحله بعد، به صورت زیر یک فایل جدید ایجاد کنید.


sudo vi /usr/share/nginx/html/demo.php

و کد زیر را هم ضمیمه کنید:

<?php phpinfo(); ?>

فایل را ذخیره کنید و ببندید. یک مرورگر وب اجرا کنید و آدرس زیر را در آن تایپ نمایید:


http://your-domain-OR-ip/hello.php

http://192.168.2.254/hello.php

http://192.168.2.254/demo.php<br data-mce-bogus="1">

چگونه ماژول‌های بیشتری برای php نصب کنیم؟

می‌توانید به صورت زیر ماژول‌ها را جستجو کرده و نصب نمایید:


sudo yum search php-

sudo yum search php- | grep mysql

sudo yum search php74- ## for version 7.2 ##

sudo yum search php74- ## for version 7.3 ##

sudo yum search php74- ## for version 7.4 ##

 


======================== Summary & Name Matched: php74- ========================

php74-php-zephir-parser-devel.x86_64 : php74-php-zephir-parser developer files

============================= Name Matched: php74- =============================

php74-php.x86_64 : PHP scripting language for creating dynamic web sites

php74-build.x86_64 : Package shipping basic build configuration

php74-php-gd.x86_64 : A module for PHP applications for using the gd graphics

php74-xhprof.noarch : A Hierarchical Profiler for PHP - Web interface

php74-zephir.noarch : Zephir language for creation of extensions for PHP.

php74-php-ast.x86_64 : Abstract Syntax Tree

php74-php-cli.x86_64 : Command-line interface for PHP

php74-php-dba.x86_64 : A database abstraction layer module for PHP applications

php74-php-dbg.x86_64 : The interactive PHP debugger

php74-php-ffi.x86_64 : Foreign Function Interface

php74-php-fpm.x86_64 : PHP FastCGI Process Manager

php74-php-gmp.x86_64 : A module for PHP applications for using the GNU MP

php74-php-lz4.x86_64 : LZ4 Extension for PHP

php74-php-pdo.x86_64 : A database access abstraction module for PHP applications

php74-php-xml.x86_64 : A module for PHP applications which use XML

php74-runtime.x86_64 : Package that handles php74 Software Collection.

php74-php-imap.x86_64 : A module for PHP applications that use IMAP

php74-php-intl.x86_64 : Internationalization extension for PHP applications

php74-php-json.x86_64 : JavaScript Object Notation extension for PHP

php74-php-ldap.x86_64 : A module for PHP applications that use LDAP

php74-php-oci8.x86_64 : A module for PHP applications that use OCI8 databases

php74-php-odbc.x86_64 : A module for PHP applications that use ODBC databases

php74-php-pear.noarch : PHP Extension and Application Repository framework

php74-php-pggi.x86_64 : GTK bindings

php74-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed

php74-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol

php74-php-tidy.x86_64 : Standard PHP module provides tidy library support

php74-php-zstd.x86_64 : Zstd Extension for PHP

php74-scldevel.x86_64 : Package shipping development files for php74

php74-unit-php.x86_64 : PHP module for NGINX Unit

php74-php-devel.x86_64 : Files needed for building PHP extensions

php74-php-pgsql.x86_64 : A PostgreSQL database module for PHP

php74-php-pinba.x86_64 : Client extension for Pinba statistics server

php74-php-bcmath.x86_64 : A module for PHP applications for using the bcmath

php74-php-brotli.x86_64 : Brotli Extension for PHP

php74-php-common.x86_64 : Common files for PHP

php74-php-pspell.x86_64 : A module for PHP applications for using pspell

php74-php-recode.x86_64 : A module for PHP applications for using the recode

php74-php-snappy.x86_64 : Snappy Extension for PHP

php74-php-sodium.x86_64 : Wrapper for the Sodium cryptographic library

php74-php-sqlsrv.x86_64 : Microsoft Drivers for PHP for SQL Server

php74-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC

php74-php-enchant.x86_64 : Enchant spelling extension for PHP applications

php74-php-libvirt.x86_64 : PHP language binding for Libvirt

php74-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL

php74-php-opcache.x86_64 : The Zend OPcache

php74-php-process.x86_64 : Modules for PHP script using system process

php74-php-embedded.x86_64 : PHP library for embedding in applications

php74-php-mbstring.x86_64 : A module for PHP applications which need multi-byte

php74-php-phalcon4.x86_64 : Phalcon Framework

php74-php-componere.x86_64 : Composing PHP classes at runtime

php74-php-litespeed.x86_64 : LiteSpeed Web Server PHP support

php74-php-maxminddb.x86_64 : MaxMind DB Reader extension

php74-php-pdo-dblib.x86_64 : PDO driver for Microsoft SQL Server and Sybase

php74-php-phpiredis.x86_64 : Client extension for Redis

php74-php-smbclient.x86_64 : PHP wrapper for libsmbclient

php74-php-wkhtmltox.x86_64 : HTML Converter

php74-php-libvirt-doc.noarch : Document of php-libvirt

php74-php-snuffleupagus.x86_64 : Security module for PHP

php74-php-zephir-parser.x86_64 : Zephir parser extension

php74-php-horde-horde-lz4.x86_64 : Horde LZ4 Compression Extension

نصب ماژول‌های php 7.x در CentOS 8

برای نمونه، برای نصب پشتیبانی گرافیکی و پایگاه داده می‌نویسیم:


sudo yum install php-mysqlnd php-gd

نصب‌های رایج وردپرس بر روی CentOS 8 نیازمند افزونه‌ها یا ماژول‌های php زیر خواهند بود:


sudo yum install php-mysqlnd php-gd php-pecl-zip php-mbstring php-xml php-opcache php-pecl-imagick

نحوه انجام تنظیمات در php 7.x

هر زمان که نیاز باشد، باید فایل‌های زیر را ویرایش کنید:

    /etc/php.ini

فایل مربوط به نصب و تنظیمات php؛ به این فایل نباید دست بزنید! به جای آن، در دایرکتوری /etc/php.d/ یک فایل custom.ini بسازید.

    /etc/php-fpm.conf

فایل تنظیمات Gloable FPM (FastCGI)

/etc/php-fpm.d/www.conf

فایل تنظیمات FastCGI (FPM) www pool

/etc/php.d/

فایل تنظیمات ماژول‌های php

جمع‌بندی

به این ترتیب است که شما php را در CentOS 8 نصب و اجرا خواهید کرد. این در حالی است که به صورت پیش‌فرض، نسخه 7.2 از php بر روی لینوکس CentOS 8 نصب می‌شود. با این وجود، توسعه‌دهنده یا sysadmin می‌تواند آخرین نسخه php مانند 7.4 را با استفاده از منبع Remi نصب کند و در سرور لینوکس CentOS اینترپرایز استفاده نماید.