برنامه نویسی

PHP-FPM 8.1 در OpenBSD 7.3

خلاصه

به اعتقاد من، OpenBSD 🐡 و جامعه آنها از خدمات وب PHP به خوبی پشتیبانی می کنند.

بسته اصلی به صورت باینری از پیش کامپایل شده از طریق سیستم بسته های Ports ارائه می شود. علاوه بر این، نرم افزارهای مهمی مانند افزونه ها، Composer و کتابخانه های PECL در دسترس هستند. فریمورک هایی مانند NextCloud و Zabbix نیز همینطور هستند.

علاوه بر این، هنگامی که با OpenBSD httpd یکپارچه می شود، آن را دارد chroot به حفظ امنیت سرورها کمک می کند. البته، همچنین می تواند آنها را با رله ادغام کند.

خب، PHP-FPM، PHP FastCGI Process Manager، بخشی از بسته PHP در بسته های OpenBSD است.
نصب PHP (php-?.? با توجه به نسخه)، بنابراین، همراه است php??_fpm به صورت خودکار 🙌

این پست نحوه نصب و پیکربندی آن را به عنوان سرور نشان می دهد.

محیط

  • سیستم عامل: OpenBSD 7.3
  • وب: OpenBSD httpd
  • PHP: 8.1 با PHP-FPM

✿ ✿ ✿

آموزش

PHP را نصب کنید

ابتدا بسته اصلی را نصب کنید:

$ doas pkg_add php
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از شما پرسیده می شود:

quirks-6.121 signed on 2023-04-26T08:37:06Z
Ambiguous: choose package for php
a   0: <None>
    1: php-8.0.28p1
    2: php-8.1.18
    3: php-8.2.5
Your choice: 2
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

من این لحظه PHP 8.1 را انتخاب کردم.
علاوه بر این، می توانید طول عمر هر نسخه را در اینجا بررسی کنید.

نتیجه این شد:

php-8.1.18:argon2-20190702: ok
php-8.1.18:libsodium-1.0.18p1: ok
php-8.1.18:oniguruma-6.9.8: ok
php-8.1.18:femail-1.0p1: ok
php-8.1.18:femail-chroot-1.0p3: ok
php-8.1.18:capstone-4.0.2: ok
php-8.1.18: ok
The following new rcscripts were installed: /etc/rc.d/php81_fpm
See rcctl(8) for details.
New and changed readme(s):
    /usr/local/share/doc/pkg-readmes/femail-chroot
    /usr/local/share/doc/pkg-readmes/php-8.1
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

باید ببینی php81_fpm با من بیا php-8.1 !!

پی اچ پی را پیکربندی کنید

این دایرکتوری ها/فایل ها تولید می شوند:

$ ls /etc/php*
/etc/php-8.1.ini    /etc/php-fpm.conf

/etc/php-8.1:

/etc/php-8.1.sample:
opcache.ini

/etc/php-fpm.d:
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ویرایش کنید .ini یا .conf فایل (ها) در صورت نیاز

برای مثال، ویرایش کنید:

$ doas nvim `/etc/php-8.1.ini`
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پسندیدن:

- post_max_size = 8M
+ post_max_size = 30M
  (...)
- upload_max_filesize = 2M
+ upload_max_filesize = 24M
  (...)
- allow_url_fopen = Off
+ ; for composer, disabled in php-fpm
+ allow_url_fopen = On
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همچنین ویرایش کنید:

$ doas nvim `/etc/php-8.1.ini`
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای اضافه کردن به پایین:

+ ; set On in php.ini for composer, therefore:
+ php_admin_value[allow_url_fopen] = Off
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خب، فایل(های) در php-8.1.sample پسوند PHP هستند.
با توجه به نیاز خود، پیوند نمادینی برای هر یک از آنها ایجاد کنید /etc/php-8.1/، که پسوندها را فعال می کند:

$ doas ln -sf /etc/php-8.1.sample/${ini} /etc/php-8.1/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پردازش دسته ای (اختیاری)

برای ارجاع کوچک، با فایل‌های بیشتری که باید به آن رسیدگی شود، می‌توانید از پردازش حلقه با پوسته خود استفاده کنید. برای مثال:

$ # case ksh:
$ for x in $(ls /etc/php-8.1.sample/*); do doas ln -sf $x /etc/php-8.1/; done
$ # case fish:
$ for x in /etc/php-8.1.sample/*; doas ln -sf $x /etc/php-8.1/; end
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

PHP-FPM را پیکربندی کنید

خوب. ما آماده ایم

pkg-readme PHP 8.1 در نصب PHP به عنوان /usr/local/share/doc/pkg-readmes/php-8.1، که می گوید:

بسته های اصلی OpenBSD php شامل php-fpm، FastCGI Process Manager است.
این مجموعه‌ای از فرآیندهای FastCGI را مدیریت می‌کند: آنها را شروع/بازراه‌اندازی می‌کند و
حداقل و حداکثر تعداد فرآیندهای یدکی را حفظ می کند
پیکربندی شده است. می توانید از rcctl(8) برای فعال کردن php-fpm در هنگام بوت استفاده کنید.
و آن را در زمان اجرا شروع کنید:

rcctl enable php81_fpm
rcctl start php81_fpm

بیایید دیمون را شروع کنیم:

$ doas rcctl enable php81_fpm
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای یک مرجع کوچک دیگر، خط را اضافه یا اصلاح می کند /etc/rc.conf.local:

+ pkg_scripts=php81_fpm
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون زمان شروع دیمون است:

$ doas rcctl start php81_fpm
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

php81_fpm(ok)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

باشه 😄

استفاده

در مرحله بعد باید یک وب سرور برای آنها راه اندازی کنیم.

فقط اگر httpd را پیکربندی نکرده اید، آن را کپی کنید .conf فایل از نمونه هایی که OpenBSD ارائه می دهد به شرح زیر است:

$ doas cp -p /etc/examples/httpd.conf /etc/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خب ویرایش کن /etc/httpd.conf برای اضافه کردن fastcgi socket تعاریف در برخی از بخش SERVERS مانند زیر:

server "default" {
    listen on * port 80
    #listen on * port 443

    root "/htdocs"
    directory index index.php

    location "/*.php" { 
        fastcgi socket "/run/php-fpm.sock"
    }
    location "/*.php[/?]*" { 
        fastcgi socket "/run/php-fpm.sock"
    } 
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه داشته باشید که chroot در این زمینه کار می کند 💡

از این رو، fastcgi socket "/run/php-fpm.sock" که در /etc/httpd.conf در واقع یعنی fastcgi socket "/var/www/run/php-fpm.sock".
این به آن یکسان است root "/htdocs" به معنای "/var/www/htdocs".

نتیجه گیری

بسازیم /var/www/htdocs/index.php برای آزمایش:

$ echo "<?php phpinfo(1); ?>" | \
      doas tee "/var/www/htdocs/index.php"
$ # delete it afterwards:
$ #doas rm /var/www/htdocs/index.php
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اتصال به هاست خود با مرورگر اطلاعات کلی را نشان می دهد!!

php-fpm-کار می کند

PHP 8.1 در OpenBSD 7.3 🌻

✿ ✿ ✿

خدمتتون مبارک ✨☕✨

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا