Kerangka Aplikasi Web Menggunakan Kerangka Fano, Kerangka Aplikasi Web Pascal. Lihat tutorial video.
Periksa apakah Paket LibCurl untuk pengembangan diinstal dengan menjalankan curl-config .
$ curl-config --version
Jika libcurl diinstal, Anda akan mendapatkan sesuatu seperti libcurl x.xx.x di mana x.xx.x adalah versi. Misalnya libcurl 7.47.0 jika tidak Anda dapatkan
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>
Jika libcurl tidak terpasang, jalankan
$ sudo apt install libcurl4-gnutls-dev
Pastikan Pascal gratis dipasang. Berlari
$ fpc -i
Jika Anda melihat sesuatu seperti Free Pascal Compiler version 3.0.4 , Anda siap melakukannya.
Kloning repositori ini
$ git clone [email protected]:fanoframework/fano-app.git --recursive
--recursive diperlukan jadi git juga menarik repositori fano.
Jika Anda hilang --recursive saat Anda mengkloning, Anda mungkin menemukan bahwa direktori fano kosong. Dalam hal ini jalankan
$ git submodule update --init
Untuk memperbarui Fano ke komit terbaru, jalankan
$ git checkout master && git submodule foreach --recursive git pull origin master
Perintah di atas akan checkout ke master cabang repositori ini dan menarik pembaruan terbaru dari cabang master repositori fano.
Salin *.cfg.sample to *.cfg . Lakukan penyesuaian seperti yang Anda butuhkan di build.cfg , build.prod.cfg , build.dev.cfg dan jalankan skrip shell build.sh (jika Anda berada di windows, maka build.cmd ).
File *.cfg ini berisi beberapa sakelar kompiler pascal gratis yang dapat Anda nyalakan/dimatikan untuk mengubah cara yang dapat dieksekusi dikompilasi dan dihasilkan. Untuk penjelasan lengkap tentang sakelar kompiler yang tersedia, konsultasikan dokumentasi Pascal gratis.
Juga salin app/config/config.json.sample to app/config/config.json dan edit konfigurasi sesuai kebutuhan. Misalnya, Anda mungkin perlu mengubah baseUrl untuk mencocokkan URL dasar Anda sendiri sehingga JavaScript atau CSS Stylesheets menunjuk untuk memperbaiki 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 skrip shell disediakan untuk menyederhanakan menyalin file konfigurasi tersebut. Perintah shell berikut mirip dengan perintah di atas.
$ ./tools/config.setup.sh
$ ./build.sh
Secara default, itu akan menghasilkan biner yang dapat dieksekusi di Direktori public .
Untuk membangun untuk lingkungan yang berbeda, atur variabel lingkungan BUILD_TYPE .
$ BUILD_TYPE=prod ./build.sh
Proses build akan menggunakan konfigurasi kompiler yang ditentukan dalam fano/fano.cfg , build.cfg dan build.prod.cfg . Secara default, build.prod.cfg berisi beberapa sakelar kompiler yang akan secara agresif mengoptimalkan executable baik dalam kecepatan dan ukuran.
$ BUILD_TYPE=dev ./build.sh
Proses Build akan menggunakan konfigurasi kompiler yang ditentukan dalam fano/fano.cfg , build.cfg dan build.dev.cfg .
Jika variabel lingkungan BUILD_TYPE tidak diatur, lingkungan produksi akan diasumsikan.
Kompilasi akan output dapat dieksekusi ke direktori yang ditentukan dalam variabel lingkungan EXEC_OUTPUT_DIR . Secara default adalah Direktori public .
$ EXEC_OUTPUT_DIR=/path/to/public/dir ./build.sh
Kompilasi akan menggunakan nama file yang dapat dieksekusi sebagaimana didefinisikan dalam variabel lingkungan EXEC_OUTPUT_NAME . Secara default adalah nama file app.cgi .
$ EXEC_OUTPUT_NAME=index.cgi ./build.sh
Siapkan host virtual. Silakan berkonsultasi dengan dokumentasi server web yang Anda gunakan.
Misalnya di 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>
Di Apache, Anda perlu mengaktifkan modul CGI, seperti mod_cgi atau mod_cgid . Jika modul CGI tidak dimuat, host virtual di atas akan menyebabkan app.cgi diunduh alih -alih dieksekusi.
Misalnya, di Debian, ini akan mengaktifkan modul mod_cgi .
$ sudo a2enmod cgi
$ sudo systemctl restart apache2
Bergantung pada pengaturan server Anda, misalnya, jika Anda menggunakan .htaccess , tambahkan kode berikut:
DirectoryIndex app.cgi
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.cgi [L]
</IfModule>
dan menempatkan file .htaccess di direktori yang sama dengan file app.cgi (yaitu, di direktori app/public ).
Konten .htaccess pada dasarnya memberi tahu Apache untuk melayani file/direktori yang ada secara langsung. Untuk file/direktori yang tidak ada, berikan ke aplikasi kami.
$ cd app/public
$ REQUEST_METHOD=GET
REQUEST_URI=/test/test
SERVER_NAME=juhara.com
./app.cgi
tools/simulate.run.sh adalah skrip bash yang dapat digunakan untuk menyederhanakan aplikasi menjalankan simulasi di shell.
$ ./tools/simulate.run.sh
atau untuk mengubah rute ke akses, atur variabel REQUEST_URI .
$ REQUEST_URI=/test/test ./simulate.run.sh
Ini mirip dengan mensimulasikan browser yang meminta halaman ini, misalnya,
$ wget -O- http://[your fano app hostname]/test/test
Namun, berjalan menggunakan tools/simulate.run.sh memungkinkan Anda untuk melihat output unit heaptrc untuk mendeteksi kebocoran memori (jika Anda mengaktifkan -gh sakelar di build.dev.cfg ).
Anda perlu menggunakan hanya biner yang dapat dieksekusi dan file pendukung apa pun seperti templat HTML, gambar, stylesheet CSS, konfigurasi aplikasi. File pas atau inc atau skrip shell apa pun tidak diperlukan dalam mesin penyebaran untuk dijalankan aplikasi.
Jadi untuk repositori ini, Anda perlu menyalin direktori public , Templates , config , dan storages ke mesin penyebaran Anda. Pastikan direktori storages dapat ditulis oleh server web.
Saat menjalankan skrip build.sh , Anda dapat menemukan peringatan berikut:
/usr/bin/ld: warning: public/link.res contains output sections; did you forget -T?
Ini diketahui masalah antara linker Pascal dan GNU gratis. Lihat FAQ: Link.Res Kesalahan Sintaks, atau "Apakah Anda lupa -t?"
Namun, peringatan ini kecil dan dapat diabaikan. Itu tidak mempengaruhi output yang dapat dieksekusi.
Kadang -kadang Pascal gratis tidak dapat mengkompilasi kode Anda karena, misalnya, Anda menghapus kode sumber unit (.pas) tetapi unit lama yang dihasilkan (.ppu, .o,.. .A file) masih ada atau ketika Anda beralih di antara cabang git. Solusi adalah menghapus file -file tersebut.
Secara default, unit yang dikompilasi yang dihasilkan ada di direktori bin/unit . Tapi jangan hapus file README.md di dalam direktori ini, karena tidak diabaikan oleh git.
$ rm bin/unit/*.ppu
$ rm bin/unit/*.o
$ rm bin/unit/*.rsj
$ rm bin/unit/*.a
Perintah Shell berikut akan menghapus semua file di dalam direktori bin/unit kecuali file README.md .
$ find bin/unit ! -name 'README.md' -type f -exec rm -f {} +
tools/clean.sh Script disediakan untuk menyederhanakan tugas ini.
Pascal gratis mendukung Windows sebagai sistem operasi target, namun, repositori ini belum diuji pada Windows. Untuk menargetkan windows, di build.cfg ganti sakelar kompiler -Tlinux dengan -Twin64 dan garis uncomment #-WC menjadi -WC .
Meskipun Anda dapat menggunakan Lazarus IDE, itu bukan alat wajib. Setiap editor teks untuk pengeditan kode (atom, kode studio visual, luhur, vim dll) sudah cukup.