
نحوه نصب PHP و PHP-FPM در اوبونتو ۲۴.۰۴ #
مقدمه #
PHP (پیشپردازنده فرامتن) یک زبان برنامهنویسی سمت سرور محبوب است که امکان توسعه برنامههای وب پویا را فراهم میکند. PHP-FPM (مدیر فرآیند FastCGI) ویژگیهای اضافی و عملکرد بهبود یافتهای را نسبت به روشهای سنتی مبتنی بر CGI ارائه میدهد تا امکان اتصال PHP با سایر برنامهها مانند سرورهای وب را برای پردازش درخواستهای برنامههای وب پویا فراهم کند.
این مقاله نحوه نصب PHP و PHP-FPM را در اوبونتو ۲۴.۰۴ و راهاندازی یک محیط PHP کارآمد برای ایجاد برنامههای وب پویا روی سرور توضیح میدهد.
پیش نیازها #
قبل از شروع:
- یک سرور مجازی ubuntu
- دسترسی SSH به سرور
- دسترسی یوزر اصلی root
- بروز رسانی سرور
نصب پی اچ پی #
PHP در مخازن پیشفرض APT در اوبونتو ۲۴.۰۴ به همراه آخرین اطلاعات بسته موجود است. برای بهروزرسانی بستههای سرور و نصب آخرین نسخه PHP روی سرور خود، مراحل زیر را دنبال کنید.
- فهرست بستههای سرور را بهروزرسانی کنید.کنسول
$ sudo apt update - پی اچ پی را نصب کنید.کنسول
$ sudo apt install php -y - نسخه PHP نصب شده روی سرور خود را مشاهده کنید.کنسول
$ php -vخروجی شما باید مشابه تصویر زیر باشد:
PHP 8.3.6 (cli) (built: Apr 15 2024 19:21:47) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.6, Copyright (c) Zend Technologies with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
نصب افزونههای PHP #
افزونههای PHP قابلیتهای اضافی PHP مانند ادغام پایگاه داده، فرمتهای فایل اضافی و رمزگذاری مورد نیاز اکثر برنامهها و چارچوبهای PHP را روی سرور شما فعال میکنند. برای نصب افزونههای رایج PHP و فعال کردن قابلیتهای پردازش اضافی روی سرور خود، مراحل زیر را دنبال کنید.
- افزونههای رایج PHP را نصب کنید.کنسول
$ sudo apt install -y php-mysql php-mbstring php-bcmath php-zip php-gd php-curl php-xmlدستور بالا افزونههای PHP زیر را نصب میکند:
- php-mysql : برنامههای PHP را قادر میسازد تا به پایگاههای داده MySQL متصل شده و با آنها تعامل داشته باشند.
- php-mbstring : فرمتهای متنی UTF8 را فعال میکند.
- php-bcmath : قابلیتهای ریاضی با دقت دلخواه را فعال میکند.
- php-zip : پشتیبانی از آرشیوهای ZIP را در برنامههای PHP فعال میکند.
- php-gd : قابلیتهای پردازش تصویر PHP را فعال میکند.
- php-curl : انتقال URL و همگامسازی با برنامههای PHP را امکانپذیر میکند.
- php-xml : پشتیبانی از XML را در برنامههای PHP فعال میکند.
- دستور زیر را اجرا کنید تا تمام افزونههای PHP که میتوانید بر اساس نسخه PHP سرور خود نصب کنید، فهرست شوند.
کنسول$ sudo apt-cache search php | grep "^php8.3"
- مشاهده تمام افزونههای PHP نصب شده روی سرور شما.کنسول
$ php -mخروجی شما باید مانند تصویر زیر باشد:
[PHP Modules] bcmath calendar Core ctype curl date dom exif FFI ..... [Zend Modules] Zend OPcache
نصب و پیکربندی PHP-FPM #
PHP-FPM در مخازن پیشفرض APT موجود است و با آخرین نسخه بسته PHP نصب شده روی سرور شما مطابقت دارد. برای نصب PHP-FPM و فعال کردن سرویس برای شروع خودکار در زمان بوت، مراحل زیر را دنبال کنید.
- PHP-FPM را نصب کنید.کنسول
$ sudo apt install php-fpm -y - بسته به نسخه PHP خود، نسخه PHP-FPM نصب شده روی سرور خود را مشاهده کنید. به عنوان مثال،
PHP 8.3.کنسول$ php-fpm8.3 -vخروجی:
PHP 8.3.6 (fpm-fcgi) (built: Apr 15 2024 19:21:47) Copyright (c) The PHP Group Zend Engine v4.3.6, Copyright (c) Zend Technologies with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies /etc/php/8.3بسته به نسخه PHP نصب شده، تمام فایلهای موجود در دایرکتوری را فهرست کنید . سپس، تأیید کنید کهfpmدایرکتوری در دسترس است.کنسول$ ls /etc/php/8.3/خروجی:
apache2 cli fpm mods-availableبر اساس خروجی فوق، PHP-FPM
fpmو پیکربندیهای لازم که نحوه پردازش درخواستها توسط PHP را روی سرور شما کنترل میکنند، در دسترس هستند.- به دایرکتوری پیکربندیهای استخر PHP-FPM بروید
/etc/php/8.3/fpm/pool.d/.کنسول$ cd /etc/php/8.3/fpm/pool.d/
- پیکربندی پیشفرض PHP-FPM pool را
/etc/php/8.3/fpm/pool.d/www.confبا استفاده از یک ویرایشگر متن مانند Nano باز کنید.کنسول$ sudo nano www.conf[www]گزینهای برای تأیید نام استخر PHP-FPM خود پیدا کنید .
اینی[www]userگزینههای وgroupرا برای تأیید اینکه PHP-FPM به عنوان کاربر اجرا میشود، پیدا کنید . هنگام استفاده از یک وب سرور، تأیید کنید که PHP-FPM به عنوانwww-dataکاربر اجرا میشود.
اینیuser = www-data group = www-data
- دستورالعمل را پیدا کنید
listenو مسیر سوکت را برای دسترسی به سرویس PHP-FPM روی سرور خود تأیید کنید.
اینیlisten = /run/php/php8.3-fpm.sock
- پیکربندی زیر را برای مطابقت با نیازهای پردازش PHP-FPM خود در سرور تغییر دهید.
اینیpm = dynamic pm.max_children = ۵ pm.start_servers = ۲ pm.min_spare_servers = ۱ pm.max_spare_servers = ۳
pm: مدیر فرآیند PHP-FPM را با هر یک از گزینههای زیر فعال میکند:static: با استفاده از تعداد ثابتی از فرآیندهای کارگر را تنظیم میکندpm.max_children.dynamic: تعداد متغیری از فرآیندهای کارگر را بر اساس تقاضا فعال میکند.ondemandفعال کردن فعالسازی فرآیندهای کارگر فقط در صورت نیاز و غیرفعال کردن شروع خودکار.
pm.max_childrenحداکثر تعداد فرآیندهای فرزندی که باید هنگام شروع کنترل استفاده از حافظه سرور توسط PHP-FPM ایجاد شوند را تنظیم میکند.pm.start_serversتعداد فرآیندهای فرزندی که هنگام شروع PHP-FPM ایجاد میشوند را تنظیم میکند.pm.min_spare_servers: حداقل تعداد فرآیندهای غیرفعال مجاز روی سرور را تنظیم میکند.pm.max_spare_servers: حداکثر تعداد فرآیندهای غیرفعال (idle processes) برای اجرا روی سرور را تنظیم میکند.pm.process_idle_timeout: حداکثر تعداد ثانیهها پس از انتظار و توقف فرآیندهای غیرفعال را تنظیم میکند.access.logثبت تمام درخواستهای اتصال به استخر PHP-FPM را فعال میکند.slowlog: مسیر ثبت درخواستهای کند را تنظیم میکند.request_slowlog_timeout: حداکثر زمان انتظار برای یک درخواست را قبل از اینکه به عنوان کند علامت گذاری شود، تنظیم میکند.
فایل را ذخیره کنید و ببندید.
- برای اعمال تغییرات پیکربندی، PHP-FPM را مجدداً راهاندازی کنید.کنسول
$ sudo systemctl restart php8.3-fpm
تست PHP و PHP-FPM #
PHP محتوای برنامههای وب پویا را پردازش میکند در حالی که PHP-FPM اتصال به PHP را با منابع لازم مدیریت میکند تا پردازش سریع درخواستها روی سرور شما امکانپذیر شود. مراحل زیر را برای آزمایش PHP و PHP-FPM با ایجاد یک برنامه PHP نمونه برای ارائه با استفاده از وب سرور Nginx دنبال کنید.
- به دایرکتوری خانگی کاربر خود بروید.کنسول
$ cd
- یک فایل نمونه برنامه PHP جدید ایجاد کنید
sample.php.کنسول$ nano sample.php - محتویات زیر را به فایل اضافه کنید.پی اچ پی
<?php echo "Greetings from Negarnovin! PHP is working correctly on this server"; ?>
فایل را ذخیره کنید و ببندید.
- برنامه را با استفاده از ابزار PHP CLI اجرا کنید.کنسول
$ php sample.phpخروجی:
Greetings from Negarnovin! PHP is working correctly on this serverبر اساس خروجی فوق، PHP فایلهای برنامه وب پویا را روی سرور شما به درستی پردازش میکند.
- برای آزمایش دسترسی به سرویس PHP-FPM، برنامه وب سرور Nginx را نصب کنید.کنسول
$ sudo apt install nginx -y - از پیکربندی پیشفرض میزبان مجازی Nginx نسخه پشتیبان تهیه کنید.کنسول
$ sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.BAK - یک فایل پیکربندی جدید
defaultNginx ایجاد کنید.کنسول$ sudo nano /etc/nginx/sites-available/default - تنظیمات زیر را به فایل اضافه کنید.انجینکس
server { listen ۸۰ default_server; listen [::]:۸۰ default_server; root /var/www/html/; index index.html index.php index.nginx-debian.html; location ~ \.php$ { try_files $uri =۴۰۴; fastcgi_pass unix:/run/php/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
فایل را ذخیره کنید و ببندید.
پیکربندی Nginx در بالا با استفاده از تمام آدرسهای IP سرور روی پورت پیشفرض HTTP به درخواستهای اتصال گوش میدهد
۸۰و فایلها را از/var/www/htmlدایرکتوری ریشه وب تحویل میدهد. Nginx تمام درخواستهایی را که با.phpپسوند فایل مطابقت دارند، به مسیر سوکت PHP-FPM/run/php/php-fpm.sockبرای پردازش با استفاده از FastCGI ارسال میکند تا به سرویس نسخه پیشفرض PHP-FPM متصل شود. - پیکربندی Nginx را برای خطاها آزمایش کنید.کنسول
$ sudo nginx -tخروجی:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful - یک فایل نمونه برنامه PHP جدید
test.phpدر دایرکتوری ریشه وب/var/www/htmlمشخص شده در پیکربندی Nginx خود ایجاد کنید.کنسول$ sudo nano /var/www/html/test.php - محتویات زیر را به فایل اضافه کنید.پی اچ پی
<?php phpinfo(); ?>
فایل را ذخیره کنید و ببندید.
برنامه PHP فوق، اطلاعات نسخه PHP موجود روی سرور شما را هنگام دسترسی در یک مرورگر وب نمایش میدهد.
- سرویسی را که از قبل با PHP نصب شده است، متوقف کنید
apache2تا پورت HTTP را از حالت اتصال خارج کنید۸۰.کنسول$ sudo systemctl stop apache2 ۸۰از طریق ابزار پیشفرض فایروال UFW، اتصال به پورت HTTP را مجاز کنید .کنسول$ sudo ufw allow ۸۰
- برای اعمال تغییرات پیکربندی، Nginx را مجدداً راهاندازی کنید.کنسول
$ sudo systemctl restart nginx - با استفاده از یک مرورگر وب مانند کروم، به آدرس IP سرور خود دسترسی پیدا کنید و
/test.phpمسیر URL را برای دسترسی به برنامه PHP خود بارگذاری کنید.http://SERVER-IP/test.php
نصب چندین نسخه PHP #
پروژههای چندگانه بسته به نیاز شما به نسخههای خاص PHP نیاز دارند. PHP از چندین نسخه نصب شده پشتیبانی میکند که میتوانید به آنها مراجعه کرده و با نسخه PHP-FPM مرتبط از آنها استفاده کنید. با این حال، مخازن پیشفرض اوبونتو ۲۴.۰۴ شامل نسخههای محدودی از PHP هستند. یک مخزن انجمن قابل اعتماد مانند مخزن ppa:ondrej/phpنصب نسخههای قدیمیتر یا جدیدتر PHP را روی سرور خود اضافه کنید، زیرا PHP 7.4ممکن است در مخازن پیشفرض موجود نباشد. در مراحل زیر، ppa:ondrej/phpمنبع بسته را به مخازن APT خود اضافه کنید و چندین نسخه PHP را روی سرور خود نصب کنید.
ppa:ondrej/phpPPA را به مخازن APT خود اضافه کنید .کنسول$ sudo add-apt-repository -y ppa:ondrej/php- یک نسخه خاص PHP و PHP-FPM را روی سرور خود نصب کنید. برای مثال،
PHP 7.4.کنسول$ sudo apt install -y php7.4 php7.4-fpm - اطلاعات نسخه PHP نصب شده روی سرور خود را مشاهده کنید.کنسول
$ php7.4 -vخروجی:
PHP 7.4.33 (cli) (built: Jun 6 2024 16:49:34) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies - وضعیت سرویس PHP-FPM نسخه PHP را مشاهده کنید و تأیید کنید که در حال اجرا است. برای مثال،
php7.4-fpm.کنسول$ sudo systemctl status php7.4-fpmخروجی:
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php7.4-fpm.service; enabled; preset: enabled) Active: active (running) since Sun 2024-06-30 00:20:23 UTC; 11min ago Docs: man:php-fpm7.4(8) Process: 23012 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=exited, status=0/SUC> Main PID: 23008 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2269) Memory: 7.0M (peak: 8.0M) CPU: 104ms CGroup: /system.slice/php7.4-fpm.service ├─۲۳۰۰۸ "php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)" ├─۲۳۰۰۹ "php-fpm: pool www" └─۲۳۰۱۱ "php-fpm: pool www" - یک دایرکتوری ریشه وب جدید برای ذخیره فایلهای مختلف برنامه PHP ایجاد کنید. به عنوان مثال،
/var/www/php74-site.کنسول$ sudo mkdir -p /var/www/php74-site test.phpفایل برنامه PHP که قبلاً ایجاد کردهاید را در دایرکتوری با نامindex.php. کپی کنید .کنسول$ sudo cp /var/www/html/test.php /var/www/php74-site/index.php- برای آزمایش دسترسی به نسخه PHP-FPM نصب شده، یک پیکربندی میزبان مجازی Nginx جدید ایجاد کنید. به عنوان مثال،
php74-site.conf.کنسول$ sudo nano /etc/nginx/sites-available/php74-site.conf - تنظیمات زیر را به فایل اضافه کنید.انجینکس
server { listen ۹۰۰۰; listen [::]:۹۰۰۰; root /var/www/php74-site; index index.php index.html; location ~ \.php$ { try_files $uri =۴۰۴; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
فایل را ذخیره کنید و ببندید.
پیکربندی Nginx فوق، اتصالات ورودی را روی پورت TCP سفارشی گوش میدهد
۹۰۰۰و فایلها را از دایرکتوری ریشه وب شما تحویل میدهد/var/www/php74-site. اینindexدستورالعمل، فایلهای پیشفرض برنامه وب را برای ارائه به همه درخواستها به طور پیشفرض مشخص میکند. سپس، Nginx تمام درخواستهای فایل PHP را با استفاده از مسیر سوکت پیشفرض pool برای پردازش،.phpبه سرویس PHP-FPM نسخه PHP شما ارسال میکند.php7.4-fpm/run/php/php7.4-fpm.sock - فایل پیکربندی Nginx را به
/etc/nginx/sites-enabledفعال کردن میزبان مجازی جدید پیوند دهید.کنسول$ sudo ln -s /etc/nginx/sites-available/php74-site.conf /etc/nginx/sites-enabled/ - پیکربندی Nginx را برای خطاها آزمایش کنید.کنسول
$ sudo nginx -tخروجی:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ۹۰۰۰اتصالات شبکه را از طریق فایروال به پورت TCP میزبان مجازی مجاز کنید .کنسول$ sudo ufw allow ۹۰۰۰/tcp
- برای اعمال تغییرات، قوانین فایروال را مجدداً بارگذاری کنید.کنسول
$ sudo ufw reload - برای اعمال تغییرات پیکربندی، Nginx را مجدداً راهاندازی کنید.کنسول
$ sudo systemctl restart nginx - برای باز کردن فایل برنامه وب
۹۰۰۰خود، در یک پنجره مرورگر وب جدید، به IP سرور خود در پورت مربوطه دسترسی پیدا کنید .index.phphttp://SERVER-IP:9000تأیید کنید که اطلاعات نسخه PHP 7.4 و ماژولهای شما در مرورگر وب شما نمایش داده میشوند.

/test.phpبا استفاده از IP سرور خود در یک تب جدید مرورگر وب، به مسیر URL دسترسی پیدا کنید تا تأیید کنید که۸.۳نسخه پیشفرض PHP شما درخواستها را بر اساس پیکربندی Nginx شما به طور جداگانه پردازش میکند.
نتیجه گیری #
شما PHP و PHP-FPM را روی سرور اوبونتو ۲۴.۰۴ خود نصب کردهاید. سپس، چندین نسخه PHP را برای اجرای پروژههای مختلف برنامههای وب بسته به ویژگیها و نیازهای نسخه خاص خود نصب کردهاید. میتوانید PHP و PHP-FPM را با چندین برنامه مانند Nginx ادغام کنید تا درخواستهای برنامههای وب پویا را به طور ایمن روی سرور خود پردازش کنید. برای اطلاعات بیشتر، به مستندات رسمی PHP مراجعه کنید .
