نحن ننتقل إلى Kubernetes لاستضافة موقعنا على الويب ... انظر المزيد عن هذا المشروع في Kubespray.
بما في ذلك PHP-CMS EX-POHSE
استخدام أوركستور الحاوية الأساسي أو المحرك للنشر والاختبار ، هو مضيق. حاليا البرنامج النصي النشر . deploy.sh بناءً على محرك بالينا. شاهد المزيد حول تبعيات NodeJS
لا تحتاج إلى تغيير أي شيء في مستودع مشروع PHP الحالي. ومع ذلك ، إذا كانت هذه الملفات ستؤثر على سلوك عملية الإنشاء:
يتضمن مجلد ACAKE2PHP وحدات تحتاج إلى سحبها من أجل التثبيت محليًا. بعد تصفح الخروج الأول إلى مجلد ACAKE2PHP وقم بتنظيم git submodule sync && git submodule update --init --recursive وحدات تملأ تطبيق المجلد الفرعي/WebROOT/... إذا حدث خطأ ما ، محو المجلد ACAKE2PHP وتبدأ من جديد.
بعد
git checkoutالناجح في كل مرة ، قم بتشغيله بمجردgit submodule update --init --recursiveتنزيل العلامات الفرعية من GIT. خلاف ذلك قد يفشل بناءك. نصيحة المطور: لدفع العلامات:git tag`<version> && git push --tags.
Capagist Composer.Json
قائمة التبعيات المراد تثبيتها مع composer هنا.
يتم تسجيل الإضافات في كل من الجهاز الفرعي GIT و Composer.json . للسماح للمكون الإضافي بقبول composer update ، تحرير composer.json وفقًا للعلامات التي تم إصدارها المتاحة. في مستودع المنزل الخاص بالمكون الإضافي ( app/Vendor/<package-name> أو app/Plugin/<plugin-name>/ )
.htaccess
للسماح لـ Apache Server بالتصفح مباشرةً إلى مجلد التطبيق/WebRoot على جانب الخادم ، استخدم قواعد mod_rewrite ، كما هو موضح بواسطة ملفات .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>
يعتمد هذا المشروع على NPMJS Balena-Cloud. يرجى الاتصال npm update كلما لم يتم العثور على balena_deploy .
ملفات .env
اضبط متغيرات البيئة كوسائط التالية ، على سبيل المثال على MacOS X:
./deploy.sh amd64 --nobuild
استخدم ملف .env في Shell لتكوين ما يصل مع مضيفي 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 مع المكالمة التالية إلى خادم الكيك: افتح نافذة طرفية:
./test-cake.sh
هناك خيارات (-travis ،-openshift ،-دائرة) مخصصة لبيئات بناء التكامل المستمر. استخدم -help لمعرفة المزيد عن الخيارات.
انظر أدناه للسماح بالوصول إلى الخادم المحلي المدمج.
عندما يحدث النشر على الجهاز أو يتم تشغيله بواسطة حدث دفع GIT ، "المصدر إلى الصورة (S2I)" ، يحتاج خادم HTTPD أو POD إلى متغيرات البيئة المناسبة ليكون جاهزًا. وإلا فإن البرامج النصية ستفشل مع حالة خطأ ، غير قادر على الاتصال بقاعدة البيانات
يجب إعداد المتغيرات التالية كبيئة خادم ، مقدمة من مسؤول قاعدة البيانات الخاص بك:
# Sqlite, Postgres
DB:Mysql
ملاحظة: يحدد DB فئة CakePhP/DataSource/Database DBOSOURCE لتكوين اتصالات SQL.
MYSQL_DATABASE:default
# a hostname or IP address
MYSQL_HOST:mysql
ملاحظة: يتم استخدامها مع test_ فهي تستخدم بواسطة index.php؟ test = 1 urls و ./test-cake.sh (-trovis)
يجب إعداد المتغيرات الإضافية التالية كبيئة أسرار الخادم ، المقدمة من مسؤول قاعدة البيانات الخاص بك:
#(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>
توفر محركات الحاويات بيئة محصورة ، مع تخزين مستمر. تحقق من أن نشر قاعدة البيانات الأخيرة كان ناجحًا ، فتح قذيفة جراب:
داخل DB POD:
mysql -uroot --password=${MYSQL_ROOT_PASSWORD}
إصدار بعض عبارات SQL ، على سبيل المثال:
ùse aria_db; show tables; يجب أن تسرد الجداول
Inside Acake2Php Pod:
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.
تحرير اختياري ./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 . طريقة واحدة لإنشاء كلمة مرور التجزئة هذه مع التشفير والإعداد "المملح":
./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 مع القالب. توجد المزيد حول متغيرات البيئة في إعدادات POD (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
(دليل) طريقة Linux Shell لإعادة تهيئة كلمة مرور SQL Root:
sudo rm -rf /usr/local/var/mysql
mysqld --initialize | grep "temporary password" | cut -f4 -d ":" | cut -c 2- > app/tmp/nupwd
ملاحظة: يتم إنشاء كلمة مرور مؤقتة لجذر@localhost. الآن استيراد الهويات.
brew services restart [email protected]
./configure.sh --mig-database -p $(cat app/tmp/nupwd) -i --sql-password
لقد قمت الآن بتكوين كلمة مرور SQL Root الجديدة وكلمة مرور اختبار. يعد الوصول إلى 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-corm.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
قم بتشغيل برنامج Socket 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/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;
}
}
?>
تأكد من تعيينه كهويات $ [db] ['datasource'] في app/Config/database.php ، ./Scripts/fooargs.sh ، .travis.yml وتحديث مخطط قاعدة البيانات:
./migrate-database.sh -u
جعلت git checkout مؤخرًا أن الجهاز الفرعي تختفي من القرص ، الذي يمكن أن يحدث في فرع الماجستير/التنمية. أذكر أو أضف البرنامج النصي تكوين shell إلى سير العمل الخاص بك:
./configure.sh -m
تحتاج إلى تكوين بيئة التطوير من تبعيات الملحن.
./configure.sh --development
تحتاج إلى تصدير node_modules/.bin حتى يتم العثور على ثنائيات مثبتة NPMJS.
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 ("الترخيص") ؛ لا يجوز لك استخدام هذا الملف إلا في الامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص على
ما لم يكن مطلوبًا بموجب القانون المعمول به أو الموافقة على الكتابة ، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي" ، دون ضمانات أو شروط من أي نوع ، إما صريحة أو ضمنية. راجع ترخيص الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.