User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
start [2026/01/04 14:53] – created sistemcstart [2026/01/04 15:10] (current) – [🧱 WordPress (isti problemi, druga oblika)] sistemc
Line 1: Line 1:
-ISPConfig + PHP-FPM + aplikacije (DokuWiki, WordPress, …) +====== 🧠 ISPConfig Runbook (real-world======
-🎯 Namen dokumenta+
  
-Ta dokument opisuje:+Dokumentacija temelji na realnih incidentih in napakah pri nameščanju 
 +PHP aplikacij (DokuWiki, WordPress, Nextcloud) na ISPConfig + Apache + PHP-FPM.
  
-zakaj pride do “permission” napak, čeprav so pravice pravilne+===== 🔥 Incidenti (resnični primeri) ===== 
 +  * [[incidents:dokuwiki_install_loop|DokuWiki install loop – data/pages not writable]] 
 +  * [[incidents:php_fpm_socket_mismatch|PHP-FPM socket mismatch (webX.sock vs phpX-fpm.sock)]] 
 +  * [[incidents:permission_denied_but_ok|Permission denied – čeprav so pravice OK]] 
 +  * [[incidents:documentroot_locked|DocumentRoot zaklenjen v ISPConfig]] 
 +  * [[incidents:authz_core_denied|Apache authz_core blokira dostop do data/]] 
 +  * [[incidents:open_basedir_trap|open_basedir omejitev – tiha past]] 
 +  * [[incidents:ispconfig_vs_manual|ISPConfig avtomatika povozi ročne nastavitve]]
  
-kako pravilno namestiti PHP aplikacije na ISPConfig+===== 🛠️ ISPConfig – kako DEJANSKO deluje ===== 
 +  * [[ISPConfig + PHP-FPM + aplikacije (DokuWiki, WordPress, …)]] 
 +  * [[ispconfig:filesystem_layout|Filesystem layout (clientX/webY/web)]] 
 +  * [[ispconfig:web_users_groups|webX uporabniki & clientX skupine]] 
 +  * [[ispconfig:document_root|Kako ISPConfig določa DocumentRoot]] 
 +  * [[ispconfig:vhost_generation|Kako se generira Apache vhost]] 
 +  * [[ispconfig:what_not_to_edit|Česa se NE ureja ročno]]
  
-kako preprečiti ponavljanje istih napak pri novih straneh+===== 🧩 PHP-FPM ===== 
 +  * [[php_fpm:pools|PHP-FPM pooli (webX.conf)]] 
 +  * [[php_fpm:sockets|Socketi – kje nastanejo in zakaj se lomijo]] 
 +  * [[php_fpm:version_mismatch|PHP verzija ≠ socket ≠ vhost]] 
 +  * [[php_fpm:open_basedir|open_basedir – prava nastavitev]] 
 +  * [[php_fpm:debugging|Kako debugirati PHP-FPM kontekst]]
  
-Velja za:+===== 🌐 Apache ===== 
 +  * [[apache:authz_core|authz_core – zakaj Apache blokira datoteke]] 
 +  * [[apache:directory_rules|Directory / FilesMatch pravila]] 
 +  * [[apache:data_directory_security|Zakaj Apache ne mara data/ direktorijev]] 
 +  * [[apache:logs|Branje pravih Apache logov]] 
 +  * [[apache:fcgi_errors|proxy_fcgi napake – kako jih brati]]
  
-DokuWiki+===== 📦 DokuWiki ===== 
 +  * [[apps:dokuwiki:install|Namestitev na ISPConfig (pravilno)]] 
 +  * [[apps:dokuwiki:data_dir|data/ in pages/ – prava postavitev]] 
 +  * [[apps:dokuwiki:permissions|Pravice, ACL in setgid]] 
 +  * [[apps:dokuwiki:installer_loop|Zakaj installer ne konča]] 
 +  * [[apps:dokuwiki:post_install|Kaj OBVEZNO po installu]]
  
-WordPress+===== 🧱 WordPress (isti problemi, druga oblika) ===== 
 +  * [[Odprava robots.txt napake v Google Search Console]] 
 +  * [[apps:wordpress:install|WordPress install na ISPConfig]] 
 +  * [[apps:wordpress:permissions|wp-content & uploads pravice]] 
 +  * [[apps:wordpress:php_fpm|WP + PHP-FPM socketi]] 
 +  * [[apps:wordpress:open_basedir|WP in open_basedir]]
  
-Nextcloud+===== 🔍 Diagnostika (orodja, ki so rešila situacijo) ===== 
 +  * [[diagnostics:who_php|who.php – kdo sem v PHP-FPM]] 
 +  * [[diagnostics:namei|getfacl & namei – traversal check]] 
 +  * [[diagnostics:doctor_script|isp_dokuwiki_doctor.sh]] 
 +  * [[diagnostics:log_checklist|Log checklist (kaj gledati, kje)]]
  
-Laravel / Symfony+===== 📋 Checklisti ===== 
 +  * [[checklists:new_site|Checklist – nova spletna stran]] 
 +  * [[checklists:new_php_app|Checklist – nova PHP aplikacija]] 
 +  * [[checklists:before_install|Preden klikneš Install]] 
 +  * [[checklists:after_install|Po uspešni namestitvi]]
  
-vse PHP aplikacije na ISPConfig + PHP-FPM+===== 🧠 Lessons Learned ===== 
 +  * [[lessons:permissions_are_not_enough|Zakaj chmod 777 ne reši ničesar]] 
 +  * [[lessons:ispconfig_philosophy|Kako razmišljati z ISPConfig]] 
 +  * [[lessons:never_absolute_paths|Zakaj ne uporabljaj absolutnih poti v app configih]] 
 +  * [[lessons:automate_checks|Zakaj imeti doctor skripte]]
  
-1️⃣ Povzetek problema (TL;DR)+===== 📓 Osebni zapiski ===== 
 +  * [[notes:useful_commands|CLI ukazi, ki dejansko pomagajo]] 
 +  * [[notes:common_traps|Najpogostejše pasti]] 
 +  * [[notes:standard_setup|Moj standardni setup]]
  
-Če uporabljaš: 
- 
-ISPConfig 
- 
-PHP-FPM 
- 
-Apache ali Nginx 
- 
-⚠️ NE SMEŠ uporabljati absolutnih poti v aplikacijskih konfiguracijah, npr.: 
- 
-/var/www/clients/clientX/webY/web/... 
- 
- 
-Če to narediš, bo: 
- 
-CLI kazal, da je vse OK 
- 
-PHP is_writable() kazal OK 
- 
-aplikacija (installer) pa bo še vedno javljala napake 
- 
-2️⃣ Root cause (kaj je bilo v resnici narobe) 
-Ključna kombinacija 
- 
-ISPConfig uporablja open_basedir 
- 
-PHP-FPM omeji dostop PHP-ja na določene poti 
- 
-aplikacija (npr. DokuWiki) uporablja absolutne poti 
- 
-aplikacija interno dela dodatne varnostne checke 
- 
-➡️ Ti checki padejo, čeprav ima PHP pravice. 
- 
-To NI klasičen permission problem, ampak: 
- 
-konflikt med open_basedir in absolutnimi potmi 
- 
-3️⃣ Tipični simptomi 
- 
-Če vidiš kaj od tega, je skoraj zagotovo to ta problem: 
- 
-DokuWiki 
-datadir (pages) is not found or not writable 
- 
-WordPress 
- 
-ne more pisati v wp-content/uploads 
- 
-random “permission denied”, čeprav so pravice pravilne 
- 
-Splošno 
- 
-PHP test skripta kaže WRITE=OK 
- 
-installer ali aplikacija javi napako 
- 
-po popravku pravic se NIČ ne spremeni 
- 
-4️⃣ ZLATO PRAVILO (velja za vse aplikacije) 
-❌ NIKOLI na ISPConfig + PHP-FPM 
-/var/www/clients/client1/web2/web/data 
- 
-✅ VEDNO 
- 
-relativne poti 
- 
-ali poti znotraj document root-a 
- 
-Primeri: 
- 
-./data 
-./uploads 
-./cache 
-./files 
- 
-5️⃣ DokuWiki – pravilna konfiguracija 
-conf/dokuwiki.php 
-$conf['savedir'] = './data'; 
-$conf['basedir'] = ''; 
- 
- 
-❗ Absolutne poti ne uporabljaj. 
- 
-6️⃣ WordPress – enako pravilo 
- 
-WordPress večinoma dela pravilno sam, težava nastane, če: 
- 
-ročno definiraš poti 
- 
-cache plugin nastavi absolutne poti 
- 
-❌ Napačno 
-define('WP_CONTENT_DIR', '/var/www/clients/client1/web2/web/wp-content'); 
- 
-✅ Pravilno 
-define('WP_CONTENT_DIR', __DIR__ . '/wp-content'); 
- 
- 
-ali 
- 
-define('WP_CONTENT_DIR', './wp-content'); 
- 
-7️⃣ Vedno preveri open_basedir (prvi korak) 
-grep -R "open_basedir" /etc/php/*/fpm/pool.d/ 
- 
- 
-Primer: 
- 
-php_admin_value[open_basedir] = /var/www/clients/client1/web2/web:... 
- 
- 
-➡️ To pomeni: 
- 
-PHP vidi samo te poti 
- 
-aplikacija mora uporabljati relativne poti 
- 
-8️⃣ Minimalni PHP sanity test (za vsako aplikacijo) 
-sudo -u web2 php -r ' 
-echo "CWD=".getcwd().PHP_EOL; 
-$path="./data/pages"; 
-echo "PATH=$path".PHP_EOL; 
-echo "is_dir=".(is_dir($path)?"YES":"NO").PHP_EOL; 
-echo "writable=".(is_writable($path)?"YES":"NO").PHP_EOL; 
-' 
- 
- 
-Če dobiš: 
- 
-is_dir=YES 
-writable=YES 
- 
- 
-➡️ PHP bo delal 
-➡️ če aplikacija še vedno jamra → konfiguracija aplikacije je napačna 
- 
-9️⃣ Zakaj se zdi, da se “vrtimo v krogu” 
- 
-Ker so bili: 
- 
-✔ permissions pravilni 
- 
-✔ owner/group pravilni 
- 
-✔ PHP-FPM servis aktiven 
- 
-✔ socket obstajal 
- 
-Ampak: 
- 
-❌ aplikacija je uporabljala absolutne poti 
- 
-❌ open_basedir je to blokiral 
- 
-To je najbolj zahrbtna napaka, ker: 
- 
-sistemski admin vidi “vse OK” 
- 
-aplikacija pa ima svoj varnostni model 
- 
-🔟 Kako to preprečiti za VSE bodoče strani 
-Priporočena praksa 
- 
-V glavi vsakega projekta si zapiši: 
- 
-Če je ISPConfig + PHP-FPM → nikoli absolutne poti v aplikaciji 
- 
-To velja za: 
- 
-Wiki 
- 
-WordPress 
- 
-Nextcloud 
- 
-Laravel 
- 
-Symfony 
- 
-vse PHP CMS-e 
- 
-1️⃣1️⃣ Kaj NE priporočam (razen če veš, kaj delaš) 
- 
-odstranjevanje open_basedir 
- 
-globalno rahljanje PHP omejitev 
- 
-❌ slabša varnost 
-❌ ISPConfig update lahko vse povozi 
- 
-1️⃣2️⃣ Orodje za prihodnost 
- 
-Uporabi ali razširi skripto: 
- 
-isp_dokuwiki_doctor.sh 
- 
- 
-Ideja: 
- 
-en skript 
- 
-preveri: 
- 
-docroot 
- 
-open_basedir 
- 
-writable mape 
- 
-absolutne poti v configih 
- 
-➡️ 10 sekund diagnostike namesto 2 ur kroženja. 
start.1767538385.txt.gz · Last modified: by sistemc