বাইনারি প্যাকেজিং

webman প্রকল্পকে একটি বাইনারি ফাইলে প্যাকেজ করতে সমর্থন করে, যা webman কে PHP পরিবেশ ছাড়াই লিনাক্স সিস্টেমে চালাতে পারে।

মনোযোগ
প্যাকেজ করা ফাইল বর্তমানে x86_64 আর্কিটেকচারের লিনাক্স সিস্টেমে চালানো সমর্থন করে, উইন্ডোজ এবং ম্যাক সিস্টেমে সমর্থিত নয়।
php.ini এর phar কনফিগারেশন অপশন বন্ধ করতে হবে, অর্থাৎ phar.readonly = 0 সেট করতে হবে।

কমান্ড লাইন টুল ইনস্টল করা

composer require webman/console

প্যাকেজিং

কমান্ডটি চালান

php webman build:bin

একই সঙ্গে আপনি যেকোনো PHP সংস্করণ দিয়ে প্যাকেজ করতে পারেন, যেমন

php webman build:bin 8.1

প্যাকেজিং শেষে bulid ডিরেক্টরিতে একটি webman.bin ফাইল তৈরি হবে।

চালু করা

webman.bin ফাইলটি লিনাক্স সার্ভারে আপলোড করুন এবং ./webman.bin start অথবা ./webman.bin start -d চালান।

নীতি

  • প্রথমে স্থানীয় webman প্রকল্পকে একটি phar ফাইলে প্যাকেজ করা হয়।
  • তারপর PHP 8.x.micro.sfx কে দূর থেকে ডাউনলোড করে স্থানীয় কম্পিউটারে নিয়ে আসা হয়।
  • php8.x.micro.sfx এবং phar ফাইলকে একটি বাইনারি ফাইলে জোড়া দেওয়া হয়।

মনোযোগের বিষয়বস্তু

  • স্থানীয় PHP সংস্করণ এবং প্যাকেজড সংস্করণ অবশ্যই একে অপরের সমান হতে হবে, যেমন স্থানীয় PHP 8.1 হলে, প্যাকেজিংও PHP 8.1 দিয়ে করা উচিত, যাতে সম্পৃক্ততার সমস্যার সৃষ্টি না হয়।
  • প্যাকেজিং প্রক্রিয়াতে PHP 8 এর সোর্স কোড ডাউনলোড করা হবে, তবে এটি স্থানীয়ভাবে ইনস্টল হবে না, যা স্থানীয় PHP পরিবেশকে প্রভাবিত করবে না।
  • webman.bin বর্তমানে শুধুমাত্র x86_64 আর্কিটেকচারের লিনাক্স সিস্টেমে চালানো যায়, ম্যাক সিস্টেমে সমর্থিত নয়।
  • প্যাকেজ করা প্রকল্পটি রিলোড সমর্থন করে না, কোড আপডেট করতে হলে পুনরায় চালু করতে হবে।
  • ডিফল্টভাবে env ফাইলটি প্যাকেজ করা হয় না (config/plugin/webman/console/app.php এ exclude_files দ্বারা নিয়ন্ত্রণ করা হয়), তাই চালানোর সময়ে env ফাইলটি webman.bin এর একই ডিরেক্টরিতে রাখতে হবে।
  • চলার সময় webman.bin এর অবস্থানে runtime ডিরেক্টরি তৈরি হবে, যেখানে লগ ফাইলগুলি সংরক্ষণ করা হবে।
  • বর্তমানে webman.bin বাহ্যিক php.ini ফাইল পড়বে না, যদি php.ini কাস্টমাইজ করতে হয় তবে /config/plugin/webman/console/app.php ফাইলের custom_ini এ সেট করতে হবে।
  • কিছু ফাইল প্যাকেজ করার প্রয়োজন নেই, সেগুলি config/plugin/webman/console/app.php এ বাদ দেওয়া যেতে পারে, যাতে প্যাকেজ করা ফাইলে বড় হয়ে না যায়।
  • বাইনারি প্যাকেজিং swoole coroutine ব্যবহার সমর্থন করে না।
  • ব্যবহারকারীর আপলোড করা ফাইলগুলিকে বাইনারি প্যাকেজে সংরক্ষণ করবেন না, কারণ phar:// প্রোটোকল দ্বারা ব্যবহারকারী আপলোডের ফাইল পরিচালনা করা খুবই বিপজ্জনক (phar deserialization vulnerability)। ব্যবহারকারীর আপলোড করা ফাইল আলাদা ডিস্কে সংরক্ষিত হতে হবে।
  • যদি আপনার ব্যবসায় public ডিরেক্টরিতে ফাইল আপলোডের প্রয়োজন হয়, তবে public ডিরেক্টরিটিকে আলাদা করে webman.bin এর অবস্থানে রাখতে হবে, তখন config/app.php কে নিম্নলিখিত ভাবে কনফিগার করতে হবে এবং পুনরায় প্যাকেজ করতে হবে।
    'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',

পৃথকভাবে স্থির PHP ডাউনলোড করা

কখনও কখনও আপনি PHP পরিবেশ স্থাপন করতে চান না, শুধু একটি PHP কার্যকরী ফাইল প্রয়োজন, তাহলে এখানে ক্লিক করে স্থির php ডাউনলোড করুন।

টিপ
যদি স্থির php এর জন্য php.ini ফাইল নির্ধারণ করতে চান, তাহলে নিচের কমান্ড ব্যবহার করুন php -c /your/path/php.ini start.php start -d

সমর্থিত এক্সটেনশন

Core, date, libxml, openssl, pcre, sqlite3, zlib, amqp, apcu, bcmath, calendar, ctype, curl, dba, dom, sockets, event, hash, fileinfo, filter, gd, gettext, json, iconv, SPL, session, standard, mbstring, igbinary, imagick, exif, mongodb, msgpack, mysqlnd, mysqli, pcntl, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, readline, redis, Reflection, shmop, SimpleXML, soap, sodium, sqlsrv, sysvmsg, sysvsem, sysvshm, tokenizer, xlswriter, xml, xmlreader, xmlwriter, xsl, zip, memcache, Zend OPcache

প্রকল্পের উত্স

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