16 KiB
بسم الله الرحمن الرحیم
نحوه نصب PHP 8.2 روی Ubuntu 22.04|20.04|18.04
گام اول: به روزرسانی سیستم اوبونتو
به روز رسانیها را بررسی کنید و قبل از انجام هر اقدام دیگری آنها را نصب کنید.
sudo apt update && sudo apt -y upgrade
پس از ارتقا، کش APT را پاک کنید.
sudo apt autoremove
درخط فرمان دستور زیر را اجرا کنید، این دستور بررسی می کند که آیا نیاز به راه اندازی مجدد است یا خیر و مطابق با آن عمل می کند.
[ -f /var/run/reboot-required ] && sudo reboot -f
جزئیات انتشار سیستم عامل را می توان با استفاده از دستورات داده شده در اینجا بررسی کرد.
cat /etc/os-release
خروجی دستور بالا:
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
گام دوم: مخزن Surý PHP APT را اضافه کنید
برای نصب بسته های PHP 8.2 روی اوبونتو از Ondřej Surýs PHP PPA استفاده کنید که آخرین نسخه های پایدار PHP را برای سیستم های اوبونتو و Debian است.
* برای اوبونتو 18.04 این مخزن حاوی بسته های PHP 8.2 نیست. راهنمای ما در مورد ساختن از منبع را از پیوند زیر بررسی کنید
Build and Install PHP 8,7 on Ubuntu 18.04 (Bionic Beaver)
قبل از افزودن مخزن، چند بسته وابسته را نصب کنید.
sudo apt update
sudo apt install -y lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common
دستورات زیر را در خط فرمان اجرا کنید تا Surý PPA را به سیستم خود اضافه کنید.
sudo add-apt-repository ppa:ondrej/php
اجرای موفقیت آمیز دستور
PPA publishes dbgsym, you may need to include 'main/debug' component
Repository: 'deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main'
Description:
Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.
Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa
You can get more information about the packages at https://deb.sury.org
IMPORTANT: The -backports is now required on older Ubuntu releases.
BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting
CAVEATS:
1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman
2. If you are using apache2, you are advised to add ppa:ondrej/apache2
3. If you are using nginx, you are advised to add ppa:ondrej/nginx-mainline
or ppa:ondrej/nginx
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.
org/
WARNING: add-apt-repository is broken with non-UTF-8 locales, see
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
More info: https://launchpad.net/~ondrej/+archive/ubuntu/php
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Adding deb entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list
Adding key to /etc/apt/trusted.gpg.d/ondrej-ubuntu-php.gpg with fingerprint 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C
Hit:1 https://mirror.hetzner.com/ubuntu/packages jammy InRelease
Hit:2 https://mirror.hetzner.com/ubuntu/packages jammy-updates InRelease
Hit:3 https://mirror.hetzner.com/ubuntu/packages jammy-backports InRelease
Hit:4 https://mirror.hetzner.com/ubuntu/security jammy-security InRelease
Get:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease [23.9 kB]
Get:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 Packages [108 kB]
Get:7 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main Translation-en [33.3 kB]
Fetched 166 kB in 1s (120 kB/s)
Reading package lists... Done
با اجرای دستور زیر می توانید به صورت دستی تأیید کنید که مخزن کار می کند.
sudo apt update
خروجی دستور بالا:
Hit:1 https://mirror.hetzner.com/ubuntu/packages jammy InRelease
Hit:2 https://mirror.hetzner.com/ubuntu/packages jammy-updates InRelease
Hit:3 https://mirror.hetzner.com/ubuntu/packages jammy-backports InRelease
Hit:4 https://mirror.hetzner.com/ubuntu/security jammy-security InRelease
Hit:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
گام سوم: نصب PHP 8.2 روی Ubuntu
هنگامی که PPA اضافه شد، از دستور apt برای نصب PHP 8.2 و سایر ماژول های PHP مرتبط روی سرور اوبونتو استفاده کنید.
sudo apt install php8.2
خروجی دستور بالا:
The following additional packages will be installed:
apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap liblua5.3-0 mailcap mime-support php-common
php8.2-cli php8.2-common php8.2-opcache php8.2-readline ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser bzip2-doc php-pear
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
libaprutil1-ldap liblua5.3-0 mailcap mime-support php-common php8.2
php8.2-cli php8.2-common php8.2-opcache php8.2-readline ssl-cert
0 upgraded, 21 newly installed, 0 to remove and 2 not upgraded.
Need to get 6,990 kB of archives.
After this operation, 29.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
نصب بسته را طبق درخواست با کلید Y بپذیرید.
برای بررسی نسخه PHP که در حال حاضر روی سیستم نصب شده است دستور زیر را اجرا کنید:
php -v
یا دستور:
php --version
خروجی:
PHP 8.2.7 (cli) (built: Jun 8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
گام چهارم: نصب ماژولهای PHP 8.2
ماژول های PHP کتابخانه های نرم افزاری هستند که برای افزودن قابلیت به PHP ایجاد شده اند. این ماژولها معمولاً به زبان C نوشته می شوند و می توانید به صورت پویا در PHP بارگذاری کنید یا به عنوان اشیاء مشترک کامپایل کنید.
اگر میخواهید ماژولهای PHP 8.2 را روی سیستم اوبونتو نصب کنید، از apt package manager با دستور داده شده در اینجا استفاده کنید:
sudo apt install -y php8.2-<module-name>
جایی که با نام واقعی ماژولی که قرار است نصب شود جایگزین می شود.
در این مثال ما ماژول PHP 8.2 fpm را از PPA که قبلا اضافه شده بود نصب می کنیم.
sudo apt install php8.2-fpm
خروجی دستور بالا:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
php-pear
The following NEW packages will be installed:
php8.2-fpm
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 1,886 kB of archives.
After this operation, 5,756 kB of additional disk space will be used.
Get:1 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.2-fpm amd64 8.2.1-2+ubuntu22.04.1+deb.sury.org+1
[1,886 kB]
Fetched 1,886 kB in 0s (5,211 kB/s)
Selecting previously unselected package php8.2-fpm.
(Reading database ... 56412 files and directories currently installed.)
Preparing to unpack .../php8.2-fpm_8.2.1-2+ubuntu22.04.1+deb.sury.org+1_amd64.deb ...
Unpacking php8.2-fpm (8.2.1-2+ubuntu22.04.1+deb.sury.org+1) ...
Setting up php8.2-fpm (8.2.1-2+ubuntu22.04.1+deb.sury.org+1) ...
....
:نصب ماژول های پرکاربرد
sudo apt install php8.2-{bcmath,fpm,xml,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi}
:ماژول های نصب شده را می توان با دستور زیر فهرست کرد
php -m
خروجی:
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pgsql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
گام پنجم: استفاده از PHP با Nginx / Apache
ما هر دو پیکربندی وب سرور انجینکس و آپاچی را برای میزبانی برنامه پی-اچ-پی شما در نظر خواهیم گرفت.
میزبانی برنامه PHP با وب سرور Nginx
با Nginx، کد PHP معمولاً توسط یک فرآیند جداگانه مانند PHP-FPM (مدیر فرآیند FastCGI) اجرا می شود. PHP-FPM دیمونی است که به درخواست های دریافتی PHP گوش می دهد و آنها را در یک فرآیند جداگانه اجرا می کند. Nginx فقط درخواست های دریافتی را به PHP-FPM ارسال می کند که در آنجا اجرا می شوند.
وب سرور Nginx و extension FPM را نصب کنید.
sudo apt install nginx php8.2-fpm
پیکربندی سرور Nginx خود را باز کنید و بلوک زیر را داخل بلوک http اضافه کنید تا درخواستهای PHP را برای اجرا توسط PHP-FPM پیکربندی کنید:
sudo nano /etc/nginx/nginx.conf
در فایل باز شده متن زیر را قرار دهید
server {
listen 80;
server_name mysite.example.com;
root /var/www/mysite;
index index.php index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
}
برای ذخیره ی فایل کلید ترکیبی ctrl+ O را بزنید.
برای خروج از فایل و برگشتن به خط فرمان کلید ترکیبی ctrl + X را بزنید.
اعتبار سنجی پیکربندی انجینکس با دستور زیر انجام می گیرد:
sudo nginx -t
خروجی دستور فوق:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
نشان دهنده درستی پیکربندی است. "ok" , "successful"
میزبانی برنامه پی-اچ-پی با وب سرور آپاچی
در آپاچی می توانیم از یک ماژول داخلی به نام mod_php برای پردازش کدهای PHP به طور مستقیم در فرآیند آپاچی استفاده کنیم.
اما ابتدا باید بسته وب سرور آپاچی، PHP و پسوند Apache PHP را نصب کنید:
sudo apt install apache2 libapache2-mod-php8.2
اگر دستور فوق جواب نداد به جای آن دستور زیر را اجرا کنید:
sudo apt install apache2 php8.2-fpm
ماژول mod_php فعالسازی:
sudo a2enmod php8.2
برای نمایش آزمایشی
خط فرمان را باز کنید و دستورات زیر را اجرا کنید:.
cd /var/www/
/var/www$ ls
خروجی:
html
اگر پوشه ی html وجود نداشت با دستور زیر این پوشه را ایجاد کنید:
sudo mkdir html
سپس فایل آزمایشی را ایجاد کنید:
cd html/
sudo nano testPHP.php
در فایل باز شده متن زیر را قرار دهید
<?php
phpinfo();
?>
با کلید ترکیبی Ctrl+O تغییرات را ذخیره کنید و با کلید ترکیبی Ctrl+X از فایل خارج شوید.
بعد از پیکربندی سرویس آپاچی را دوباره راه اندازی کنید:
sudo systemctl restart apache2
از URL صفحه وب بازدید کنید:
http://localhost/testPHP.php
صلوات