Apache mod_php: instalacija korak po korak
Ovaj postupak namijenjen je Apacheu koji PHP izvršava modulom mod_php. Proveden je od praznog izdanja 0.2.4 na hrvatskom siteu SimbiozaHR. Snimke su iz stvarnih lokalnih instalacija u svijetloj temi; testni poslužitelj slušao je samo 127.0.0.1:8090. Primjer nije javna HTTP konfiguracija: za javni site uključite HTTPS. Nginx ne izvršava mod_php; za njega odaberite FPM uputu.
U terminalskim blokovima prilagodite putanju, URL, Unix račun i verziju PHP-a vlastitom poslužitelju. Nikada ne snimajte jednokratni token ni lozinku. Ako se neki ekran razlikuje, zaustavite se i riješite neuspjelu provjeru prije nastavka.
1. Provjera poslužitelja i dohvat točnog izdanja
Provjerite da su CLI PHP i Apacheov PHP modul podržani, da su potrebne ekstenzije dostupne i da Apache koristi prefork s učitanim PHP i rewrite modulima. CLI PHP sam po sebi nije dokaz da web koristi istu verziju. Na Debianu se paketi zovu prema verziji distribucije, primjerice apache2, libapache2-mod-php, php-cli, php-sqlite3, php-xml, php-mbstring, php-intl i php-zip; prije uključivanja mod_php-a uskladite aktivni MPM s paketom. Na macOS-u je u provjeri korišten Homebrew PHP 8.5 i Apache 2.4.
php -v
php -m
composer --version
git --version
/opt/homebrew/bin/httpd -v
/opt/homebrew/bin/httpd -M | grep -E 'mpm_prefork|php_module|rewrite_module'
id -un
id -Gn
Preuzmite jedan objavljeni tag i kopirajte izdanje bez direktorija .git. To je bitno jer se kasnije nadogradnje vode upravljanim izdanjima. Na izvornom tagu nema composer.lock, pa composer install u našem lokalnom testu zapravo razrješava zadnje dopuštene tagove; za ponovljiv javni postupak koristite izričitu naredbu composer update prikazanu niže.
SIMBIOZA_TAG=0.2.4
SIMBIOZA_FETCH_DIR="$(mktemp -d)"
mkdir "$SIMBIOZA_FETCH_DIR/release"
git -C "$SIMBIOZA_FETCH_DIR/release" init -q
git -C "$SIMBIOZA_FETCH_DIR/release" remote add origin https://github.com/kmihalj/Simbioza.git
git -C "$SIMBIOZA_FETCH_DIR/release" fetch --quiet --depth 1 origin "refs/tags/$SIMBIOZA_TAG:refs/tags/$SIMBIOZA_TAG"
git -C "$SIMBIOZA_FETCH_DIR/release" -c advice.detachedHead=false checkout --quiet "$SIMBIOZA_TAG"
mkdir -p /Users/Shared/Simbioza/SimbiozaHR
rsync --archive --exclude=.git/ "$SIMBIOZA_FETCH_DIR/release/" /Users/Shared/Simbioza/SimbiozaHR/
cd /Users/Shared/Simbioza/SimbiozaHR
composer update --with-all-dependencies --optimize-autoloader
composer check-platform-reqs
cat VERSION
Očekivana verzija ovdje je 0.2.4. Produkcijski primjer može biti u /srv/simbioza; nemojte izlagati taj cijeli direktorij webu. Samo public/ smije biti web-korijen.
2. Baza, radni direktoriji i prava
Za ovaj prolaz odaberite SQLite; čarobnjak će stvoriti privatnu bazu. Ako koristite MySQL ili PostgreSQL, prije otvaranja instalera pripremite praznu bazu i poseban DB račun bez globalnih ovlasti. Radni direktoriji moraju postojati prije prvog HTTP zahtjeva, posebno data/sessions i data/tmp. Web-račun smije pisati samo po radnim podacima i dinamičkim konfiguracijama, ne po cijelom kodu.
cd /Users/Shared/Simbioza/SimbiozaHR
mkdir -p config data/cache data/logs data/sessions data/setup-requests data/tmp resources/config/menu resources/config/theme
sudo chgrp -R _www config data resources/config/menu resources/config/theme
sudo chmod 3770 config
sudo chmod 2770 resources/config/menu resources/config/theme
sudo chmod -R g+rwX data resources/config/menu resources/config/theme
sudo chmod +a 'user:kmihalj allow read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit' config
sudo find data resources/config/menu resources/config/theme -type d -exec chmod +a 'user:kmihalj allow read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit' {} +
ls -lde config data data/sessions data/tmp resources/config/menu resources/config/theme
Na Linuxu umjesto macOS ACL-a primijenite uski setfacl za web i deploy račun te nasljedni ACL na radnim direktorijima. Poslije instalacije izričito provjerite može li održavatelj čitati privatne datoteke koje čarobnjak stvori s pravima 0600. Ne koristite chmod 777.
3. Apache konfiguracija i provjera
Lokalni laboratorij imao je zaseban Apache koji sluša samo na loopbacku. Sljedeći odsječak pokazuje stvarno korišten alias i PHP handler. Na javnom poslužitelju upotrijebite TLS virtualni host na portu 443, DocumentRoot /srv/simbioza/public i svoj certifikat. Nemojte istodobno primijeniti FPM SetHandler na istu PHP putanju.
Listen 127.0.0.1:8090
LoadModule mpm_prefork_module lib/httpd/modules/mod_mpm_prefork.so
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
User _www
Group _www
Alias /SimbiozaHR "/Users/Shared/Simbioza/SimbiozaHR/public"
<Directory "/Users/Shared/Simbioza/SimbiozaHR/public">
Options -Indexes +FollowSymLinks
AllowOverride All
Require local
DirectoryIndex index.php
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
</Directory>
/opt/homebrew/bin/httpd -t -f /opt/homebrew/etc/httpd/extra/httpd-simbioza-install-guides.conf
sudo /opt/homebrew/bin/httpd -k graceful -f /opt/homebrew/etc/httpd/extra/httpd-simbioza-install-guides.conf
curl -I http://127.0.0.1:8090/SimbiozaHR/
Syntax OK potvrđuje samo konfiguracijsku sintaksu; stvarni zahtjev i webov PHP identitet provjerite zasebno. U javnoj konfiguraciji zamijenite Require local primjerenim pravilom pristupa, uključite HTTPS i preusmjerite HTTP. Privremena radna adresa s tokenom mora ostati privatna.
4. Priprema opcionalnih paketa i jednokratni instaler
mod_php nema privilegirani helper za Composer, pa održavatelj iz direktorija izdanja prije otvaranja čarobnjaka u CLI-ju priprema pakete. Naredba php scripts/installation_packages.php prepare bez popisa priprema sve opcionalne module; u novom čarobnjaku svi su početno označeni i korisnik odznačuje nepotrebne. Za manji skup pokrenite, primjerice, php scripts/installation_packages.php prepare --modules=theme,calendar,email, provjerite php scripts/installation_packages.php status i u čarobnjaku odznačite ostale. Za nijedan opcionalni modul koristite --modules=; privremeni Backup i dalje omogućuje uvoz početnih uputa. Instalaciju kao vlasnik izdanja dovršite naredbom php scripts/installation_packages.php cleanup. Snimke su iz testa izdanja 0.2.4, kada je pripremljena samo Tema. Potom se izrađuje jednokratna URL adresa; tekst nakon token= namjerno nije objavljen.
cd /Users/Shared/Simbioza/SimbiozaHR
php scripts/installation_packages.php prepare
php scripts/installation_packages.php status
php bin/simbioza install:prepare --base-url=http://127.0.0.1:8090/SimbiozaHR
5. Hrvatska instalacija: svaki ekran
6. Završna provjera, moduli, jezici i nadogradnje
Na hrvatskom siteu uklonite samo privremeni Backup paket koji je služio uvozu početnih uputa; ako ste Backup izričito odabrali, ostaje instaliran. Očekujte nula migracija na čekanju, uspješnu prijavu, zaključan /install i prohodnu javnu početnu stranicu.
cd /Users/Shared/Simbioza/SimbiozaHR
php scripts/installation_packages.php cleanup
vendor/bin/hph modules migrate-status
composer check-platform-reqs
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8090/SimbiozaHR/auth/login
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8090/SimbiozaHR/install
U našem testu prijava vraća 200, zaključani installer 404, a site ima 22 izvršene i nula otvorenih migracija. U administraciji možete uključiti/isključiti već instalirani modul, ali ne možete dodati Composer paket kroz mod_php web-proces. Kao Unix vlasnik koda koristite CLI:
vendor/bin/hph modules list
vendor/bin/hph modules add calendar --fresh
vendor/bin/hph modules disable calendar
vendor/bin/hph modules enable calendar
vendor/bin/hph modules backups calendar
vendor/bin/hph modules remove calendar --yes
vendor/bin/hph modules add calendar --restore
vendor/bin/hph languages available
vendor/bin/hph languages install de
vendor/bin/hph languages update
php update.php --check
php update.php
Isključivanje čuva podatke; uklanjanje stvara kopiju modula i podataka pa tek zatim briše paket. Prije produkcijske nadogradnje dodatno kopirajte bazu, config/, korisničke datoteke i teme. Poslije provjerite migracije, stvarnu prijavu i javni sadržaj. Nemojte provoditi nadogradnju ručnim composer update na postojećem siteu jer time zaobilazite aplikacijski postupak očuvanja izabranih modula.
Referenca: izdanje 0.2.4, Apache LoadModule, PHP uz Apache. Za produkcijski FPM i Nginx slijedite sestrinsku FPM podstranicu.
Comments
0There are no comments yet.
You must sign in to add a comment.