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 8.1 در OpenBSD 7.3 🌻
خدمتتون مبارک ✨☕✨