Squelette d'application Web à l'aide de Fano Framework, Pascal Application Web Framework. Afficher le tutoriel vidéo.
Vérifiez si le package libcurl pour le développement est installé en exécutant curl-config .
$ curl-config --version
Si libcurl installé, vous obtiendrez quelque chose comme libcurl x.xx.x où x.xx.x est la version. Par exemple libcurl 7.47.0 sinon vous obtenez
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>
Dans le cas où libcurl non installé, exécutez
$ sudo apt install libcurl4-gnutls-dev
Assurez-vous que Pascal gratuit est installé. Courir
$ fpc -i
Si vous voyez quelque chose comme Free Pascal Compiler version 3.0.4 , vous êtes prêt à partir.
Cloner ce référentiel
$ git clone [email protected]:fanoframework/fano-app.git --recursive
--recursive est nécessaire pour que Git tire également le référentiel fano.
Si vous manquez --recursive lorsque vous vous clonez, vous pouvez constater que le répertoire fano est vide. Dans ce cas,
$ git submodule update --init
Pour mettre à jour Fano à son dernier commit, exécutez
$ git checkout master && git submodule foreach --recursive git pull origin master
La commande ci-dessus passera à la branche master de ce référentiel et tirera la dernière mise à jour de la branche master du référentiel fano.
Copier *.cfg.sample à *.cfg . Faites un ajustement dont vous avez besoin dans build.cfg , build.prod.cfg , build.dev.cfg et exécuter le script shell build.sh (si vous êtes sous Windows, puis build.cmd ).
Ces fichiers *.cfg contiennent des commutateurs de compilateur Pascal gratuits que vous pouvez activer / désactiver pour modifier la compilation et la génération de l'exécutable. Pour une explication complète sur les commutateurs du compilateur disponibles, consultez la documentation GRATUITE PASCAL.
Copiez également app/config/config.json.sample sur app/config/config.json et modifiez la configuration au besoin. Par exemple, vous devrez peut-être modifier baseUrl pour correspondre à votre propre URL de base afin que JavaScript ou CSS de styles de styles pointent pour corriger l'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 sont fournis pour simplifier la copie de ces fichiers de configuration. La commande shell suivante est similaire à la commande ci-dessus.
$ ./tools/config.setup.sh
$ ./build.sh
Par défaut, il sortira l'exécutable binaire dans le répertoire public .
Pour construire pour un environnement différent, définissez la variable d'environnement BUILD_TYPE .
$ BUILD_TYPE=prod ./build.sh
Build Process utilisera la configuration du compilateur défini dans fano/fano.cfg , build.cfg et build.prod.cfg . Par défaut, build.prod.cfg contient certains commutateurs de compilateur qui optimiseront agressivement l'exécutable à la fois en vitesse et en taille.
$ BUILD_TYPE=dev ./build.sh
Build Process utilisera la configuration du compilateur défini dans fano/fano.cfg , build.cfg et build.dev.cfg .
Si la variable d'environnement BUILD_TYPE n'est pas définie, l'environnement de production sera supposé.
La compilation sortira exécutable en répertoire défini dans la variable d'environnement EXEC_OUTPUT_DIR . Par défaut est le répertoire public .
$ EXEC_OUTPUT_DIR=/path/to/public/dir ./build.sh
La compilation utilisera le nom de fichier exécutable tel que défini dans EXEC_OUTPUT_NAME Environment variable. Par défaut, le nom de fichier app.cgi .
$ EXEC_OUTPUT_NAME=index.cgi ./build.sh
Configurer un hôte virtuel. Veuillez consulter la documentation du serveur Web que vous utilisez.
Par exemple sur 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>
Sur Apache, vous devrez activer le module CGI, tel que mod_cgi ou mod_cgid . Si le module CGI n'est pas chargé, le Virtual Host provoquera app.cgi est téléchargé au lieu d'être exécuté.
Par exemple, sur Debian, cela permettra le module mod_cgi .
$ sudo a2enmod cgi
$ sudo systemctl restart apache2
Selon la configuration de votre serveur, par exemple, si vous utilisez .htaccess , ajoutez le code suivant:
DirectoryIndex app.cgi
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.cgi [L]
</IfModule>
et mettez le fichier .htaccess dans le même répertoire que le fichier app.cgi (c'est-à-dire dans app/public ).
Le contenu de .htaccess indique essentiellement à Apache de servir directement les fichiers / répertoires existants. Pour tous les fichiers / répertoires inexistants, transmettez-les à notre application.
$ cd app/public
$ REQUEST_METHOD=GET
REQUEST_URI=/test/test
SERVER_NAME=juhara.com
./app.cgi
tools/simulate.run.sh est un script bash qui peut être utilisé pour simplifier la simulation de l'application d'exécution dans shell.
$ ./tools/simulate.run.sh
ou pour modifier l'itinéraire vers l'accès, définissez la variable REQUEST_URI .
$ REQUEST_URI=/test/test ./simulate.run.sh
Ceci est similaire à la simulation de navigateur demandant cette page, par exemple,
$ wget -O- http://[your fano app hostname]/test/test
Cependant, l'exécution à l'aide tools/simulate.run.sh vous permet d'afficher la sortie de l'unité heaptrc pour détecter la fuite de mémoire (si vous activez le commutateur -gh dans build.dev.cfg ).
Vous devez déployer uniquement un binaire exécutable et tous les fichiers de support tels que les modèles HTML, les images, les feuilles de style CSS, la configuration de l'application. Tous les fichiers pas ou inc ou scripts shell ne sont pas nécessaires dans la machine de déploiement dans l'ordre de l'application à exécuter.
Donc, pour ce référentiel, vous devrez copier des répertoires public , Templates , config et storages sur votre machine de déploiement. Assurez-vous que le répertoire storages est écrite par serveur Web.
Lors de l'exécution du script build.sh , vous pouvez rencontrer un avertissement suivant:
/usr/bin/ld: warning: public/link.res contains output sections; did you forget -T?
Ce problème est connu entre la Free Pascal et le GNU Linker. Voir FAQ: Link.res Syntaxe Erreur, ou "Avez-vous oublié -T?"
Cependant, cet avertissement est mineur et peut être ignoré. Il n'affecte pas l'exécutable de sortie.
Parfois, Pascal ne peut pas compiler votre code car, par exemple, vous avez supprimé un code source d'unité (.pas) mais l'ancien unité générée (.ppu, .o, .a) toujours là ou lorsque vous basculez entre les branches GIT. La solution consiste à supprimer ces fichiers.
Par défaut, les unités compilées générées sont dans le répertoire bin/unit . Mais ne supprimez pas le fichier README.md dans ce répertoire, car il n'est pas ignoré par Git.
$ rm bin/unit/*.ppu
$ rm bin/unit/*.o
$ rm bin/unit/*.rsj
$ rm bin/unit/*.a
La commande shell suivante supprimera tous les fichiers dans le répertoire bin/unit sauf le fichier README.md .
$ find bin/unit ! -name 'README.md' -type f -exec rm -f {} +
Le script tools/clean.sh est fourni pour simplifier cette tâche.
Free Pascal prend en charge les fenêtres en tant que système d'exploitation cible, cependant, ce référentiel n'est pas encore testé sur Windows. Pour cibler les fenêtres, dans build.cfg remplacez le commutateur du compilateur -Tlinux par -Twin64 et la ligne non commise #-WC pour devenir -WC .
Bien que vous puissiez utiliser Lazarus IDE, ce n'est pas un outil obligatoire. Tout éditeur de texte pour l'édition de code (Atom, Visual Studio Code, Sublime, VIM, etc.) devrait suffire.