ກຽມລະບົບເພື່ອໃຊ້ງານຈິງ.
ຕິດຕັ້ງ, ກວດ configuration, ສຳຮອງ, ທົດລອງກູ້ຄືນ ແລະປ່ອຍລຸ່ນຢ່າງມີຫຼັກຖານ.
1. ສິ່ງທີ່ 0.10 ແກ້ໄຂ
ລຸ່ນນີ້ແກ້ບັນຫາທີ່ພິສູດໄດ້: environment/boolean ພິມຜິດ, quoted config ຖືກຕັດຄ່າ, limit/order ຖືກມອງຂ້າມໃນ update/delete, logging failure ທີ່ທຳລາຍ response, CORS/signed headers ທີ່ຫາຍຕອນ error ແລະ readiness ທີ່ຮ້ອງຂໍ log directory ແມ່ນແຕ່ໃຊ້ stderr. ແກ້ Host header ໃນ SAPI/Swoole/FrankenPHP ເພື່ອໃຫ້ signed URL ເຮັດວຽກຜ່ານ HTTP ຈິງ. ເພີ່ມ config:check ແລະ SQLite backup CLI. ນີ້ເປັນ framework developer preview; ການນຳໄປໃຊ້ຕ້ອງທົດສອບ workload, business rules ແລະການດູແລຂອງແອັບທ່ານ.
2. ຕິດຕັ້ງໃໝ່
ໃຊ້ PHP stable ທີ່ຮອງຮັບ ແລະ Composer lock ທີ່ກວດແລ້ວ. ຄຳສັ່ງ key:generate ໃຊ້ສຳລັບ installation ໃໝ່ທີ່ key ວ່າງເທົ່ານັ້ນ. ຖ້າ upgrade ໃຫ້ຮັກສາ key ແລະ private storage ເດີມ. ກຳນົດ document root ໃຫ້ເປັນ public/; ຢ່າເປີດໂຄງການທັງໝົດຜ່ານເວັບ.
composer install --no-dev --prefer-dist --no-interaction
composer check-platform-reqs --no-dev
cp .env.example .env
php bin/icom key:generate
chmod 600 .env
# Edit .env privately for this installation before the production checks below.
# Optional Redis/Doctrine used by your app must be production dependencies.3. Configuration ທີ່ຊັດເຈນ
APP_ENV ຮອງຮັບ local, testing, staging, production. Staging/production ຕ້ອງ HTTPS ແລະ APP_DEBUG=false; “prod” ຈະຖືກປະຕິເສດ. APP_URL ໃຊ້ພຽງ origin ທີ່ບໍ່ມີ credentials/path/query/fragment; APP_HOSTS ຕ້ອງລວມ host ນັ້ນ ແລະບໍ່ໃຊ້ wildcard. .env ໃນ staging/production ຕ້ອງເປັນ private readable file; shared symlink ທີ່ຊີ້ໄປໄຟລ໌ 0600 ນອກ public ໃຊ້ໄດ້. Environment-only containers ບໍ່ຈຳເປັນມີ .env.
APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-app.example
APP_HOSTS=your-app.example
# Retain APP_KEY generated for this installation.
DB_DSN=sqlite:storage/app.sqlite
CACHE_DRIVER=file
LOG_PATH=php://stderr4. ຂອບເຂດການອ່ານ .env
Quotes ດ້ານນອກທີ່ກົງກັນຈະຖືກຖອດພຽງໜຶ່ງຄູ່; spaces ແລະ quotes ພາຍໃນຄ່າຖືກຮັກສາ. ບໍ່ interpolate variables ຫຼື execute shell; backslash ເປັນ literal. ບໍ່ຮອງຮັບ multiline values ຫຼື inline comments. Duplicate keys ແລະ unmatched leading quotes ເປັນ error. Boolean ຮັບ true/false, yes/no, on/off, 1/0 ແບບບໍ່ແຍກຕົວນ້ອຍ/ໃຫຍ່; empty ໝາຍເຖິງ false. ຄ່າອື່ນເປັນ error. Process environment ຍັງມີລຳດັບກ່ອນ .env.
5. ກວດກ່ອນເປີດ traffic
compatibility ກວດ PHP/extensions, config:check ກວດ application settings ໂດຍບໍ່ bootstrap ແອັບ ຫຼືເຊື່ອມ DB/cache. --production ບັງຄັບ APP_ENV=production. Exit 0 ຄືຜ່ານ, 1 ຄື config ບໍ່ຜ່ານ, 2 ຄື arguments ບໍ່ຖືກ. Output ບໍ່ມີ key, DSN, credentials ຫຼື private path. ການຜ່ານ config ບໍ່ຢືນຢັນເຊື່ອມບໍລິການໄດ້; ຈຶ່ງຕ້ອງກວດ operations ຕໍ່.
php bin/compatibility.php --production --pdo=sqlite
php bin/icom config:check --production
php bin/icom migrate:status
# Fresh installations have pending migrations: review then run migrate.
# Existing installations need a verified backup first.
php bin/icom migrate
php bin/icom maintenance:run
php bin/icom ops:check
php bin/icom api:check6. Storage/logging ຕ້ອງກົງ deployment
LOG_PATH=php://stderr ໃຊ້ container/platform logging; readiness ບໍ່ຮ້ອງຂໍ storage/logs ໃນກໍລະນີນີ້. ຖ້າໃຊ້ log file ໃຫ້ກຽມ private writable parent directory ນອກ public/ ແລະຕັ້ງ rotation. Database/log path ບໍ່ຮັບ device, FIFO, stream wrappers ຫຼື public aliases. Default file cache/rate limits ຍັງຕ້ອງ persistent writable storage. Logging outage ບໍ່ປ່ຽນ response ທີ່ເຮັດສຳເລັດແລ້ວ; ມີພຽງ fixed fallback diagnostic. ຜູ້ດູແລຍັງຕ້ອງແຈ້ງເຕືອນກ່ຽວກັບ disk/log collector.
7. ສຳຮອງ SQLite ທີ່ກຳລັງໃຊ້
backup:create ໃຊ້ VACUUM INTO ເພື່ອໄດ້ snapshot ທີ່ລວມ committed WAL data, ກວດ integrity/foreign keys, sync ແລະ publish ແບບບໍ່ overwrite. ຕ້ອງເປັນ file-backed SQLite main database, ບໍ່ຢູ່ outer transaction ຫຼືມີ attached databases. ຕ້ອງມີ disk ແລະເວລາພຽງພໍ; backup ອາດມີ I/O ສູງ.
install -d -m 700 /private/icom-backups
php bin/icom backup:create --output=/private/icom-backups/release-0.10.sqlite
php bin/icom backup:verify /private/icom-backups/release-0.10.sqlite
# Existing destinations are refused; use a new name for every snapshot.
# Keep the backup outside every web document root.8. Backup verification ບໍ່ແມ່ນ restore ຄົບລະບົບ
backup:verify ບໍ່ bootstrap ແອັບ; ເປີດ snapshot ແບບ read-only ພ້ອມ SQLite locking ແລະກວດ SHA-256/schema/integrity/foreign keys. ໃຊ້ trusted standalone artifact ທີ່ມີ parent0700/file0600; WAL-format/sidecars ຖືກປະຕິເສດ. Hash ບໍ່ຢືນຢັນຜູ້ສ້າງ. ຟີເຈີນີ້ໃຊ້ local POSIX filesystem ທີ່ຮອງຮັບ hard links/fsync; ບໍ່ແມ່ນ MySQL backup ຫຼື cloud backup. ຖ້າ sync ຫຼັງ publish ລົ້ມເຫຼວ file ທີ່ກວດແລ້ວຈະຍັງຢູ່: ກວດ file ກ່ອນລອງຊື່ໃໝ່.
9. ທົດລອງກູ້ຄືນກ່ອນຕ້ອງໃຊ້ຈິງ
ເກັບ APP_KEY/.env, uploaded files ແລະ code release ແຍກໄວ້ຢ່າງປອດໄພ; database backup ຢ່າງດຽວບໍ່ສາມາດຖອດລະຫັດ MFA ໄດ້ຖ້າຂາດ key. ຄືນ snapshot ໃສ່ private directory ໃໝ່ໃນ staging ທີ່ປິດບໍລິການສົ່ງຂໍ້ມູນພາຍນອກ. ກວດ migration status, login/MFA, resource ownership ແລະ queued jobs ກັບ key/release ທີ່ກົງກັນ. ກ່ອນ restore production ຕ້ອງຢຸດ traffic, workers ແລະ framework scheduler ທີ່ອາດຂຽນ DB, ເກັບສະພາບກ່ອນກູ້ຄືນ ແລະສະຫຼັບໄປໄຟລ໌ໃໝ່. ຢ່າ overwrite database ທີ່ຍັງມີ connection ເປີດ; ບໍ່ມີ auto-restore CLI ທີ່ຂຽນທັບ live DB. Snapshot ຈະຄືນ sessions, recovery codes ແລະ jobs ໄປສະຖານະເວລາສຳຮອງ: ຕ້ອງທົບທວນການຍົກເລີກສິດຫຼັງ backup ແລະຜົນຂອງ jobs ທີ່ສົ່ງໄປລະບົບພາຍນອກແລ້ວ. ການທົດສອບ 0.10 ຜ່ານ 73 ຈຸດກວດ ດ້ວຍຂໍ້ມູນຈຳລອງ, HTTPS, MFA ແລະ queue; ບໍ່ແມ່ນການຮັບຮອງ disaster recovery ຂອງແອັບທ່ານ.
10. ການປ່ຽນແປງທີ່ແອັບຕ້ອງກວດ
update/delete ທີ່ມີ limit/orderBy ຈະ throw ກ່ອນຂຽນ SQL. ເລືອກ IDs ແບບມີຂອບເຂດ ແລ້ວຂຽນດ້ວຍ explicit unique ID, tenant ແລະ optimistic version/state ຕາມວຽກ; ກວດ row count ແລະ conflict. ຢ່າລຶບ limit ອອກພຽງເພື່ອໃຫ້ error ຫາຍ. Gate/Identity ສຳເນົາ role/permission values ໃນຕອນສ້າງ; ການແກ້ config array ພາຍຫຼັງບໍ່ປ່ຽນສິດໃນ object ເກົ່າ. ຖ້າປ່ຽນ authorization configuration ໃຫ້ rebuild worker/app ຢ່າງຊັດເຈນ.
11. Error policies ແລະການປ່ອຍລຸ່ນ
ໃຊ້ RequestContext → Errors → RequestGuard → optional Cors → CSRF/auth/routes. ຕິດ Cors ກ່ອນ middleware ທີ່ຕ້ອງໃຫ້ error response ມີ CORS headers; ການປະຕິເສດກ່ອນເຂົ້າ Cors ບໍ່ມີ headers ຂອງມັນ. ValidateSignature ທີ່ route ຮັກສາ no-store/no-referrer ທັງ known errors ແລະ unexpected errors ຜ່ານ outer Errors; ບໍ່ຕ້ອງມີ inner Errors ເພີ່ມ. ກວດ clean installation, actual runtime/dependencies, business flows, HTTPS ແລະ backup ກ່ອນສະຫຼັບ release. ຮັກສາ rollback code ແລະຮູ້ວ່າ code rollback ບໍ່ undo database writes.
12. ການກວດທີ່ຍັງຕ້ອງມີຕາມລະບົບຈິງ
ຕ້ອງກວດ capacity, long-running memory, actual DB topology/failover, trusted proxy handling, external OIDC provider, notification delivery, independent security assessment ແລະ off-site restore ຕາມ deployment ຈິງ. Docker/Kubernetes files ເປັນ references; ການທົດສອບ fresh-storage behavior ບໍ່ແມ່ນຫຼັກຖານວ່າ cluster ຂອງທ່ານຜ່ານແລ້ວ. ບໍ່ມີ default account, ບໍ່ສົ່ງ email ຫຼືເປີດບໍລິການພາຍນອກອັດຕະໂນມັດ.