İkili Paketleme

webman, projeyi bir ikili dosyaya paketlemeyi destekler, bu sayede webman'ın linux sistemlerde php ortamına ihtiyaç duymadan da çalıştırılabilir.

Not
Paketlendikten sonra dosyalar sadece x86_64 mimarisi linux sistemlerinde çalışır, macOS sistemlerini desteklemez
php.ini dosyasındaki, yani phar.readonly = 0 geçerli olacak şekilde phar yapılandırma seçeneklerini kapatmanız gerekmektedir.

Komut Satırı Aracı Kurulumu

composer require webman/console ^1.2.24

Yapılandırma Ayarları

config/plugin/webman/console/app.php dosyasını açarak aşağıdaki ayarı yapın

'exclude_pattern'   => '#^(?!.*(composer.json|/.github/|/.idea/|/.git/|/.setting/|/runtime/|/vendor-bin/|/build/|vendor/webman/admin))(.*)$#'

Bu ayar, paketleme sırasında gereksiz dizin ve dosyaları hariç tutmak için kullanılır, paket boyutunu büyümemesi için.

Paketleme

Aşağıdaki komutu çalıştırın

php webman build:bin

Ayrıca, belirli bir php sürümü ile de paketleme yapabilirsiniz, örneğin

php webman build:bin 8.1

Paketleme işlemi sonrasında webman.bin adında bir dosya build klasöründe oluşturulacaktır.

Başlatma

webman.bin dosyasını linux sunucusuna yükleyerek ./webman.bin start veya ./webman.bin start -d komutunu çalıştırarak başlatabilirsiniz.

Prensip

  • İlk olarak, yerel webman projesi bir phar dosyasına paketlenir
  • Daha sonra php8.x.micro.sfx dosyası uzaktan indirilir
  • Son olarak, php8.x.micro.sfx ve phar dosyası birleştirilerek bir ikili dosya oluşturulur

Notlar

  • Yereldeki php sürümü 7.2 ve daha yüksekse paketleme komutunu çalıştırabilirsiniz
  • Ancak, sadece php8 ikili dosyası oluşturulabilir
  • Yereldeki php sürümü ve paketleme sürümünün aynı olmasını şiddetle tavsiye ederiz, yani eğer yerelde php8.0 kullanıyorsanız, paketleme için de php8.0 kullanmalısınız, uyumluluk sorunlarını önlemek adına
  • Paketleme işleminde php8 kaynak kodları indirilir, ancak yerelde kurulmaz, yerel php ortamını etkilemez
  • webman.bin şu anda yalnızca x86_64 mimarili linux sistemlerde çalışır, macOS sistemlerini desteklemez
  • Varsayılan olarak env dosyası paketlenmez (config/plugin/webman/console/app.php içinde exclude_files ayarını kontrol eder), bu yüzden başlangıçta env dosyasının webman.bin ile aynı dizinde olması gerekmektedir
  • Çalışma sırasında, webman.bin dosyasının bulunduğu dizinde runtime klasörü oluşturulur, bu klasör log dosyalarını saklamak için kullanılır
  • Şu anda webman.bin dışarıdan php.ini dosyasını okumaz, özelleştirilmiş php.ini dosyası gerekiyorsa, lütfen /config/plugin/webman/console/app.php dosyasında custom_ini ayarını yapın

Tek Başıma Statik PHP İndirme

Bazen sadece bir PHP ortamının dağıtılmasını istersiniz, bu durumda statik php indirme bağlantısına tıklayabilirsiniz.

Not
Statik php'ye özel bir php.ini dosyası belirtmek isterseniz, aşağıdaki komutu kullanabilirsiniz: php -c /your/path/php.ini start.php start -d

Desteklenen Uzantılar

bcmath
calendar
Core
ctype
curl
date
dom
event
exif
FFI
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mongodb
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Proje Kaynağı

https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli