Nos mudamos a Kubernetes para alojar nuestro sitio web ... ver más sobre ese proyecto en Kubespray.
Incluyendo php-cms ex-pohse
Usar el orquestador o motor de contenedores básicos para implementar y probar es estrecho. Actualmente el script de implementación . deploy.sh basado en el motor Balena. Ver más sobre las dependencias de NodeJS
No necesita cambiar nada en el repositorio de su proyecto PHP existente. Sin embargo, si existen estos archivos, afectarán el comportamiento del proceso de compilación:
La carpeta Acake2PHP incluye módulos que deben extraerse para instalar localmente. Después de la primera comprobación de la carpeta Acake2PHP y realice git submodule sync && git submodule update --init --recursive verá módulos que poblan la aplicación de subcarpeta/Webroot/... Si algo sale mal, borre la carpeta Acake2Php y comience.
Después de una
git checkoutcada vez, ejecute una vez quegit submodule update --init --recursivepara garantizar que los submódulos se descarguen de GIT. De lo contrario, su construcción puede fallar. Consejo del desarrollador: para empujar etiquetas:git tag`<version> && git push --tags.
Compositor de paquete
Lista de dependencias que se instalarán con composer aquí.
Los complementos están registrados tanto en Git Submodule como en Composer.json . Para permitir que un complemento acepte composer update , edite composer.json de acuerdo con las etiquetas liberadas disponibles. En el repositorio de inicio del complemento ( app/Vendor/<package-name> o app/Plugin/<plugin-name>/ )
.htaccess
Para permitir que Apache Server navegue directamente a la carpeta APP/Webroot en el lado del servidor, use las reglas Mod_rewrite, según lo dispuesto por los archivos .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>
Este proyecto depende de NPMJS Balena-Cloud. Llame a npm update cada vez que el sistema se queja de balena_deploy no encontrado.
.env archivos
Establezca las variables de entorno como los siguientes argumentos, por ejemplo en MacOS X:
./deploy.sh amd64 --nobuild
Use un archivo .env en shell para configurar con hosts Raspberrypi3:
./deploy.sh arm32 --nobuild
.env -> Arm32v7.env
./deploy.sh arm32 --balena
El pastel incluye una aplicación de servidor que solo está hecha para pruebas locales en el puerto 9000. Abra una ventana de terminal:
DB=Mysql ./configure.sh --mig-database -u
./start-cake.sh --docker -c server -p 9000
CTRL Haga clic en las URL para abrirlas en el navegador. Para obtener más ayuda sobre la interfaz de línea de comandos:
./start-cake.sh --help
Las pruebas JUnit están disponibles con la siguiente llamada al servidor de pastel: Abra una ventana de terminal:
./test-cake.sh
Hay opciones (--travis, --openshift, --circle) dedicadas a entornos de construcción de integración continua. Use --help para ver más sobre las opciones.
Consulte a continuación para permitir el acceso en el servidor local incorporado.
Cuando la implementación ocurre en el dispositivo o es activado por un evento Git Push, 'Fuente a imagen (S2I)', el servidor HTTPD o el POD necesita variables de entorno adecuadas para configurar. De lo contrario, los scripts fallarán con un estado de error, no se puede conectar a la base de datos
Las siguientes variables deben configurarse como entorno del servidor, proporcionado por el administrador de su base de datos :
# Sqlite, Postgres
DB:Mysql
Nota: DB selecciona la clase CakePHP Model/DataSource/Database DBOSOURCE para configurar las conexiones SQL.
MYSQL_DATABASE:default
# a hostname or IP address
MYSQL_HOST:mysql
Nota: prefijo con test_ ellos son utilizados por index.php? Test = 1 urls y ./test-cake.sh (--travis)
Las siguientes variables adicionales deben configurarse como entorno de secretos del servidor, proporcionado por el administrador de su base de datos:
#(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>
Los motores de contenedores proporcionan un entorno confinado, con almacenamiento persistente. Verifique que la última implementación de la base de datos tuvo éxito, abra un shell de pod:
Inside DB Pod:
mysql -uroot --password=${MYSQL_ROOT_PASSWORD}
Emitir algunas declaraciones SQL, por ejemplo:
ùse aria_db; show tables; Deberían enumerar tablas
Dentro de Acake2Php Pod:
cake schema update --connection=default debe construir las bases de datos
cake schema update --connection=test debe construir las bases de datos de prueba
Un servidor SQL (debe coincidir con la versión remota del servidor) debe ser accesible por nombre de host o a través de su socket. Si es la primera vez que usa esta conexión,
Configurarlo como un servicio y configure el ACL de inicio de sesión con el shell de usuario.
./configure.sh -d -u -i
mysql_secure_installation
Edición opcional ./app/Config/database.php Si desea modificar la clase Database_Config.
Edición opcional ./app/Model/Datasources/Database Si desea modificar el controlador DBOSOURCE.
Editar ./Scripts/fooargs.sh para cambiar la configuración de entorno de prueba predeterminada (host, puerto, inicio de sesión, nombre de la base de datos)
Ejecute el script de configuración:
./configure.sh -d -p <root-password> -i --sql-password=<new-password>
./configure.sh --help && ./migrate-database.sh --help
Problemas más comunes
El siguiente comando restablece los usuarios de SQL ${DATABASE_USER} y ${MYSQL_USER} contraseña:
./migrate-database.sh -p -i -p - -test -sql -password
Para iniciar sesión con los derechos del personal, en http: //localhost/admin/index.php, alguien necesita una contraseña única almacenada en GET_HASH_PASSWORD . Una forma de generar esta contraseña hash con "salado" en cifrado y configuración:
./configure.sh -h -p <password> -w <salt>
Para regenerar o leer la contraseña actual hash nuevamente, simplemente navegue a http: //localhost/php-cms/e13/etc/gethashpassword.php
GET_HASH_PASSWORD=<HaSheD/PasSwoRd!> Debe almacenarse en el entorno del servidor local como una variable legible del sistema.
Pantalla de la página del índice:
errno : 1146
sqlstate : 42S02
error : Table 'phpcms.info' doesn't exist
Pruebe lo siguiente para migrar (actualizar) todas las tablas de bases de datos, responda 'y' cuando se le solicite:
./migrate-database.sh -u
Probablemente haya modificado privilegios de usuario en su servidor:
mysql -u root
use mysql;
grant all PRIVILEGES on $TEST_DATABASE_NAME.* to '$MYSQL_USER'@'$MYSQL_HOST';
exit
```acake2php
./configure.sh -c
Esto restablecerá el perfil de conexión en el archivo ..Etc/ Properties con la plantilla. Más sobre las variables de entorno se encuentran en la configuración remota de POD (OpenShift) y localmente en ./scripts/fooargs.sh.
Nota:
./configure.sh --mig-database -p -i --sql-password
Para hacer un reinicio con la raíz del entorno y la contraseña de usuario.
(Automático) Esto parece una primera instalación de MySQL. Debe asegurar o restablecer su acceso a la raíz MySQL:
MYSQL_ROOT_PASSWORD=<password> sudo bash deployment/images/mysqldb/mysql_secure_shell
(Manual) La forma de shell Linux para reiniciar la contraseña de root SQL:
sudo rm -rf /usr/local/var/mysql
mysqld --initialize | grep "temporary password" | cut -f4 -d ":" | cut -c 2- > app/tmp/nupwd
Nota: Se genera una contraseña temporal para root@localhost. Ahora importar identidades.
brew services restart [email protected]
./configure.sh --mig-database -p $(cat app/tmp/nupwd) -i --sql-password
Ahora ha configurado una nueva contraseña de root SQL y una contraseña de prueba. El acceso y el servidor de SQL local están listos para ejecutar pruebas:
./test-cake.sh -p -t <test-password>
Continúe a la fase de desarrollo con el servidor incorporado local.
Migra todas tus tablas:
./migrate-database.sh -u
Responda 'y' cuando se le solicite.
php -i | grep Extensions
Iniciar sesión con privilegios raíz debería funcionar:
mysql -u root --password=${MYSQL_ROOT_PASSWORD}
Si no, haga un reinicio de sus contraseñas:
mysqladmin -uroot password
Si no es posible iniciar sesión: + Verifique la configuración de sus variables de entorno (Common.env y Docker-Compose.yml)). Use uno u otro, y vea cuál funciona para usted:
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
No se pierda el parámetro para iniciar una base de datos de contenedores local:
./migrate-database.sh -u --docker -i or ./configure.sh --mig-database -u --docker -i
Ejecute el script de corrección de socket con argumentos:
./migrate-database.sh /tmp/mysqld.sock
brew services restart [email protected]
Con el CLI, puede CTRL-X CTRL-C para salir del servidor y migrar su base de datos:
./migrate-database.sh -u
./start_cake.sh
Responda 'y' cuando se le solicite.
La fuente de datos mysql.php debe definir los tipos de almacenamiento binarios y medianos. Mire la aplicación del archivo/modelo/dataSource/mysql_cms.php si existe y si experimentó el siguiente error:
errno : 1054
sqlstate : 42S22
error : Unknown column 'image' in 'field list'
Agregue el almacenamiento mediano binary , extendiendo la clase de plato de datos original:
<?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;
}
}
?>
Asegúrese de que esté configurado como $ identidades [db] ['dataSource'] en app/Config/database.php , ./Scripts/fooargs.sh , .travis.yml y actualice el esquema de la base de datos:
./migrate-database.sh -u
Un reciente git checkout hizo que el submódulo desapareciera del disco, que puede ocurrir en la rama maestra/de desarrollo. Recuerde o agregue el script de configuración de shell a su flujo de trabajo:
./configure.sh -m
Debe configurar el entorno de desarrollo de las dependencias del compositor.
./configure.sh --development
Debe exportar el node_modules/.bin para que este shell encuentre binarios instalados NPMJS.
export PATH="`pwd`/node_modules/.bin:$PATH"
Su fiesta no maneja la matriz en los scripts y usa la versión 3. Actualice a V.4 o posterior. Consulte su versión Bash y actualización OpenSsl Cacert también:
.travis/TravisCI-OSX-PHP/build/prepare_osx_env.sh
Copyright 2016 www.b23prodtm.info
Licenciado bajo la licencia Apache, versión 2.0 (la "licencia"); No puede usar este archivo, excepto de conformidad con la licencia. Puede obtener una copia de la licencia en
A menos que la ley aplicable sea requerida o acordado por escrito, el software distribuido bajo la licencia se distribuye de manera "como es", sin garantías o condiciones de ningún tipo, ya sea expresas o implícitas. Consulte la licencia para los permisos y limitaciones de rigor de idioma específico bajo la licencia.