Wir wechseln nach Kubernetes, um unsere Website zu hosten. Weitere Informationen zu diesem Projekt in Kubespray finden Sie in der Website.
Einschließlich PHP-CMS Ex-Pohse
Die Verwendung des Basis -Container -Orchestrators oder -Motors zum Bereitstellen und Testen ist Straitforward. Derzeit das Bereitstellungsskript . deploy.sh auf Balena Engine. Weitere Informationen zu NodeJS -Abhängigkeiten finden Sie in
Sie müssen nichts in Ihrem vorhandenen PHP -Projekt -Repository ändern. Wenn diese Dateien jedoch vorhanden sind, beeinflussen sie das Verhalten des Erstellungsprozesses:
Der acake2PHP -Ordner enthält Module, die gezogen werden müssen, um lokal zu installieren. Nach dem ersten Checkout stöbern Sie in ACake2PHP -Ordner und durchführen Sie git submodule sync && git submodule update --init --recursive
Nach einer erfolgreichen
git checkoutjedes Mal führen Sie ein, sobaldgit submodule update --init --recursiveum sicherzustellen, dass Submodule von Git heruntergeladen werden. Andernfalls kann Ihr Build scheitern. Entwicklertipp: Um Tags zu pushen:git tag`<version> && git push --tags.
Packagist Composer.json
Liste der Abhängigkeiten, die hier mit composer installiert werden sollen.
Plugins sind sowohl in Git Submodule als auch in Composer.json registriert. Um ein Plugin zu ermöglichen, composer update zu akzeptieren, bearbeiten Sie Composer.json gemäß den verfügbaren veröffentlichten Tags. Im Home-Repository des Plugins ( app/Vendor/<package-name> oder app/Plugin/<plugin-name>/ )
.htaccess
Um Apache Server direkt zum App/Weber-Ordner auf der Server-Seite zu durchsuchen, verwenden Sie Mod_rewrite-Regeln, wie von .htaccess-Dateien bereitgestellt.
/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
# Uncomment if you have a .well-known directory in the root folder, e.g. for the Let's Encrypt challenge
# https://tools.ietf.org/html/rfc5785
#RewriteRule ^(.well-known/.*)$ $1 [L]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
/app/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /app/
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
Dieses Projekt hängt von NPMJS Balena-Cloud ab. Bitte rufen Sie npm update an, wenn sich das System über balena_deploy beschwert, das nicht gefunden wurde.
.Env -Dateien
Stellen Sie Umgebungsvariablen als folgende Argumente fest, zum Beispiel auf MacOS X:
./deploy.sh amd64 --nobuild
Verwenden Sie eine .Env -Datei in Shell, um mit RaspberryPI3 -Hosts zu konfigurieren:
./deploy.sh arm32 --nobuild
.env -> arm32v7.env
./deploy.sh arm32 --balena
Kuchen enthält eine Serveranwendung, die nur für lokale Tests auf Port 9000 durchgeführt wird. Öffnen Sie ein Terminalfenster:
DB=Mysql ./configure.sh --mig-database -u
./start-cake.sh --docker -c server -p 9000
STRG-Klicken Sie auf die URLs, um sie im Browser zu öffnen. Um mehr Hilfe über die Befehlszeilenschnittstelle zu erhalten:
./start-cake.sh --help
Junit -Tests sind mit dem folgenden Anruf zum Cake Server verfügbar: Öffnen Sie ein Terminalfenster:
./test-cake.sh
Es gibt Optionen (-Travis,-OpenShift, -circle), die sich für kontinuierliche Integrationsbauumgebungen widmen. Verwenden Sie -Help, um mehr über Optionen zu erfahren.
Siehe unten, um den Zugriff auf dem integrierten lokalen Server zu ermöglichen.
Wenn die Bereitstellung auf dem Gerät auftritt oder durch ein Git-Push-Ereignis, "Quelle-to-Image (S2I)", ausgelöst wird, benötigt der HTTPD-Server oder POD die richtigen Umgebungsvariablen, die bereit sind. Andernfalls scheitern die Skripte mit einem Fehlerstatus, der keine Verbindung zur Datenbank herstellen kann
Die folgenden Variablen müssen als Serverumgebung eingerichtet werden, die von Ihrem Datenbankadministrator bereitgestellt wird:
# Sqlite, Postgres
DB:Mysql
HINWEIS: DB wählt das CakePHP -Modell/DataSource/Datenbank -DBOSource -Klasse aus, um SQL -Verbindungen zu konfigurieren.
MYSQL_DATABASE:default
# a hostname or IP address
MYSQL_HOST:mysql
HINWEIS: Mit test_ sie werden vom index.php? Test = 1 urls und ./test-cake.sh (-travis) verwendet.
Die folgenden zusätzlichen Variablen müssen als Server Secrets -Umgebung eingerichtet werden, die von Ihrem Datenbankadministrator bereitgestellt werden:
#(optional)
WEBHOOK_URL:<discordapp-url>
# Persistent connection credentials
DATABASE_USER:<provided-user>
MYSQL_ROOT_PASSWORD:<provided-password>
# Just add MYSQL_USER and MYSQL_PASSWORD
MYSQL_USER:<test-user>
MYSQL_PASSWORD:<test-password>
# CakePHP generated
CAKEPHP_SECRET_TOKEN:<secret-token>
CAKEPHP_SECRET_SALT:<secret-salt>
CAKEPHP_SECURITY_CIPHER_SEED:<cipher-seed>
# Generated by ./configure.sh -h
GET_HASH_PASSWORD:<hashed-password>
MYSQL_DATABASE
aria_db
MYSQL_HOST
db
MYSQL_PASSWORD
maria-abc
MYSQL_ROOT_PASSWORD
mariadb
MYSQL_TCP_PORT
3306
MYSQL_USER
maria
SERVER_NAME
<Domain-Name>
Containermotoren bieten eine enge Umgebung mit anhaltender Speicherung. Überprüfen Sie, ob die letzte Datenbankbereitstellung erfolgreich war, und öffnen Sie eine Pod -Shell:
Inside DB Pod:
mysql -uroot --password=${MYSQL_ROOT_PASSWORD}
Geben Sie beispielsweise einige SQL -Anweisungen aus:
ùse aria_db; show tables; Sollte Tabellen auflisten
Inside Acake2Php Pod:
cake schema update --connection=default sollte die Datenbanken erstellen
cake schema update --connection=test sollte die Testdatenbanken erstellen
Ein SQL -Server (muss mit der Remote -Server -Version übereinstimmen) muss nach Hostname oder über seinen Socket erreichbar sein. Wenn es das erste Mal ist, dass Sie diese Verbindung verwenden,
Konfigurieren Sie es als Dienst und konfigurieren Sie die Anmelde -ACL mit der Benutzerschale.
./configure.sh -d -u -i
mysql_secure_installation
Optionale Bearbeitung ./app/Config/database.php Wenn Sie die Klasse database_config ändern möchten.
Optionale Bearbeitung ./app/Model/Datasources/Database Wenn Sie den DBOSource -Treiber ändern möchten.
Bearbeiten ./Scripts/fooargs.sh , um die Standard -Testumgebungseinstellungen zu ändern (Host, Port, Anmeldung, Datenbankname)
Führen Sie das Konfigurationsskript aus:
./configure.sh -d -p <root-password> -i --sql-password=<new-password>
./configure.sh --help && ./migrate-database.sh --help
Häufigere Probleme
Der folgende Befehl setzt die SQL -Benutzer ${DATABASE_USER} und ${MYSQL_USER} Kennwort zurück:
./Migrate -database.sh -p -i -p -Test -SQL -Passwords
Um sich bei den Rechten der Mitarbeiter zu melden, benötigt jemand unter http: //localhost/admin/index.php ein eindeutiges Passwort, das in GET_HASH_PASSWORD gespeichert ist. Eine Möglichkeit, dieses Hashed -Passwort mit "gesalzenen" Verschlüsselung und Setup zu generieren:
./configure.sh -h -p <password> -w <salt>
Um den aktuellen Passwort-Hash wieder zu regenerieren oder zu lesen, stöbern Sie einfach zu http: //localhost/php-cms/e13/etc/gethashpassword.php
GET_HASH_PASSWORD=<HaSheD/PasSwoRd!> Muss in der lokalen Serverumgebung als systemlesbare Variable gespeichert werden.
Indexseite zeigt:
errno : 1146
sqlstate : 42S02
error : Table 'phpcms.info' doesn't exist
Probieren Sie Folgendes aus, um alle Datenbanktabellen zu migrieren (Update). Beantworten Sie "y", wenn Sie aufgefordert werden:
./migrate-database.sh -u
Sie haben wahrscheinlich die Benutzerrechte auf Ihrem Server geändert:
mysql -u root
use mysql;
grant all PRIVILEGES on $TEST_DATABASE_NAME.* to '$MYSQL_USER'@'$MYSQL_HOST';
exit
```acake2php
./configure.sh -c
Dadurch wird das Verbindungsprofil in ..ETC/ Properties -Datei mit der Vorlage zurückgesetzt. Weitere Informationen zu Umgebungsvariablen finden Sie in den Einstellungen Remote Pod (OpenShift) und lokal in ./Scripts/fooargs.sh.
Notiz:
./configure.sh --mig-database -p -i --sql-password
Um einen Zurücksetzen mit Umgebungsroot- und Benutzerkennwort durchzuführen.
(Automatisch) Dies sieht aus wie eine erste Installation von MySQL. Sie müssen Ihren MySQL -Root -Zugriff sichern oder zurücksetzen:
MYSQL_ROOT_PASSWORD=<password> sudo bash deployment/images/mysqldb/mysql_secure_shell
(Handbuch) Die Linux -Shell -Methode zur Wiederinitialisierung von SQL Root -Passwort:
sudo rm -rf /usr/local/var/mysql
mysqld --initialize | grep "temporary password" | cut -f4 -d ":" | cut -c 2- > app/tmp/nupwd
Hinweis: Für root@localhost wird ein temporäres Passwort generiert. Jetzt Identitäten importieren.
brew services restart [email protected]
./configure.sh --mig-database -p $(cat app/tmp/nupwd) -i --sql-password
Sie haben jetzt ein neues SQL -Root -Passwort und ein Testkennwort konfiguriert. Lokaler SQL -Zugriff und Server können Tests ausführen:
./test-cake.sh -p -t <test-password>
Gehen Sie mit dem lokalen integrierten Server die Entwicklungsphase.
Migrieren Sie alle Ihre Tabellen:
./migrate-database.sh -u
Antwort 'y', wenn er aufgefordert wird.
php -i | grep Extensions
Melden Sie sich mit Root -Privilegien an: sollten funktionieren:
mysql -u root --password=${MYSQL_ROOT_PASSWORD}
Wenn nicht, führen Sie Ihre Passwörter zurück:
mysqladmin -uroot password
Wenn es nicht möglich ist, sich anzumelden: + Überprüfen Sie Ihre Umgebungsvariablen (Common.Env und Docker-compose.yml) Einstellungen). Verwenden Sie das eine oder andere und sehen Sie, welche für Sie funktioniert:
MYSQL_HOST=$(hostname)
```(Unix/OSX platforms)
or if docker-compose services are the following name:
MYSQL_HOST=db
MYSQL_TCP_PORT=3306
+ Debug the local configuration, look for unbound VARIABLES, add verbosity level information (add `-o` if you are in a remote shell):
```acake2php
set -u
./configure.sh --verbose -d -u
./configure.sh --mig-database -p ${MYSQL_ROOT_PASSWORD} -t ${MYSQL_PASSWORD} -i
Verpassen Sie nicht den Parameter, um eine lokale Containerdatenbank zu starten:
./migrate-database.sh -u --docker -i or ./configure.sh --mig-database -u --docker -i
Führen Sie das Socket Fixup -Skript mit Argumenten aus:
./migrate-database.sh /tmp/mysqld.sock
brew services restart [email protected]
Mit der CLI können Sie STRL-X-STRL-C den Server beenden und Ihre Datenbank migrieren:
./migrate-database.sh -u
./start_cake.sh
Antwort 'y', wenn er aufgefordert wird.
Die Datenquelle von MySQL.PHP muss binäre und mittelschwere Speichertypen definieren. Bitte sehen Sie sich die Datei -App/Modell/DataSource/mysql_cms.php an, wenn sie vorhanden sind und wenn Sie den folgenden Fehler erlebt haben:
errno : 1054
sqlstate : 42S22
error : Unknown column 'image' in 'field list'
Fügen Sie den mittleren Speicher hinzu und erweitern Sie die ursprüngliche DataSource -Klasse:
<?php
App::uses('Mysql', 'Model/Datasource/Database');
class Mysql_cms extends Mysql
{
public function __construct()
{
parent::__construct();
$this->columns['mediumbinary'] = array('name' => 'mediumblob');
}
/**
* Converts database-layer column types to basic types
*
* @param string $real Real database-layer column type (i.e. "varchar(255)")
* @return string Abstract column type (i.e. "string")
*/
public function column($real) {
$s = parent::column($real);
if($s === "text") {
$col = str_replace(')', '', $real);
$limit = $this->length($real);
if (strpos($col, '(') !== false) {
list($col, $vals) = explode('(', $col);
}
if (strpos($col, 'mediumblob') !== false || $col === 'mediumbinary') {
return 'mediumbinary';
}
}
return $s;
}
}
?>
Stellen Sie sicher, dass es als $ identitäten [db] ['dataSource'] in app/Config/database.php , ./Scripts/fooargs.sh , .travis.yml festgelegt ist und das Datenbankschema aktualisieren:
./migrate-database.sh -u
Eine aktuelle git checkout ließ das Submodul aus der Festplatte verschwinden, die in Master/Development Branch geschehen kann. Erinnern oder fügen Sie das Shell Configure -Skript zu Ihrem Workflow ab oder fügen Sie hinzu:
./configure.sh -m
Sie müssen die Entwicklungsumgebung aus Komponistenabhängigkeiten konfigurieren.
./configure.sh --development
Sie müssen die node_modules/.bin für diese Shell exportieren, um NPMJS -installierte Binärdateien zu finden.
export PATH="`pwd`/node_modules/.bin:$PATH"
Ihr Bash verarbeitet Array in Skripten nicht und verwendet Version 3. Bitte upgrade auf v.4 oder höher. Überprüfen Sie auch Ihre Bash -Version und Upgrade OpenSSL Cacert:
.travis/TravisCI-OSX-PHP/build/prepare_osx_env.sh
Copyright 2016 www.b23prodtm.info
Lizenziert unter der Apache -Lizenz, Version 2.0 (der "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie der Lizenz bei erhalten
Sofern nicht nach geltendem Recht oder schriftlich zu vereinbart wird, wird die im Rahmen der Lizenz verteilte Software auf "As is" -Basis ohne Gewährleistung oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.