Nous déménageons à Kubernetes pour héberger notre site Web ... Voir plus sur ce projet à Kubespray.
Y compris PHP-CMS ex-POHSE
L'utilisation de l'orchestrateur ou du moteur de conteneur de base à déployer et à tester, est Straitforward. Actuellement le script de déploiement . deploy.sh basé sur le moteur Balena. En savoir plus sur les dépendances NodeJS
Vous n'avez pas besoin de changer quoi que ce soit dans le référentiel de votre projet PHP existant. Cependant, si ces fichiers existent, ils affecteront le comportement du processus de construction:
Le dossier ACAKE2PHP comprend des modules qui doivent être tirés pour installer localement. Après le premier vérification de la vérification du dossier ACAKE2PHP et git submodule sync && git submodule update --init --recursive vous verrez des modules peupler le sous-dossier app / webroot / ... si quelque chose ne va pas, effacez le dossier ACAKE2PHP et recommencez.
Après une
git checkoutréussie à chaque fois, exécutez une foisgit submodule update --init --recursivepour vous assurer que les sous-modules sont téléchargés à partir de Git. Sinon, votre construction peut échouer. Conseil du développeur: pour pousser les balises:git tag`<version> && git push --tags.
Packagist composer.json
Liste des dépendances à installer avec composer ici.
Les plugins sont enregistrés dans le sous-module Git et Composer.json . Pour permettre à un plugin d'accepter composer update , modifiez Composer.json en fonction des balises publiées disponibles. Dans le référentiel domestique du plugin ( app/Vendor/<package-name> ou app/Plugin/<plugin-name>/ )
.htaccess
Pour permettre à Apache Server de parcourir directement le dossier APP / Webroot sur côté serveur, utilisez des règles MOD_Rewrite, comme indiqué par les fichiers .htaccess.
/.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>
Ce projet dépend de NPMJS Balena-Cloud. Veuillez appeler npm update chaque fois que le système se plaint de balena_deploy non trouvé.
Fichiers .env
Définir les variables d'environnement comme les arguments suivants, par exemple sur macOS X:
./deploy.sh amd64 --nobuild
Utilisez un fichier .env dans shell pour configurer avec des hôtes RaspberryPI3:
./deploy.sh arm32 --nobuild
.env -> arm32v7.env
./deploy.sh arm32 --balena
Le gâteau comprend une application de serveur qui n'est faite que pour les tests locaux sur le port 9000. Ouvrez une fenêtre de terminal:
DB=Mysql ./configure.sh --mig-database -u
./start-cake.sh --docker -c server -p 9000
Ctrl-cliquez sur les URL pour les ouvrir dans le navigateur. Pour obtenir plus d'aide sur l'interface de ligne de commande:
./start-cake.sh --help
Les tests JUnit sont disponibles avec l'appel suivant au serveur de gâteaux: ouvrez une fenêtre de terminal:
./test-cake.sh
Il existe des options (--travis, --openshift, - circle) dédiées aux environnements de construction d'intégration continue. Utiliser - help pour en savoir plus sur les options.
Voir ci-dessous pour permettre l'accès sur le serveur local intégré.
Lorsque le déploiement se produit sur l'appareil ou est déclenché par un événement Git Push, «source-image (S2I)», le Httpd-Server ou Pod a besoin de variables d'environnement appropriées pour être prêts. Sinon, les scripts échoueront avec un état d'erreur, incapable de se connecter à la base de données
Les variables suivantes doivent être configurées en tant qu'environnement serveur, fournie par votre administrateur de base de données :
# Sqlite, Postgres
DB:Mysql
Remarque: DB sélectionne le modèle CakePHP / la classe DBOSource de la base de données CakePHP pour configurer les connexions SQL.
MYSQL_DATABASE:default
# a hostname or IP address
MYSQL_HOST:mysql
Remarque: Préfixe avec test_, ils sont utilisés par l'index.php? Test = 1 URL et ./test-nake.sh (--travis)
Les variables supplémentaires suivantes doivent être configurées en tant qu'environnement des secrets de serveur, fournis par votre administrateur de base de données:
#(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>
Les moteurs à conteneurs fournissent un environnement confiné, avec un stockage persistant. Vérifiez que le dernier déploiement de la base de données a été réussi, ouvrez un shell POD:
Pod de DB intérieur:
mysql -uroot --password=${MYSQL_ROOT_PASSWORD}
Émettez certaines instructions SQL, par exemple:
ùse aria_db; show tables; devrait répertorier les tables
POD ACAKE2PHP à l'intérieur:
cake schema update --connection=default devrait créer les bases de données
cake schema update --connection=test devrait construire les bases de données de test
Un serveur SQL (doit correspondre à la version du serveur distant) doit être accessible par nom d'hôte ou via sa prise. Si c'est la première fois que vous utilisez cette connexion,
Configurez-le en tant que service et configurez la connexion ACL avec le shell utilisateur.
./configure.sh -d -u -i
mysql_secure_installation
Edit facultatif ./app/Config/database.php Si vous souhaitez modifier la classe DATABASE_CONFIG.
Edit facultatif ./app/Model/Datasources/Database Si vous souhaitez modifier le pilote dbosource.
Edit ./Scripts/fooargs.sh pour modifier les paramètres de l'environnement de test par défaut (hôte, port, connexion, nom de base de données)
Exécutez le script de configuration:
./configure.sh -d -p <root-password> -i --sql-password=<new-password>
./configure.sh --help && ./migrate-database.sh --help
Problèmes plus courants
La commande suivante réinitialise les utilisateurs SQL ${DATABASE_USER} et ${MYSQL_USER} Mot de passe:
./migrate-database.sh -p -i -p - Test-Sql-Password
Pour vous connecter avec les droits du personnel, sur http: //localhost/admin/index.php, quelqu'un a besoin d'un mot de passe unique stocké dans GET_HASH_PASSWORD . Une façon de générer ce mot de passe haché avec un cryptage et une configuration «salés»:
./configure.sh -h -p <password> -w <salt>
Pour régénérer ou lire à nouveau le hachage actuel du mot de passe, accédez simplement à http: //localhost/php-cms/e13/etc/gethashpassword.php
GET_HASH_PASSWORD=<HaSheD/PasSwoRd!> Doit être stocké dans l'environnement du serveur local en tant que variable lisible par système.
Page d'index s'affiche:
errno : 1146
sqlstate : 42S02
error : Table 'phpcms.info' doesn't exist
Essayez ce qui suit pour migrer (mettre à jour) toutes les tables de base de données, répondez «y» lorsque vous y êtes invité:
./migrate-database.sh -u
Vous avez probablement des privilèges utilisateur modifiés sur votre serveur:
mysql -u root
use mysql;
grant all PRIVILEGES on $TEST_DATABASE_NAME.* to '$MYSQL_USER'@'$MYSQL_HOST';
exit
```acake2php
./configure.sh -c
Cela réinitialisera le profil de connexion dans le fichier ..etc / Properties avec le modèle. En savoir plus sur les variables d'environnement se trouvent dans les paramètres de pod distant (OpenShift) et localement dans ./scripts/fooargs.sh.
Note:
./configure.sh --mig-database -p -i --sql-password
Pour faire une réinitialisation avec l'environnement racine et le mot de passe utilisateur.
(Automatique) Cela ressemble à une première installation de MySQL. Vous devez sécuriser ou réinitialiser votre accès racine MySQL:
MYSQL_ROOT_PASSWORD=<password> sudo bash deployment/images/mysqldb/mysql_secure_shell
(Manuel) La voie du shell Linux pour réinitialiser le mot de passe racine SQL:
sudo rm -rf /usr/local/var/mysql
mysqld --initialize | grep "temporary password" | cut -f4 -d ":" | cut -c 2- > app/tmp/nupwd
Remarque: un mot de passe temporaire est généré pour root @ localhost. Importe maintenant des identités.
brew services restart [email protected]
./configure.sh --mig-database -p $(cat app/tmp/nupwd) -i --sql-password
Vous avez maintenant configuré un nouveau mot de passe root SQL et un mot de passe de test. L'accès et le serveur SQL locaux sont prêts à exécuter des tests:
./test-cake.sh -p -t <test-password>
Passez à la phase de développement avec le serveur intégré local.
Migrez toutes vos tables:
./migrate-database.sh -u
Répondez «y» lorsque vous y êtes invité.
php -i | grep Extensions
Connectez-vous avec les privilèges racinaires devrait fonctionner:
mysql -u root --password=${MYSQL_ROOT_PASSWORD}
Sinon, faites une réinitialisation de vos mots de passe:
mysqladmin -uroot password
S'il n'est pas possible de se connecter: + Vérifiez vos variables d'environnement (Common.env et Docker-Compose.yml)). Utilisez l'un ou l'autre et voyez qui fonctionne pour vous:
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
Ne manquez pas le paramètre pour démarrer une base de données de conteneurs locaux:
./migrate-database.sh -u --docker -i or ./configure.sh --mig-database -u --docker -i
Exécutez le script Fixup Socket avec des arguments:
./migrate-database.sh /tmp/mysqld.sock
brew services restart [email protected]
Avec la CLI, vous pouvez Ctrl-X Ctrl-C pour quitter le serveur et migrer votre base de données:
./migrate-database.sh -u
./start_cake.sh
Répondez «y» lorsque vous y êtes invité.
La source de données MySQL.PHP doit définir les types de stockage binaires et moyens. Veuillez consulter le fichier app / modèle / dataSource / mysql_cms.php s'il existe et si vous avez connu l'erreur suivante:
errno : 1054
sqlstate : 42S22
error : Unknown column 'image' in 'field list'
Ajoutez le stockage moyenbinaire , en étendant la classe de source de données d'origine:
<?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;
}
}
?>
Assurez-vous qu'il est défini comme $ identités [db] ['dataSource'] dans app/Config/database.php , ./Scripts/fooargs.sh , .travis.yml et mettez à jour le schéma de base de données:
./migrate-database.sh -u
Une récente git checkout a fait disparaître le sous-module du disque, qui peut se produire sur la branche maître / développement. Rappelez-vous ou ajoutez le script de configuration du shell à votre flux de travail:
./configure.sh -m
Vous devez configurer l'environnement de développement à partir des dépendances des compositeurs.
./configure.sh --development
Vous devez exporter le node_modules/.bin pour ce shell pour trouver des binaires installés NPMJS.
export PATH="`pwd`/node_modules/.bin:$PATH"
Votre bash ne gère pas le tableau dans les scripts et utilise la version 3. Veuillez passer à V.4 ou version ultérieure. Vérifiez également votre version bash et améliorez également l'OpenSSL CACERT:
.travis/TravisCI-OSX-PHP/build/prepare_osx_env.sh
Copyright 2016 www.b23prodtm.info
Licencié sous la licence Apache, version 2.0 (la "licence"); Vous ne pouvez pas utiliser ce fichier sauf conforme à la licence. Vous pouvez obtenir une copie de la licence à
Sauf exiger la loi applicable ou convenu par écrit, les logiciels distribués en vertu de la licence sont distribués sur une base «tel quel», sans garantie ou conditions d'aucune sorte, expresse ou implicite. Voir la licence pour la langue spécifique régissant les autorisations et les limitations sous la licence.