เว็บแอปพลิเคชัน Skeleton โดยใช้ 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 ของที่เก็บ Fano
คัดลอก *.cfg.sample ถึง *.cfg ทำการปรับตามที่คุณต้องการใน build.cfg , build.prod.cfg , build.dev.cfg และเรียกใช้ shell shell build.sh (ถ้าคุณอยู่บน windows จากนั้น build.cmd )
ไฟล์ *.cfg เหล่านี้มีสวิตช์คอมไพเลอร์ Pascal ฟรีบางส่วนที่คุณสามารถเปิด/ปิดเพื่อเปลี่ยนวิธีการรวบรวมและสร้างการทำงานได้ สำหรับคำอธิบายที่สมบูรณ์เกี่ยวกับสวิตช์คอมไพเลอร์ที่มีอยู่ให้ปรึกษาเอกสาร Pascal ฟรี
นอกจากนี้ยังคัดลอก app/config/config.json.sample ไปยัง app/config/config.json และแก้ไขการกำหนดค่าตามต้องการ ตัวอย่างเช่นคุณอาจต้องเปลี่ยน baseUrl เพื่อให้ตรงกับ URL พื้นฐานของคุณเองดังนั้น JavaScript หรือ CSS Stylesheets ชี้ไปที่ 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 เชลล์มีให้เพื่อการคัดลอกไฟล์การกำหนดค่าเหล่านั้นง่ายขึ้น คำสั่งเชลล์ต่อไปนี้คล้ายกับคำสั่งด้านบน
$ ./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 ชื่อไฟล์
$ EXEC_OUTPUT_NAME=index.cgi ./build.sh
ตั้งค่าโฮสต์เสมือนจริง โปรดปรึกษาเอกสารเกี่ยวกับเว็บเซิร์ฟเวอร์ที่คุณใช้
ตัวอย่างเช่น apache
<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 ถูกดาวน์โหลดแทนการดำเนินการ
ตัวอย่างเช่นบน 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>
และใส่ไฟล์ .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 เป็นสคริปต์ทุบตีที่สามารถใช้เพื่อลดความซับซ้อนของแอปพลิเคชันการเรียกใช้การจำลองในเชลล์
$ ./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 หรือสคริปต์เชลล์ในเครื่องปรับใช้เพื่อให้แอปพลิเคชันรัน
ดังนั้นสำหรับที่เก็บนี้คุณจะต้องคัดลอก 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 ไวยากรณ์ข้อผิดพลาดหรือ "คุณลืม -t?"
อย่างไรก็ตามคำเตือนนี้มีน้อยและสามารถเพิกเฉยได้ มันไม่ส่งผลกระทบต่อเอาต์พุต
บางครั้ง Pascal ฟรีไม่สามารถรวบรวมรหัสของคุณได้เนื่องจากตัวอย่างเช่นคุณลบซอร์สโค้ดหน่วย (.pas) แต่หน่วยที่สร้างขึ้นเก่า (.ppu, .o, .a ไฟล์) ยังคงอยู่ที่นั่นหรือเมื่อคุณสลับระหว่างกิ่งก้าน วิธีแก้ปัญหาคือการลบไฟล์เหล่านั้น
โดยค่าเริ่มต้นหน่วยคอมไพล์ที่สร้างขึ้นจะอยู่ในไดเรกทอรี bin/unit แต่อย่าลบไฟล์ README.md ภายในไดเรกทอรีนี้เนื่องจากไม่ได้ถูกเพิกเฉยโดย Git
$ rm bin/unit/*.ppu
$ rm bin/unit/*.o
$ rm bin/unit/*.rsj
$ rm bin/unit/*.a
คำสั่ง shell ต่อไปนี้จะลบไฟล์ทั้งหมดภายในไดเรกทอรี bin/unit ยกเว้นไฟล์ README.md
$ find bin/unit ! -name 'README.md' -type f -exec rm -f {} +
tools/clean.sh สคริปต์มีให้เพื่อให้งานนี้ง่ายขึ้น
Free Pascal รองรับ Windows เป็นระบบปฏิบัติการเป้าหมายอย่างไรก็ตามที่เก็บนี้ยังไม่ได้ทดสอบบน Windows ในการกำหนดเป้าหมาย windows ใน build.cfg แทนที่สวิตช์คอมไพเลอร์ -Tlinux ด้วย -Twin64 และสายการเขียนบท #-WC เพื่อเป็น -WC
ในขณะที่คุณสามารถใช้ Lazarus IDE แต่ก็ไม่ใช่เครื่องมือบังคับ ตัวแก้ไขข้อความใด ๆ สำหรับการแก้ไขรหัส (อะตอม, รหัสสตูดิโอภาพ, ประเสริฐ, vim ฯลฯ ) ควรพอเพียง