Linux
  • << DEBIAN >>

  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     SAMBA + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     MySQL и PHPMyAdmin
  •     Инсталиране и настройка на Nginx
  •       Директиви location в Nginx
  •       MYSQL,PHP и PHPMyAdmin в Nginx
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail
  •       CertBot 1 домейн
  •       Виртуални хостове, CertBot 2 домейна
  •       DKIM, SPF и DMARK
  •       Допълнителни настройки (спам и т.н.)
  •       PHP
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK
  • << UBUNTU >>
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • << BGPOST >>
  •     Tar-App-01 SAMBA
  • PHP и iRedMail

    Започвам темата с много условности. Сложно за обяснение и най-вероятно много неща ще ги прескачам, но логиката трябва да стане ясна. Приликата с Apache е малка, синтаксиса също доста е различен. Започваме с post.tlan.net. Ще ползваме PHP като сървис използвайки менажера на процеси PHP-FPM. PHP-FPM стартира няколко процеса изпълнявайки PHP скриптове. Процесите работят или по TCP или на сокет. Би трябвало да покажа и инсталацията на PHP но тя идва заедно с iRedMail и тази операция е направена. Само ще настройваме.

    nano /etc/nginx/sites-available/post.tlan.net.conf server { listen 80; listen [::]:80; server_name post.tlan.net mail.tlan.net; # Redirect all insecure http requests to https. location / { return 301 https://$host$request_uri; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name post.tlan.net mail.tlan.net; root /var/www/post.tlan.net; index index.html index.php; error_log /var/log/nginx/post.tlan.net_error.log; access_log /var/log/nginx/post.tlan.net_access.log; ssl_certificate /etc/letsencrypt/live/post.tachko.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/post.tachko.com/privkey.pem; ssl_stapling on; location / { try_files $uri $uri/ =404; } } service php8.2-fpm status * php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; preset: enabled) Active: active (running) since Thu 2025-03-20 19:56:15 UTC; 29min ago Docs: man:php-fpm8.2(8) Process: 129710 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 8> Main PID: 129704 (php-fpm8.2) Status: "Processes active: 0, idle: 5, Requests: 590, slow: 0, Traffic: 0.40req/sec" Tasks: 6 (limit: 18955) Memory: 16.4M CPU: 349ms CGroup: /system.slice/php8.2-fpm.service |-129704 "php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)" |-131347 "php-fpm: pool inet" |-131355 "php-fpm: pool inet" |-131356 "php-fpm: pool inet" |-131357 "php-fpm: pool inet" `-131360 "php-fpm: pool inet" Mar 20 20:21:03 post php-fpm[129704]: [NOTICE] [pool inet] child 129705 exited with code 0 after 1487.557118 seconds from start Mar 20 20:21:03 post php-fpm[129704]: [NOTICE] [pool inet] child 131347 started Mar 20 20:21:06 post php-fpm[129704]: [NOTICE] [pool inet] child 129706 exited with code 0 after 1490.556355 seconds from start Mar 20 20:21:06 post php-fpm[129704]: [NOTICE] [pool inet] child 131355 started Mar 20 20:21:09 post php-fpm[129704]: [NOTICE] [pool inet] child 129707 exited with code 0 after 1493.556970 seconds from start Mar 20 20:21:09 post php-fpm[129704]: [NOTICE] [pool inet] child 131356 started Mar 20 20:21:12 post php-fpm[129704]: [NOTICE] [pool inet] child 129708 exited with code 0 after 1496.555832 seconds from start Mar 20 20:21:12 post php-fpm[129704]: [NOTICE] [pool inet] child 131357 started Mar 20 20:21:15 post php-fpm[129704]: [NOTICE] [pool inet] child 129709 exited with code 0 after 1499.559077 seconds from start Mar 20 20:21:15 post php-fpm[129704]: [NOTICE] [pool inet] child 131360 started

    Преди да продължим с конфигурацията да видим как работи PHP (по сокед или по TCP).

    nano /etc/php/8.2/fpm/pool.d/www.conf [inet] user = www-data group = www-data listen = 127.0.0.1:9999 listen.owner = www-data listen.group = www-data listen.mode = 0660 ; IP addresses must be separated by comma, and no space between comma and ip. listen.allowed_clients = 127.0.0.1

    Работи по TCP на порт 9999. Знаейки, че работи по TCP конфигурационния файл на виртуалния хост ще бъде съобразен с тази особенност.

    nano /etc/nginx/sites-available/post.tlan.net.conf server { listen 80; listen [::]:80; server_name post.tlan.net mail.tlan.net; # Redirect all insecure http requests to https. location / { return 301 https://$host$request_uri; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name post.tlan.net mail.tlan.net; root /var/www/post.tlan.net; index index.html index.php; error_log /var/log/nginx/post.tlan.net_error.log; access_log /var/log/nginx/post.tlan.net_access.log; ssl_certificate /etc/letsencrypt/live/post.tachko.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/post.tachko.com/privkey.pem; ssl_stapling on; location / { try_files $uri $uri/ =404; } ### Секция за PHP location ~ \.php$ { fastcgi_pass 127.0.0.1:9999; fastcgi_index index.php; fastcgi_param fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } ### Проверка за синтактични грешки nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ### Рестартираме Nginx и PHP service nginx restart service php8.2-fpm restart echo "<?php phpinfo(); ?>" >> /var/www/post.tlan.net/info.php

    include snippets/fastcgi-php.conf; # Nginx php-fpm sock config: fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Nginx php-cgi config : # Nginx PHP fastcgi_pass 127.0.0.1:9000; # deny access to Apache .htaccess on Nginx with PHP, # if Apache and Nginx document roots concur location ~ /\.ht { deny all; } fastcgi_pass 127.0.0.1:9000; - с тази директива указваме, че рабоим по TCP на порт 9999. Отваряме сайта на 80 порт или на 443 той ще бъде пренасочен на 9999, a tam PHP-CGI ще го поеме и ще го обработи и ще го подаде на Ngnix. fastcgi_index index.php; - ако не указваме в браузъра кой файл да отваряме, по-подразбиране ще отваря index.php. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - дефенираме променливата SCRIPT_FILENAME за процеса fastcgi_script_name include /etc/nginx/fastcgi_params; - включва допълнителни параметри за обработка на заявки за fastcgi.

    echo "<?php phpinfo(); ?>" >> /var/www/post.tlan.net/info.php

    Pic01