Root Server Deployment [WIP]¶
Deployment Vorgehensweise auf einem Root Server.
Plesk: Anwendung öffentlich machen¶
- Anwendung bzw. deren
public/-Verzeichnis in das Domain-Dokumentenroot (httpdocs) legen oder dieses in Domains → Hosting-Einstellungen setzen. - Dokumentenroot für Apache betretbar machen. Nur dieses Verzeichnis ändern, nicht rekursiv:
sudo chmod 755 /var/www/vhosts/<domain>/httpdocs/<app>
# ids-cloud.eu: verteiler.ids-cloud.eu
sudo chmod 755 /var/www/vhosts/ids-cloud.eu/httpdocs/ids-verteiler
- PHP-Laufzeitbenutzer ermitteln (der erste Wert jeder Zeile ist der Benutzer):
ps -eo user:32,cmd | grep '[p]hp-fpm: pool'
- Dieser Benutzer muss Dateien lesen und Verzeichnisse betreten dürfen; der FTP-/Git-Benutzer ist nicht maßgeblich. Die ACL muss ein Benutzer mit
sudosetzen:
sudo setfacl -R -m u:<php-user>:rX /var/www/vhosts/<domain>/httpdocs/<app>
sudo find /var/www/vhosts/<domain>/httpdocs/<app> -type d -exec setfacl -m d:u:<php-user>:rX {} +
# ids-cloud.eu: verteiler.ids-cloud.eu
sudo setfacl -R -m u:ids-cloud.eu_tj8d7jcmrx8:rX /var/www/vhosts/ids-cloud.eu/httpdocs/ids-verteiler
sudo find /var/www/vhosts/ids-cloud.eu/httpdocs/ids-verteiler -type d -exec setfacl -m d:u:ids-cloud.eu_tj8d7jcmrx8:rX {} +
Schreibrechte nur für benötigte var/, cache/ oder uploads/-Verzeichnisse vergeben, nicht für den Code.
Plesk: Schreibbare Anwendungsverzeichnisse¶
Wenn PHP Logdateien, Locks, Cache oder Uploads schreiben muss, Eigentümer nur für die benötigten Verzeichnisse auf den PHP-Laufzeitbenutzer setzen:
sudo chown -R <php-user>:psaserv var/log var/locks
sudo chmod -R u+rwX,g+rX var/log var/locks
# POINTS|PROD
# ~/www_root/ids-verteiler
sudo chown -R ids-cloud.eu_tj8d7jcmrx8:psaserv var/log var/locks
Nicht rekursiv auf das gesamte Projekt anwenden.
- Database (Tabellen|Templates|Tabellenfelder)
- Settings.env im Stammverzeichnis
- Composer Caching ggf. leeren (composer clear-cache)
- Composer Update
- Git Stash/Restore/Commit Änderungen im Workspace bereinigen
- git rm untracked files (falls nicht zum repo und auch nicht wichtig)
- git pull origin
- composer.json Versinone der Libraries checken
- Ggf. delete composer.lock
- composer install --no-dev --optimize-autoloader