هيكل عظمي لتطبيق الويب باستخدام Fano Framework ، Pascal Web Application Framework. عرض الفيديو التعليمي.
تحقق مما إذا تم تثبيت حزمة Libcurl للتطوير عن طريق تشغيل curl-config .
$ curl-config --version
إذا تم تثبيت libcurl ، فستحصل على شيء مثل libcurl x.xx.x حيث يكون x.xx.x إصدارًا. على سبيل المثال libcurl 7.47.0 وإلا ستحصل
The program 'curl-config' can be found in the following packages:
* libcurl4-gnutls-dev
* libcurl4-nss-dev
* libcurl4-openssl-dev
Try: sudo apt install <selected package>
في حالة عدم تثبيت libcurl ، قم بتشغيل
$ sudo apt install libcurl4-gnutls-dev
تأكد من تثبيت Pascal المجاني. يجري
$ fpc -i
إذا رأيت شيئًا مثل Free Pascal Compiler version 3.0.4 ، فأنت على ما يرام.
استنساخ هذا المستودع
$ git clone [email protected]:fanoframework/fano-app.git --recursive
-هناك حاجة --recursive لذا فإن GIT أيضًا تسحب مستودع Fano.
إذا كنت مفقودًا --recursive حالة استنساخ ، فقد تجد أن دليل fano فارغ. في هذه الحالة تشغيل
$ git submodule update --init
لتحديث Fano إلى أحدث التزامها ، Run
$ git checkout master && git submodule foreach --recursive git pull origin master
سيقوم الأمر أعلاه بالخروج إلى الفرع master لهذا المستودع وسحب آخر تحديث من master Branch of Fano Repository.
نسخ *.cfg.sample إلى *.cfg . قم بالتعديل كما تحتاج في build.cfg ، build.prod.cfg ، build.dev.cfg وقم بتشغيل build.sh shell script (إذا كنت على Windows ، ثم build.cmd ).
تحتوي ملفات *.cfg هذه على بعض مفاتيح برمجيات Pascal المجانية التي يمكنك تشغيلها/إيقاف تشغيلها لتغيير كيفية تجميع وإنشاء تنفيذ. للحصول على شرح كامل على مفاتيح المترجمات المتاحة ، استشر وثائق Pascal المجانية.
قم أيضًا بنسخ app/config/config.json.sample إلى app/config/config.json وتحرير التكوين حسب الحاجة. على سبيل المثال ، قد تحتاج إلى تغيير baseUrl لمطابقة عنوان URL الخاص بك ، بحيث تشير أوراق أنماط JavaScript أو CSS إلى عنوان URL.
$ cp app/config/config.json.sample app/config/config.json
$ cp build.prod.cfg.sample build.prod.cfg
$ cp build.dev.cfg.sample build.dev.cfg
$ cp build.cfg.sample build.cfg
$ ./build.sh
يتم توفير tools/config.setup.sh shell لتبسيط نسخ ملفات التكوين هذه. يتبع الأمر shell يشبه الأمر أعلاه.
$ ./tools/config.setup.sh
$ ./build.sh
بشكل افتراضي ، سيتم إخراج الثنائي القابل للتنفيذ في الدليل public .
للبناء لبيئة مختلفة ، قم بتعيين متغير بيئة BUILD_TYPE .
$ BUILD_TYPE=prod ./build.sh
ستستخدم عملية الإنشاء تكوين برنامج التحويل البرمجي المحدد في fano/fano.cfg و build.cfg و build.prod.cfg . بشكل افتراضي ، يحتوي build.prod.cfg على بعض مفاتيح التحويلات البرمجية التي ستحسن بقوة قابلة للتنفيذ في السرعة والحجم.
$ BUILD_TYPE=dev ./build.sh
ستستخدم عملية الإنشاء تكوين برنامج التحويل البرمجي المحدد في fano/fano.cfg و build.cfg و build.dev.cfg .
إذا لم يتم تعيين متغير بيئة BUILD_TYPE ، فسيتم افتراض بيئة الإنتاج.
سيتم إخراج التجميع القابل للتنفيذ إلى الدليل المحدد في متغير بيئة EXEC_OUTPUT_DIR . بشكل افتراضي هو الدليل public .
$ EXEC_OUTPUT_DIR=/path/to/public/dir ./build.sh
سيستخدم التجميع اسم الملف القابل للتنفيذ على النحو المحدد في متغير البيئة EXEC_OUTPUT_NAME . بشكل افتراضي هو app.cgi Filename.
$ EXEC_OUTPUT_NAME=index.cgi ./build.sh
إعداد مضيف افتراضي. يرجى الرجوع إلى وثائق خادم الويب الذي تستخدمه.
على سبيل المثال على أباتشي ،
<VirtualHost *:80>
ServerName fano.dev
DocumentRoot /home/fanodev/public
<Directory "/home/fanodev/public">
Options +ExecCGI
AllowOverride FileInfo Indexes
Require all granted
DirectoryIndex app.cgi
AddHandler cgi-script .cgi
</Directory>
</VirtualHost>
على Apache ، ستحتاج إلى تمكين وحدة CGI ، مثل mod_cgi أو mod_cgid . إذا لم يتم تحميل وحدة CGI ، فسيتم تنزيل app.cgi أعلاه App.CGI بدلاً من تنفيذها.
على سبيل المثال ، على Debian ، سيمكن هذا وحدة mod_cgi .
$ sudo a2enmod cgi
$ sudo systemctl restart apache2
اعتمادًا على إعداد الخادم الخاص بك ، على سبيل المثال ، إذا كنت تستخدم .htaccess ، أضف الكود التالي:
DirectoryIndex app.cgi
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.cgi [L]
</IfModule>
و put .htaccess ملف في نفس الدليل مثل ملف app.cgi (أي ، في app/public ).
يخبر محتوى .htaccess أساسًا Apache بخدمة الملفات/الدلائل الموجودة مباشرة. لأي ملفات/أدلة غير موجودة ، تمريرها إلى تطبيقنا.
$ cd app/public
$ REQUEST_METHOD=GET
REQUEST_URI=/test/test
SERVER_NAME=juhara.com
./app.cgi
tools/simulate.run.sh هو نص bash يمكن استخدامه لتبسيط محاكاة تطبيق التشغيل في shell.
$ ./tools/simulate.run.sh
أو لتغيير المسار للوصول ، قم بتعيين متغير REQUEST_URI .
$ REQUEST_URI=/test/test ./simulate.run.sh
هذا يشبه محاكاة المتصفح الذي يطلب هذه الصفحة ، على سبيل المثال ،
$ wget -O- http://[your fano app hostname]/test/test
ومع ذلك ، يتيح لك التشغيل باستخدام tools/simulate.run.sh عرض إخراج وحدة heaptrc للكشف عن تسرب الذاكرة (إذا قمت بتمكين -gh build.dev.cfg ).
تحتاج إلى نشر ثنائي قابل للتنفيذ فقط وأي ملفات داعمة مثل قوالب HTML ، الصور ، أوراق أنماط CSS ، تكوين التطبيق. ليس هناك حاجة إلى أي ملفات pas أو inc أو البرامج النصية shell في جهاز النشر من أجل تشغيل التطبيق.
لذلك بالنسبة لهذا المستودع ، ستحتاج إلى نسخ الدلائل public Templates config storages إلى جهاز النشر الخاص بك. تأكد من أن دليل storages قابل للكتابة بواسطة خادم الويب.
عند تشغيل البرنامج النصي build.sh ، قد تواجه تحذيرًا بعد:
/usr/bin/ld: warning: public/link.res contains output sections; did you forget -T?
هذه هي القضية المعروفة بين Pascal و Gnu Linker. انظر الأسئلة الشائعة: Link.res Syntax Error ، أو "هل نسيت -T؟"
ومع ذلك ، فإن هذا التحذير بسيط ويمكن تجاهله. لا يؤثر على الإخراج القابل للتنفيذ.
في وقت ما ، لا يمكن لـ Pascal Free تجميع الكود الخاص بك لأنه ، على سبيل المثال ، قمت بحذف رمز مصدر الوحدة (.Pas) ولكن الوحدة القديمة التي تم إنشاؤها (.PPU ، .O ، .A) لا تزال موجودة أو عند التبديل بين فروع GIT. الحل هو إزالة تلك الملفات.
بشكل افتراضي ، توجد وحدات تم تجميعها في دليل bin/unit . ولكن لا تقم بحذف ملف README.md داخل هذا الدليل ، لأنه لا يتم تجاهله بواسطة GIT.
$ rm bin/unit/*.ppu
$ rm bin/unit/*.o
$ rm bin/unit/*.rsj
$ rm bin/unit/*.a
سيؤدي الأمر التالي إلى إزالة جميع الملفات داخل دليل bin/unit باستثناء ملف README.md .
$ find bin/unit ! -name 'README.md' -type f -exec rm -f {} +
يتم توفير tools/clean.sh البرنامج النصي لتبسيط هذه المهمة.
يدعم Pascal Free Windows كنظام تشغيل مستهدف ، ومع ذلك ، لم يتم اختبار هذا المستودع بعد على Windows. لاستهداف Windows ، في build.cfg استبدل مفتاح التحويل البرمجي -Tlinux مع -Twin64 وخط Uncomment #-WC ليصبح -WC .
بينما يمكنك استخدام Lazarus IDE ، فهي ليست أداة إلزامية. يجب أن يكون أي محرر نصوص لتحرير التعليمات البرمجية (Atom ، Visual Studio Code ، Sublime ، Vim إلخ) كافيًا.