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
  • MySQL, PHP и PHPMyAdmin в Nginx

    Инсталиране на MySQL

    apt update -y apt upgrade -y apt install mariadb-server -y mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): Enter OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] Enter Enabled successfully! Reloading privilege tables.. ... Success! You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] Enter New password: NewPa$$w0rd Re-enter new password: NewPa$$w0rd Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Enter ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Enter ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Enter - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ^C Aborting! Cleaning up...

    Инсталиране и настройка на PHP

    apt install php8.2-fpm -y nano /etc/php/8.2/fpm/php.ini ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; https://php.net/cgi.fix-pathinfo ;cgi.fix_pathinfo=1 cgi.fix_pathinfo=0

    cgi.fix_pathinfo=0 - Много опасна настройка, тъй като казва на PHP да се опита да изпълни най-близкия файл, който може да намери, ако исканият PHP файл не може да бъде намерен. Това основно би позволило на потребителите да създават PHP заявки по начин, който би им позволил да изпълняват скриптове, които не трябва да им се разрешава да изпълняват. Махаме коментара ; пред настройката и даваме и стойност 0. Рестартираме PHP процеса.

    service php8.2-fpm restart service php8.2-fpm status

    Nginx използва PHP процесора

    nano /etc/nginx/sites-available/default server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name gost.tachko.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; } location ~ /\.ht { deny all; } } nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful systemctl reload nginx

    Да проверим как работи PHP (по сокет или IP).

    ls /var/run/php/ php-fpm.sock php8.2-fpm.pid php8.2-fpm.sock

    Работим на сокед и то правилно. Това може лесно да установи от конфигурацията на PHP.

    nano /etc/php/8.2/fpm/pool.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 addr> ; a specific port; ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 addr> ; a specific port; ; 'port' - to listen on a TCP socket to all addresses ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = /run/php/php8.2-fpm.sock

    Значи, че работим на Unix сокед.

    Създаване на PHP файл за тестване на конфигурацията

    echo "<?php phpinfo(); ?>" >> /var/www/html/info.php

    Тестваме на http://gost.tachko.com/info.php. Дава пълна информация за версията на PHP и конфигурацията му.

    Инсталиране и настройка на PHPMyAdmin

    apt install phpmyadmin -y

    Pic01

    Няма да инсталираме никакъв WEB сървър. Имаме инсталиран Nginx.

    Pic02

    Ще ползваме база данни за PHPMyAdmin.

    Pic03

    Ще конфигурираме базата данни за PHPMyAdmin.

    Pic04

    Пишем паролата на администратора за базата на PHPMyAdmin.

    Pic05

    Повтаряме паролата за съвпадение. Инсталацията продължава до края без грешки. Следва да направим така че в нашия домейн/phpmyadmin да се отваря самата програма.

    ln -s /usr/share/phpmyadmin/ /var/www/html/

    Да пробваме като напишем в браузъра: http://gost.tachko.com/phpmyadmin.

    Pic06

    Влизаме спокойно в базата данни на gost.tachko.com.

    Pic07

    PHP - Unix или TCP сокет

    Някъде по-нагоре бях споменал, че PHP може да работи на Unix сокет или на TCP сокет. Идеята е PHP и Nginx да си говорят помежду си използвайки сокет. В някоя статия бях развивал кой Layer за какво отговаря. Бях споменал, че на Layer 4 (Transport - Delivery and Sqquencing) работи TCP протокола и сокетите. Сокетите представляват крайна точка на двупосочна комуникация между две програми-сървърна програма и клиентска програма. След всички пояснения да се пробваме PHP да заработи от Unix на TCP сокет. Да проверим сега как работим.

    nano /etc/php/8.2/fpm/pool.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 addr> ; a specific port; ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 addr> ; a specific port; ; 'port' - to listen on a TCP socket to all addresses ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = /run/php/php8.2-fpm.sock

    Значи, че работим на сокед. Да се прехвърлим на TCP сокед.

    nano /etc/php/8.2/fpm/pool.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 addr> ; a specific port; ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 addr> ; a specific port; ; 'port' - to listen on a TCP socket to all addresses ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. ; listen = /run/php/php8.2-fpm.sock listen = 127.0.0.1:9000 listen.owner = www-data listen.group = www-data ; listen.mode = 0660 listen.mode = 0660

    Прехвърлихме на TCP сокед. Адрес 127.0.0.1 на порт 9000. Да поправим конфигурационния файл на домейна за Nginx.

    nano /etc/nginx/sites-available/default server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name gost.tachko.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; # fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_pass 127.0.0.1:9000; } location ~ /\.ht { deny all; } } service nginx restart service php8.2-fpm restart

    Отново трябва да можем да отворим http://gost.tachko.com/phpmyadmin.