Apps
cipi app create
cipi app create unterstützt zwei App-Typen: Laravel (Standard) und
Benutzerdefiniert (--custom). Laravel Apps erhalten eine vollständig isolierte Umgebung:
Linux-Benutzer, PHP-FPM-Pool oder Laravel Octane (FrankenPHP) seitdem
v5.0, Nginx vhost, Datenbank (MariaDB standardmäßig; optional PostgreSQL da
v4.8.0), Supervisor Worker, Crontab-Eintrag, Deployer-Releases ohne Ausfallzeiten, SSH
Bereitstellungsschlüssel und automatisch kompiliert .env. Benutzerdefinierte Apps sind einfacher – siehe
custom apps für Einzelheiten.
Laravel App (Standard – PHP-FPM)
$ cipi app create
Laravel Octane (FrankenPHP)
$ cipi app create --octane $ cipi app create --octane=frankenphp # explicit (same as --octane)
Siehe Laravel Octane für Anforderungen, Konvertierung und wie der vhost unterscheidet sich von FPM.
Nicht interaktiv (Flaggen)
$ cipi app create \ --user=myapp \ --domain=myapp.com \ --repository=git@github.com:you/myapp.git \ --branch=main \ --php=8.5 # Laravel Octane (FrankenPHP) — v5.0+ $ cipi app create --user=myapp --domain=myapp.com \ --repository=git@github.com:you/myapp.git --octane # optional PostgreSQL (v4.8.0+, after cipi db install pgsql) $ cipi app create --user=myapp --domain=myapp.com \ --repository=git@github.com:you/myapp.git --engine=pgsql
Apps
Laravel Octane (FrankenPHP)
Seitdem v5.0Laravel Apps können HTTP bereitstellen Laravel Octane mit dem FrankenPHP Server statt pro App PHP-FPM-Pool. Octane und klassische FPM-Apps laufen nebeneinander auf demselben Cipi Server.
Was Cipi konfiguriert
- Weist einen Localhost-Port zu
8100–8999und Geschäfteoctane/octane_portinapps.json - Nginx vhost verwendet
proxy_passbis Octane und stellt statische Dateien von bereitcurrent/public— no per-app FPM pool - Supervisor Programm
${app}-octaneneben Warteschlangenarbeitern - Deployer template
laravel-octane.phpstartet / lädt Octane bei der Bereitstellung neu .env:OCTANE_SERVER=frankenphp,OCTANE_HTTPS=true
App-Anforderungen
Ihr Laravel-Repository muss enthalten laravel/octane und laufen
php artisan octane:install --server=frankenphp. Octane beginnt nach dem ersten
erfolgreiche Bereitstellung.
# create an Octane app $ cipi app create --user=myapp --domain=myapp.com \ --repository=git@github.com:you/myapp.git --octane # convert an existing FPM app → Octane (or the reverse) $ cipi app convert myapp --to=octane $ cipi app convert myapp --to=fpm # tune Octane workers (also see app limits) $ cipi app limits myapp --octane-workers=4
cipi app convert --to=octane|fpm schreibt den Pool / vhost / Supervisor / Deployer neu
Vorlage /.envund wendet SSL erneut an, wenn bereits ein Zertifikat vorhanden ist.
cipi worker oder
Horizon — Octane behandelt nur HTTP. Kombiniere es mit
Reverb für WebSockets.cipi app create --custom
Erstellt eine benutzerdefinierte App mit klassischer Bereitstellung (keine Null-Ausfallzeit): Code wird bereitgestellt
htdocs – nein current/shared Symlinks. Ideal für statische Websites,
SPAs (Vue, React, Svelte), WordPress, andere CMS oder jedes Nicht-Laravel PHP-Projekt oder Framework.
Bei der Erstellung wählen Sie nur das Dokumentstammverzeichnis (Standard)./, oder z.B. www,
dist, public). Nginx ist mit vorkonfiguriert index index.html
index.php, try_files $uri $uri/ /index.php?$args, und
error_page 404 /404.html – keine Eingabeaufforderungen für try_files oder Einstiegspunkt.
Git optional (nur SFTP)
Das Git-Repository ist optional für benutzerdefinierte Apps.
Laravel Apps benötigen weiterhin ein Repository. Wenn Sie das Repository für eine benutzerdefinierte überspringen
App,
Cipi schafft /home/<app>/htdocs mit einem Platzhalter index.html und
tut
Konfigurieren Sie keinen Bereitstellungsschlüssel oder webhook – Sie laden Dateien mit hoch SFTP (oder SCP/rsync)
zu
~/htdocsals App-Benutzer. Die Onboarding-Ausgabe erklärt dies „kein Repo – nur SFTP“
Arbeitsablauf. Wenn Sie ein Repository bereitstellen, bleibt das Verhalten unverändert: verwenden cipi deploy
<app> to pull code into htdocs.
Was ist enthalten und was Sie hinzufügen
Benutzerdefinierte Apps haben keine Datenbank, Nein .env, nein cron, und nein
Warteschlangenarbeiter. Wenn ein Repository konfiguriert ist, sind ein Bereitstellungsschlüssel und (mit Git-Auto-Setup) webhook vorhanden
gezeigt; Bei reinen SFTP-Apps entfallen diese. In der Zusammenfassung nach der Erstellung werden der SSH-Zugriff und weitere aufgeführt
Schritte entsprechend.
Wenn Ihre benutzerdefinierte App eine Datenbank benötigt (z. B. WordPress, Drupal), erstellen Sie eine mit
cipi db create --name=<app> nach dem Einsatz. Siehecipi db
für Backup, Wiederherstellung und Passwortverwaltung.
Mit Git – nicht interaktives Beispiel:
$ cipi app create --custom --user=mysite --domain=mysite.com \
--repository=git@github.com:you/mysite.git --docroot=dist
Nur SFTP – weglassen --repository und --branch:
$ cipi app create --custom --user=mysite --domain=mysite.com --docroot=dist
Mit einem Repository verwenden cipi deploy <app> einsetzen; Code wird geklont
/home/<app>/htdocs.
app list / app show / app edit / app delete
| Befehl | Beschreibung |
|---|---|
| cipi app list | Listen Sie alle Apps mit Domäne, PHP-Version und Status auf ((suspended) wann
offline) |
| cipi app show <app> | Vollständige Details: Domäne, PHP, Bereitstellungsschlüssel, Worker, webhook, Suspend-Status. Für benutzerdefinierte Apps: Geben Sie „Benutzerdefiniert“ ein, docroot; webhook (und Bereitstellungsschlüssel) entfällt, wenn nur SFTP ohne a Repository. |
| cipi app edit <app> --php=8.5 | Hot-Swap-Version PHP. Aktualisiert FPM-Pool, Nginx Socket, Supervisor, Crontab, Deployer
config und .env – Keine Ausfallzeiten |
| cipi app edit <app> --branch=develop | Ändern Sie den Bereitstellungszweig |
| cipi app edit <app> --domain=new.example.com | Benennen Sie die primäre Domäne um (seit v4.6.2). Validiert Format und
Einzigartigkeit, verschiebt die alte Primärdatei in Aliase, generiert den Nginx vhost neu, aktualisiert
APP_URL, aktualisiert Git-Webhooks bei automatischer Konfiguration und gibt sie erneut aus
Let's Encrypt, wenn bereits ein Zertifikat vorhanden war |
| cipi app edit <app> --repository=<SSH-URL> | Hängen Sie das Git-Repository an oder ändern Sie es (z. B. aktivieren Sie die Bereitstellung auf einer benutzerdefinierten Nur-SFTP-App).
erstellt ohne --repository). Zusammensetzbar mit--branch,
--php, und --domain
|
| cipi app edit <app> --node-build='npm ci && npm run build' | Führen Sie bei jeder Bereitstellung einen Knoten-Build nach Composer Anbietern aus (seit
v5.0). Der Deployer führt aus
.deployer/node-build.sh(Fail-Closed; Befehl wird validiert). Klar mit
--no-node-build |
| cipi app edit <app> --predeploy-snapshot | Aktivieren Sie vor jeder Bereitstellung einen Datenbank-Dump (seitdem).
v5.0). Gleiches Verhalten wie beim Passieren
--snapshot auf jedem cipi deploy. Siehe
Stellen Sie DB-Snapshots vorab bereit |
| cipi App konvertieren <app> --to=octane|fpm | Konvertieren Sie zwischen PHP-FPM und Laravel Octane (seit v5.0). Siehe Laravel Octane |
| cipi app env <app> [--show|--get|--set|--unset] | Öffnen Sie die App .env in Nano, oder Schlüssel verwalten
seitdem nicht interaktiv v5.0.3
(--show/--get/--set/--unset,
optional --json). Wird bei benutzerdefinierten Apps mit einem Fehler beendet
(keine .env). |
| cipi app run <app> <cmd> [args…] | Nicht interaktiver Befehl als App-Benutzer auf die Whitelist gesetzt (seit
v5.0.3). Siehe app run |
| cipi App Deploy-Config <App> | Strukturierte Deployer-Rezeptoptionen (seit v5.0.3). Siehe deploy-config |
| cipi App webhook <App> neu erstellen [--rotate-secret] | Erstellen Sie die GitHub/GitLab neu und stellen Sie webhook bereit; optionale geheime Rotation
Aktualisierungen CIPI_WEBHOOK_TOKEN (seit
v5.0.6). RUHE:
POST /api/apps/{name}/webhook/recreate (API
1.15.0+). Seitdem 5.0.6,
app edit --repository= Erstellt nur webhook/Deploy-Schlüssel neu
wenn sich die Repository-URL tatsächlich ändert. |
| cipi App-Reset-Passwort <App> | Generieren Sie das SSH-Passwort des Linux-Benutzers der App neu. Das neue Passwort wird angezeigt Bildschirm – speichern Sie es sofort |
| cipi app reset-db-password <app> | Generieren Sie das Datenbankpasswort der App neu (MariaDB oder PostgreSQL pro App).
engine) und automatisch aktualisieren DB_PASSWORD in der App
.env. Wird bei benutzerdefinierten Apps (keine Datenbank) mit einem Fehler beendet.
|
| cipi App <App> löschen | Entfernen Sie dauerhaft die App, den Benutzer, die Datenbank (falls Laravel), Nginx vhost, den FPM-Pool usw Supervisor Arbeiter. Bei benutzerdefinierten Apps wird das Löschen der Datenbank übersprungen (es wurde keine erstellt). Fragt nach Bestätigung. |
| cipi app delete <app> --force | Identisch mit Löschen, überspringt jedoch die Bestätigungsaufforderung – für Skripte das Bedienfeld API und
cipi-cli
|
cipi app reverb
Laravel Reverb ist Laravels eigener WebSocket-Server. Cipi betreibt ihn seit v5.0; v5.1.2 macht ihn produktionsreif — generierte Zugangsdaten, Schema vom Zertifikat, höhere Verbindungslimits und ein Proxy, der eigene Routen nicht mehr verschluckt.
Enable verdrahtet vier Dinge: einen Localhost-Port 9000–9099, das Supervisor-Programm
${app}-reverb, einen nginx-Proxy für /app/{key} und
/apps/{id}/… auf der App-Domain, und REVERB_* /
VITE_REVERB_* in der .env.
$ cipi app reverb enable myapp $ cipi app reverb enable myapp --restart-supervisor # neues Open-File-Limit sofort anwenden $ cipi app reverb status myapp $ cipi app reverb disable myapp
Reverb ist nur Laravel. enable erneut ist sicher: Port und Keys bleiben,
Host und Schema werden neu abgeleitet. Der Node-Build muss nach enable
laufen — Vite backt VITE_REVERB_* ein. Siehe
node_build.
/app und /apps gehören zum Protokoll. Bis
5.1.1 war der Proxy location /app (nginx-Präfix) — also landeten
/appointments und /application/… in Reverb. Seit
5.1.2 gilt ~ ^/apps?(/|$). Eine App mit eigener
/app-Route braucht eine eigene Subdomain.ws:// oder wss:// kommt vom Zertifikat. Eine Wildcard wird zu einem konkreten Host.
status zeigt die Client-URL und warnt bei fehlenden Keys, altem Schema oder
altem Open-File-Limit. --restart-supervisor startet alle Queue-Worker
des Servers neu.
disable stellt BROADCAST_CONNECTION wieder her (Fallback log). Ein Clone
bekommt eigenen Port, Keys und Domain. Deklaration in
workers.reverb. Migration 5.1.2
schreibt gierige vHosts um (Backup /var/lib/cipi/vhost-backup-5.1.2) und füllt
fehlende .env-Keys ohne Überschreiben — danach neu deployen.
cipi app clone
Seitdem v5.0, klonen Sie eine vorhandene Laravel-App in eine neue Staging- (oder Review-)App mit
eine eigene Domäne. Sets cloned_from in apps.json; tut nicht
Kopieren Sie webhook oder Git-IDs. Hat die Quelle Reverb, bekommt der Clone eigenen Port, Keys und Host (seit v5.1.2). Siehe cipi app reverb.
$ cipi app clone myapp --domain=staging.myapp.com $ cipi app clone myapp --domain=staging.myapp.com --name=myapp-stg --branch=develop --with-db $ cipi app clone myapp --domain=staging.myapp.com --no-db
cipi app limits
Seitdem v5.0Legen Sie Ressourcenlimits pro App fest, wobei feste Obergrenzen von Cipi erzwungen werden.
$ cipi app limits myapp --fpm-max-children=20 --memory-limit=256M $ cipi app limits myapp --octane-workers=4 --worker-procs=3 $ cipi app limits myapp # show current limits
app suspend / app unsuspend
Seitdem verfügbar v4.5.8. Nehmen Sie eine App offline, ohne sie zu löschen – nützlich für die Abrechnung
Laderäume, Wartungsfenster oder Staging-Standorte, die vollständig abgedunkelt werden sollen. Durch das Anhalten wird der Nginx vhost ausgetauscht
eine Statik HTTP 503 page served from /var/www/cipi-suspended/.
$ cipi app suspend myapp # take offline (503 page) $ cipi app unsuspend myapp # restore normal vhost
| Befehl | Beschreibung |
|---|---|
| cipi app suspend <app> | Sets suspended: true in apps.json, baut den vhost neu auf
Geben Sie 503 für alle Anfragen zurück. Idempotent, wenn bereits suspendiert. |
| cipi App-Suspendierung von <App> aufheben | Löscht das Flag, stellt den normalen Laravel/benutzerdefinierten Vhost wieder her und wendet SSL Blöcke erneut an. Idempotent, wenn bereits online. |
Verhalten
- HTTPS inklusive – certbot klont den Suspensions-Vhost in den
:443Block, daher zeigt HTTPS auch die Offline-Seite an - Let's Encrypt funktioniert immer noch – die
/.well-known/acme-challenge/Pfad bleibt öffentlich, sodass Zertifikate während der Sperrung ausgestellt oder erneuert werden können - Überlebt die Vhost-Regeneration – Alias-Änderungen, PHP Bearbeitungen und SSL Installationen Respektieren Sie die hängende Flagge
- Visible in listings —
cipi app listmarkiert gesperrte Apps;cipi domainsanhängt⏸ suspendedin jeder Zeile
cipi basicauth
zeigt eine Anmeldeaufforderung an, führt Ihre App jedoch weiterhin aus. app suspend stoppt PHP vollständig und
stellt eine statische Offline-Seite bereit – Besucher erreichen nie Laravel. Verwenden Sie suspend für „Site geschlossen“;
Basisauthentifizierung für „Vorschau nur auf Einladung“.Auch erhältlich über die RUHE API
(POST /api/apps/{name}/suspend), cipi-cli
(apps suspend) und die WHMCS-Modul (Aussetzen /
Tasten zum Aufheben der Suspendierung). Erfordert Token-Fähigkeit apps-suspend für API Zugang.
cipi basicauth
Seitdem verfügbar v4.5.2. Schützen Sie jede App – Laravel oder benutzerdefinierte – hinter einem Nginx Eingabeaufforderung für Benutzername/Passwort. Nützlich zum Staging von Websites, internen Tools oder Apps, die noch nicht bereit sind noch kein öffentlicher Verkehr.
| Befehl | Beschreibung |
|---|---|
| cipi basicauth enable <app> [--user=NAME] [--password=PASS] | Aktivieren Sie die HTTP-Basisauthentifizierung. Anmeldeinformationen werden generiert, wenn sie weggelassen werden, und werden einmal angezeigt Bildschirm – speichern Sie sie sofort |
| cipi basicauth deaktiviere <app> | Entfernen Sie die Eingabeaufforderung und löschen Sie die gespeicherten Anmeldeinformationen |
| cipi BasicAuth-Status <App> | Zeigt an, ob die Basisauthentifizierung aktiviert ist und den konfigurierten Benutzer |
Anmeldeinformationen werden mit gehashtopenssl passwd -apr1 (nein apache2-utils benötigt)
und darin gespeichert /etc/nginx/cipi-basicauth/<app>.htpasswd; Der aktivierte Zustand lebt inapps.json. Die auth_basic Anweisungen werden pro injiziert locationblockieren, sodass der Schutz die vhost-Neugenerierung übersteht (Aliasänderungen, PHP Bearbeitungen) und in den geklont wird
:443 Blockierung durch Certbot – HTTPS sind ebenfalls abgedeckt. ACME-Herausforderungen bleiben bestehen
öffentlich, sodass die Ausstellung und Erneuerung von Zertifikaten niemals blockiert wird. Die Basisauthentifizierung wird automatisch entfernt
cipi app delete.
cipi auth, der die Composer verwaltet
auth.json für private Paket-Repositorys.ENV-Variablen verwalten
Jeder LaravelApp hat eine Single.env Datei wohnhaft bei
/home/<app>/shared/.env. Benutzerdefinierte Apps haben keine .env.
Es wird im Laufe von Cipi erstellt und vorbefüllt app create mit der Datenbank
Anmeldeinformationen, APP_KEY, APP_URL, Cache-/Sitzungs-/Warteschlangeneinstellungen und die
webhook-Token. Die shared/ Das Verzeichnis ist mit jeder Version symbolisch verknüpft, also dasselbe
.env ist immer aktiv, unabhängig davon, welche Version aktuell ist.
Interaktiv bearbeiten über CLI
Der sicherste Weg, ENV-Werte zu ändern, ist über Cipi selbst – es öffnet die Datei in Nano als App Benutzer mit den richtigen Berechtigungen:
$ cipi app env myapp
Sparen Sie mit Strg+O dann beenden Sie mit Strg+X. Änderungen werden für neue sofort wirksam Anfragen – für die meisten Werte ist kein Neustart erforderlich. Wenn Sie die Warteschlangenverbindung oder den Cache-Treiber ändern, Starten Sie die Arbeiter neu:
$ cipi worker restart myapp
Nicht interaktive Flags (v5.0.3+)
Seitdem v5.0.3, Skripte, das Panel API und das Web GUI verwalten können.env ohne einen Editor zu öffnen:
$ cipi app env myapp --show $ cipi app env myapp --show --json $ cipi app env myapp --get=APP_URL $ cipi app env myapp --set=APP_DEBUG=false $ cipi app env myapp --unset=LEGACY_KEY
RUHE: GET|PUT /api/apps/{name}/env (Fähigkeitapps-env, API
1.14+). MCP: AppEnvShow, AppEnvUpdate.
Direkt über SSH bearbeiten
Sie können die Datei auch direkt über SSH als Root oder als App-Benutzer bearbeiten:
# as root $ nano /home/myapp/shared/.env # or switch to the app user first $ su - myapp $ nano ~/shared/.env
Wichtige ENV-Variablen, festgelegt durch Cipi
| Variabel | Beschreibung | Festgelegt von |
|---|---|---|
| APP_KEY | Laravel Verschlüsselungsschlüssel – wird einmal bei der App-Erstellung generiert | Cipi |
| APP_URL | Automatisch aktualisiert von cipi ssl install |
Cipi |
| DB_CONNECTION | mysql für MariaDB (Drop-in-kompatibel), oder pgsql wenn die App
Motor ist PostgreSQL (v4.8.0+) |
Cipi |
| DB_DATABASE / DB_USERNAME / DB_PASSWORD | Automatisch generierte Anmeldeinformationen für die isolierte Datenbank der App | Cipi |
| CACHE_STORE | database – nutzt die Datenbank der App |
Cipi |
| SESSION_DRIVER | database |
Cipi |
| QUEUE_CONNECTION | database |
Cipi |
| BROADCAST_CONNECTION | Bei Enable auf reverb; beim Disable zurück auf den vorherigen Treiber (oder log) (v5.1.2+) |
Cipi |
| REVERB_APP_ID / KEY / SECRET | Einmal beim ersten cipi app reverb enable erzeugt, danach nie rotiert. |
Cipi (v5.1.2+) |
| REVERB_HOST / PORT / SCHEME | Öffentlicher Socket, vom Zertifikat abgeleitet (https/443 oder http/80). |
Cipi (v5.1.2+) |
| VITE_REVERB_APP_KEY / HOST / PORT / SCHEME | Öffentliche Kopien, von Vite zur Build-Zeit eingebacken. Nach Enable, Domainwechsel oder SSL neu deployen. | Cipi (v5.1.2+) |
| REVERB_SERVER_HOST / PORT | Localhost-Bind des Supervisor-Programms. Beim Disable entfernt; die Zugangsdaten bleiben. | Cipi |
| CIPI_WEBHOOK_TOKEN | HMAC-Geheimnis für die cipi-Agent webhook-Validierung | Cipi |
| CIPI_APP_USER | Linux-Benutzername, dem diese App gehört | Cipi |
| CIPI_MCP | Aktivieren oder deaktivieren Sie den integrierten MCP-Server unter /cipi/mcp |
Benutzer (true standardmäßig) |
cipi db password myapp (oder
cipi app reset-db-password myapp) – es aktualisiert sowohl die Engine als auch die
.env atomar. Wenn Sie sie manuell bearbeiten, besteht die Gefahr, dass die beiden nicht mehr synchron sind.
Hinzufügen eigener Variablen
Fügen Sie am Ende der Datei eine beliebige benutzerdefinierte Variable hinzu, wie Sie es normalerweise in einem Laravel-Projekt tun würden. Sie
bleiben über Bereitstellungen hinweg erhalten, da die .env wohnt darin shared/ und ist
wird nie vom Deployer überschrieben.
# your custom variables
STRIPE_KEY=sk_live_...
STRIPE_SECRET=sk_live_...
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org
cipi app run
Seitdem v5.0.3, führe a aus auf die Whitelist gesetzt, nicht interaktiv Befehl als App
Benutzer – nützlich von CLI, Panel API und Web GUI „App-Befehle“. Editoren, Pager, Shells und
REPLs sind blockiert (nano, vim, less, bash,
tinker, …). Interaktive Flaggen (z. B. tail -f, php -a) sind
abgelehnt.
$ cipi app run myapp composer install --no-dev $ cipi app run myapp npm ci $ cipi app run myapp ls -la shared $ cipi app run --commands # list allowed binaries $ cipi app run --commands --json
Zu den zulässigen Binärdateien gehören: composer, npm/npx/yarn/pnpm,
ls/ll, cat/head/tail, Dateisystem
Helfer, Archive, git, php, node, und find.
RUHE: POST /api/apps/{name}/run (asynchroner Job, Fähigkeit apps-run) und
GET /api/run-commands (API 1.14+). MCP:
AppRun, AppRunCommands.
/usr/bin/env: '--': No such file or directory—
Jeder Befehl auf der Whitelist (einschließlich GUI App-Befehlen) schlug vor diesem Patch fehl. Lauf
cipi self-update.cipi app logs
Tail-Anwendungsprotokolle in Echtzeit. Die Protokolle werden täglich gewechselt und 14 Tage lang aufbewahrt. Von
Standardmäßig werden alle Protokolle angezeigt, einschließlich Laravel täglicher Protokolle
(laravel-YYYY-MM-DD.log) von shared/storage/logs/.
$ cipi app logs myapp # all logs (incl. Laravel daily logs) $ cipi app logs myapp --type=nginx # Nginx access + error $ cipi app logs myapp --type=php # PHP-FPM errors $ cipi app logs myapp --type=worker # queue worker output $ cipi app logs myapp --type=deploy # deploy history $ cipi app logs myapp --type=laravel # Laravel application logs
app artisan & app tinker
Führen Sie Artisan-Befehle aus und basteln Sie als App-Benutzer mit der richtigen PHP-Version und
open_basedir Kontext – genau so, wie sie während einer Bereitstellung ausgeführt würden.
$ cipi app artisan myapp migrate:status $ cipi app artisan myapp queue:retry all $ cipi app artisan myapp db:seed --class=ProductionSeeder $ cipi app artisan myapp cache:clear $ cipi app tinker myapp
SSH as the app user
Jede App läuft unter einem eigenen isolierten Linux-Benutzer. Manchmal muss man direkt darin arbeiten Benutzerumgebung – überprüfen Sie Dateien, führen Sie einmalige Skripts aus oder debuggen Sie etwas, das nur als reproduziert wird der richtige Benutzer.
Direktes SSH als App-Benutzer (empfohlen)
App-Benutzer können mit dem bei der App-Erstellung generierten Passwort direkt eine SSH-Verbindung zum Server herstellen:
# connect as the app user (password auth) $ ssh myapp@your-server-ip # you are directly inside the app user's shell myapp@server:~$ pwd /home/myapp myapp@server:~$ cd ~/current myapp@server:~$ ls
Das Passwort wird angezeigt, wenn die App erstellt (oder verwendet) wird cipi app reset-password myapp zu
regenerieren). Dies funktioniert für SFTP-Clients, IDE-Remotesitzungen und Terminalzugriff.
Über cipi (Admin-Pfad)
Wenn Sie bereits als verbunden sind cipikönnen Sie direkt zu jedem App-Benutzer wechseln:
$ ssh cipi@your-server-ip
cipi@server:~$ sudo su - myapp
myapp@server:~$ pwd
/home/myapp
Setzen Sie das App-Benutzerkennwort zurück
Wenn Sie das Passwort eines App-Benutzers neu generieren müssen (z. B. für direktes SSH oder SFTP), verwenden Sie:
$ cipi app reset-password myapp
Das neue Passwort wird auf dem Bildschirm angezeigt – speichern Sie es sofort.
Nützliche Befehle, sobald Sie als App-Benutzer angemeldet sind
# navigate to the active release myapp@server:~$ cd ~/current # run artisan directly with the correct PHP version myapp@server:~$ /usr/bin/php8.5 ~/current/artisan tinker # inspect the shared .env myapp@server:~$ cat ~/shared/.env # tail all logs myapp@server:~$ tail -f ~/logs/*.log # check active releases (ll is a built-in alias for ls -al) myapp@server:~$ ll ~/releases/
Jeder App-Benutzer .bashrc definiert ein Handy ll='ls -al' Alias (seit
v4.5.5) für schnellere Verzeichniseinträge über SSH, neben dem
deploy und composer Verknüpfungen. Apps, die vor 4.5.5 erstellt wurden, erhalten das
ll Alias automatisch beim nächsten Mal cipi self-update über die
4.5.5 Migration.
open_basedir Beschränkung begrenzt PHP bis /home/myapp.
Dies wird auf der PHP-FPM-Ebene erzwungen, nicht auf der Shell-Ebene – Sie können auf jede Datei zugreifen, die Sie haben
Shell-Benutzer können lesen, wenn sie im Terminal arbeiten.