我们正在搬到Kubernetes托管我们的网站...在Kubespray中查看有关该项目的更多信息。
包括PHP-CMS EX-POHSE
使用基本的容器编排或发动机进行部署和测试,这是Straitforward。当前部署脚本. deploy.sh基于Balena Engine的. deploy.sh 。查看有关nodejs依赖关系的更多信息
您无需更改现有PHP项目存储库中的任何内容。但是,如果存在这些文件,它们将影响构建过程的行为:
ACAKE2PHP文件夹包含需要拉出的模块才能在本地安装。首次结帐浏览到Acake2php文件夹并执行git submodule sync && git submodule update --init --recursive您会看到填充subfolder app/webroot/...的模块,如果出现问题,请删除Acake2php文件夹并开始使用。
每次成功
git checkout后,运行一旦git submodule update --init --recursive以确保从Git下载子模型。否则您的构建可能会失败。开发人员提示:推送标签:git tag`<version> && git push --tags。
Packagist Composer.json
在此处与composer安装的依赖关系列表。
插件在git subsodule和composer.json中注册。要允许插件接受composer update ,请根据可用发布的标签编辑Composer.json 。在插件app/Vendor/<package-name>家庭存储库app/Plugin/<plugin-name>/
.htaccess
要允许Apache Server直接浏览服务器端上的应用程序/WebRoot文件夹,请使用.htaccess文件提供的MOD_REWRITE规则。
/.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>
该项目取决于NPMJS Balena-Cloud。每当系统抱怨找不到balena_deploy时,请致电npm update 。
.env文件
将环境变量设置为以下参数,例如在MacOS X上:
./deploy.sh amd64 --nobuild
使用shell中的.env文件与raspberrypi3主机配置:
./deploy.sh arm32 --nobuild
.env-> ARM32V7.ENV
./deploy.sh arm32 --balena
蛋糕包括一个仅在端口9000上进行本地测试的服务器应用程序。打开终端窗口:
DB=Mysql ./configure.sh --mig-database -u
./start-cake.sh --docker -c server -p 9000
ctrl单击URL以在浏览器中打开它们。为了获得有关命令行接口的更多帮助:
./start-cake.sh --help
JUNIT测试可提供以下调用Cake Server:打开终端窗口:
./test-cake.sh
有一些选项(-travis,-openshift,-circle),专门用于连续集成构建环境。使用 - 支持以查看有关选项的更多信息。
请参阅下文,以允许在内置本地服务器上访问。
当部署发生在设备上或通过git推动事件触发的“源对图像(S2I)”触发时,HTTPD-Server或POD需要准备就绪的适当环境变量。否则,脚本将以错误状态失败,无法连接到数据库
数据库管理员提供的以下变量必须设置为服务器环境:
# Sqlite, Postgres
DB:Mysql
注意:DB选择CakePHP模型/DataSource/Database DBosource类以配置SQL连接。
MYSQL_DATABASE:default
# a hostname or IP address
MYSQL_HOST:mysql
注意:带有test_的前缀。
必须设置以下其他变量作为服务器秘密环境,由您的数据库管理员提供:
#(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>
容器发动机提供了一个持久存储的限制环境。检查最后一个数据库部署是否成功,打开一个POD Shell:
内部数据库豆荚:
mysql -uroot --password=${MYSQL_ROOT_PASSWORD}
发出一些SQL语句,例如:
ùse aria_db; show tables;应该列出表
内部Acake2php Pod:
cake schema update --connection=default应构建数据库
cake schema update --connection=test应构建测试数据库
SQL Server(必须匹配远程服务器版本)必须通过主机名或通过其套接字到达。如果这是您第一次使用此连接,
将其配置为服务,并使用用户外壳配置登录ACL。
./configure.sh -d -u -i
mysql_secure_installation
可选的编辑./app/Config/database.php如果您想修改数据库_CONFIG类。
可选的编辑./app/Model/Datasources/Database如果您想修改dbosource驱动程序。
编辑./Scripts/fooargs.sh要更改默认测试环境设置(主机,端口,登录,数据库名称)
运行配置脚本:
./configure.sh -d -p <root-password> -i --sql-password=<new-password>
./configure.sh --help && ./migrate-database.sh --help
更常见的问题
以下命令重置SQL用户${DATABASE_USER}和${MYSQL_USER}密码:
./migrate -database.sh -p -i -p -test -sql -password
要签署员工权限,请访问http://localhost/admin/index.php,有人需要一个存储在GET_HASH_PASSWORD中的唯一密码。使用“盐”加密和设置生成此哈希密码的一种方法:
./configure.sh -h -p <password> -w <salt>
要重新生成或再次读取当前密码哈希,只需浏览到http://localhost/php-cms/e13/etc/gethashashpassword.php
GET_HASH_PASSWORD=<HaSheD/PasSwoRd!>必须作为系统可读变量存储在本地服务器环境中。
索引页显示:
errno : 1146
sqlstate : 42S02
error : Table 'phpcms.info' doesn't exist
尝试以下内容以迁移(更新)所有数据库表,请在提示时回答“ y”:
./migrate-database.sh -u
您可能在服务器上修改了用户特权:
mysql -u root
use mysql;
grant all PRIVILEGES on $TEST_DATABASE_NAME.* to '$MYSQL_USER'@'$MYSQL_HOST';
exit
```acake2php
./configure.sh -c
这将使用模板重置..ETC/属性文件中的连接配置文件。有关环境变量的更多信息,位于远程POD(OpenShift)设置中,并在本地in ./scripts/fooargs.sh。
笔记:
./configure.sh --mig-database -p -i --sql-password
使用环境根和用户密码重置。
(自动)这看起来像是MySQL的首次安装。您必须保护或重置MySQL root访问:
MYSQL_ROOT_PASSWORD=<password> sudo bash deployment/images/mysqldb/mysql_secure_shell
(手册)Linux Shell重新初始化SQL根密码的方式:
sudo rm -rf /usr/local/var/mysql
mysqld --initialize | grep "temporary password" | cut -f4 -d ":" | cut -c 2- > app/tmp/nupwd
注意:root@localhost生成了临时密码。现在导入身份。
brew services restart [email protected]
./configure.sh --mig-database -p $(cat app/tmp/nupwd) -i --sql-password
您现在已经配置了新的SQL根密码和测试密码。本地SQL访问和服务器准备运行测试:
./test-cake.sh -p -t <test-password>
继续使用本地内置服务器进入开发阶段。
迁移所有桌子:
./migrate-database.sh -u
提示时回答“ Y”。
php -i | grep Extensions
使用根特权登录应起作用:
mysql -u root --password=${MYSQL_ROOT_PASSWORD}
如果没有,请重置密码:
mysqladmin -uroot password
如果无法登录: +检查您的环境变量(common.env和docker-compose.yml)设置)。使用一个或另一个,看看哪个对您有用:
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
不要错过启动本地容器数据库的参数:
./migrate-database.sh -u --docker -i or ./configure.sh --mig-database -u --docker -i
使用参数运行套接字修复脚本:
./migrate-database.sh /tmp/mysqld.sock
brew services restart [email protected]
使用CLI,您可以CTRL-X CTRL-C进行退出服务器并迁移数据库:
./migrate-database.sh -u
./start_cake.sh
提示时回答“ Y”。
MySQL.PHP DataSource必须定义二进制和中等存储类型。请查看文件应用程序/型号/dataSource/mysql_cms.php (如果存在),如果您遇到了以下错误:
errno : 1054
sqlstate : 42S22
error : Unknown column 'image' in 'field list'
添加中额存储,扩展了原始数据源类:
<?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;
}
}
?>
确保在app/Config/database.php , ./Scripts/fooargs.sh fooargs.sh, .travis.yml中将其设置为$ Identities [db] ['dataSource']
./migrate-database.sh -u
最近的git checkout使该子模块从磁盘中消失了,这可能会在主/开发分支机构上发生。回忆或添加Shell配置脚本到您的工作流程:
./configure.sh -m
您需要从作曲家依赖项配置开发环境。
./configure.sh --development
您需要导出该外壳的node_modules/.bin以查找已安装的二进制文件。
export PATH="`pwd`/node_modules/.bin:$PATH"
您的bash不处理脚本中的数组,并使用版本3。请升级到v.4或更高版本。检查您的bash版本并升级Openssl cacert:
.travis/TravisCI-OSX-PHP/build/prepare_osx_env.sh
Copyright 2016 www.b23prodtm.info
根据Apache许可证(版本2.0(“许可”)获得许可;除了符合许可外,您不得使用此文件。您可以在
除非适用法律要求或以书面形式同意,否则根据许可证分配的软件是按照“原样”分发的,没有任何明示或暗示的任何形式的保证或条件。请参阅许可证,以获取执行许可条款和限制的特定语言。