우리는 Kubernetes로 이동하여 웹 사이트를 호스팅하고 있습니다 ... Kubespray의 해당 프로젝트에 대해 자세히 알아보십시오.
PHP-CMS ex-pohse 포함
기본 컨테이너 오케스트레이터 또는 엔진을 사용하여 배치 및 테스트를 수행하는 것은 Straitforward입니다. 현재 배포 스크립트입니다 . deploy.sh Balena 엔진을 기반으로 . deploy.sh . nodejs 종속성에 대한 자세한 내용을 참조하십시오
기존 PHP 프로젝트의 저장소에서 아무것도 변경할 필요가 없습니다. 그러나 이러한 파일이 존재하면 빌드 프로세스의 동작에 영향을 미칩니다.
Acake2php 폴더에는 로컬에 설치하려면 끌어 당겨야하는 모듈이 포함되어 있습니다. 첫 번째 체크 아웃 후 Acake2php 폴더로 찾아보고 git submodule sync && git submodule update --init --recursive 하위 폴더 앱/webroot/를 채우는 모듈을 볼 수 있습니다.
매번 성공적인
git checkout후git submodule update --init --recursive다시 실행하여 하위 모듈이 GIT에서 다운로드되도록 실행하십시오. 그렇지 않으면 빌드가 실패 할 수 있습니다. 개발자 팁 : 태그 푸시 :git tag`<version> && git push --tags.
Packagist Composer.json
composer 와 함께 설치할 종속성 목록은 여기를 참조하십시오.
플러그인은 GIT 하위 모듈 및 Composer.json 에 등록됩니다. 플러그인이 composer update 허용하려면 사용 가능한 릴리스 태그에 따라 Composer.json을 편집하십시오. 플러그인의 홈 리포지토리 ( app/Vendor/<package-name> 또는 app/Plugin/<plugin-name>/ )
.htaccess
Apache Server가 서버 측의 App/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
RaspberryPi3 호스트로 구성하려면 Shell에서 .env 파일을 사용하십시오.
./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 (Source-to-Image)'에 의해 트리거되면 HTTPD-Server 또는 POD는 준비를 위해 적절한 환경 변수가 필요합니다. 그렇지 않으면 스크립트가 오류 상태로 실패하여 데이터베이스에 연결할 수 없습니다.
다음 변수는 데이터베이스 관리자가 제공하는 서버 환경으로 설정해야합니다.
# Sqlite, Postgres
DB:Mysql
참고 : DB는 SQL 연결을 구성하기 위해 CakePHP 모델/DataSource/Database DBOSOURCE 클래스를 선택합니다.
MYSQL_DATABASE:default
# a hostname or IP address
MYSQL_HOST:mysql
참고 : test_ 와 접두사가있는 index.php? test = 1 urls 및 ./test-cake.sh (-travis)에서 사용됩니다.
다음 추가 변수는 데이터베이스 관리자가 제공하는 서버 비밀 환경으로 설정해야합니다.
#(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 쉘을 열십시오.
내부 DB 포드 :
mysql -uroot --password=${MYSQL_ROOT_PASSWORD}
예를 들어 일부 SQL 문을 발행하십시오.
ùse aria_db; show tables; 테이블을 나열해야합니다
내부 Acake2php 포드 :
cake schema update --connection=default 데이터베이스를 빌드해야합니다
cake schema update --connection=test 테스트 데이터베이스를 구축해야합니다
SQL 서버 (원격 서버 버전과 일치해야 함)는 호스트 이름이나 소켓을 통해 도달 할 수 있어야합니다. 이 연결을 사용하는 첫 번째 경우
서비스로 구성하고 사용자 쉘으로 로그인 ACL을 구성하십시오.
./configure.sh -d -u -i
mysql_secure_installation
선택적 편집 ./app/Config/database.php database_config 클래스를 수정하려면
dbosource 드라이버를 수정하려면 선택적 편집 ./app/Model/Datasources/Database .
편집 ./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 에 저장된 고유 한 비밀번호가 필요합니다. "Salted"암호화 및 설정 으로이 해시 암호를 생성하는 한 가지 방법 :
./configure.sh -h -p <password> -w <salt>
현재 암호 해시를 다시 재생하거나 읽으려면 http : //localhost/php-cms/e13/etc/gethashpassword.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/ properties 파일에서 연결 프로파일을 재설정합니다. 환경 변수에 대한 자세한 내용은 원격 포드 (OpenShift) 설정에 있으며 ./Scripts/fooargs.sh에 위치합니다.
메모:
./configure.sh --mig-database -p -i --sql-password
환경 루트 및 사용자 비밀번호로 재설정됩니다.
(자동) 이것은 MySQL의 첫 번째 설치처럼 보입니다. MySQL 루트 액세스를 보호하거나 재설정해야합니다.
MYSQL_ROOT_PASSWORD=<password> sudo bash deployment/images/mysqldb/mysql_secure_shell
(매뉴얼) SQL 루트 비밀번호를 다시 이용하는 Linux 쉘 방법 :
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
인수와 함께 소켓 Fixup 스크립트를 실행하십시오.
./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는 바이너리 및 중형 스토리지 유형을 정의해야합니다. 파일 앱/model/dataSource/mysql_cms.php가 존재하고 다음 오류가 발생한 경우 파일을 참조하십시오.
errno : 1054
sqlstate : 42S22
error : Unknown column 'image' in 'field list'
원래 DataSource 클래스를 확장하여 중간 범위 스토리지를 추가하십시오.
<?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 , .travis.yml 에서 $ ID [DB] [ 'DataSource']로 설정되어 있는지 확인하고 데이터베이스 스키마를 업데이트하십시오.
./migrate-database.sh -u
최근의 git checkout 디스크에서 하위 모듈을 사라지게하여 마스터/개발 지점에서 발생할 수 있습니다. 워크 플로에 쉘 구성 스크립트를 리콜하거나 추가하십시오.
./configure.sh -m
작곡가 종속성에서 개발 환경을 구성해야합니다.
./configure.sh --development
NPMJS 설치된 바이너리를 찾으려면이 쉘을 위해 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 ( "라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 것 외에는이 파일을 사용할 수 없습니다. 라이센스 사본을 얻을 수 있습니다
해당 법률에 의해 요구되거나 서면에 동의하지 않는 한, 라이센스에 따라 배포 된 소프트웨어는 명시 적 또는 묵시적 보증 또는 조건없이 "그대로"기준으로 배포됩니다. 라이센스에 따른 특정 언어 통치 권한 및 제한 사항에 대한 라이센스를 참조하십시오.