Esqueleto de aplicaciones web utilizando Fano Framework, Pascal Web Application Framework. Ver video tutorial.
Compruebe si el paquete libcurl para el desarrollo se instala ejecutando curl-config .
$ curl-config --version
Si LibCurl instaló, obtendrá algo como libcurl x.xx.x donde x.xx.x es la versión. Por ejemplo, libcurl 7.47.0 de lo contrario obtienes
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>
En caso de que Libcurl no esté instalado, ejecute
$ sudo apt install libcurl4-gnutls-dev
Asegúrese de que esté instalado Pascal gratis. Correr
$ fpc -i
Si ve algo como Free Pascal Compiler version 3.0.4 , está listo para comenzar.
Clon este repositorio
$ git clone [email protected]:fanoframework/fano-app.git --recursive
--recursive necesita recursión, por lo que Git también extrae el repositorio de Fano.
Si te falta --recursive cuando clonas, puede encontrar que el directorio fano está vacío. En este caso Run
$ git submodule update --init
Para actualizar a Fano a su último compromiso, ejecute
$ git checkout master && git submodule foreach --recursive git pull origin master
El comando anterior se verá a la rama master de este repositorio y extraerá la última actualización de la rama master del repositorio de Fano.
Copiar *.cfg.sample a *.cfg . Realice el ajuste como sea necesario en build.cfg , build.prod.cfg , build.dev.cfg y ejecute build.sh shell script (si está en Windows, luego build.cmd ).
Estos archivos *.cfg contienen algunos interruptores de compilador Pascal gratuitos que puede encender/apagar para cambiar la forma en que se compila y generando ejecutables. Para una explicación completa sobre los interruptores del compilador disponible, consulte la documentación de Pascal gratuita.
También copie app/config/config.json.sample a app/config/config.json y edite la configuración según sea necesario. Por ejemplo, es posible que deba cambiar baseUrl para que coincida con su propia URL base, por lo que JavaScript o CSS Styles hojas apuntan a corregir la 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 script se proporciona para simplificar la copia de esos archivos de configuración. El siguiente comando Shell es similar al comando anterior.
$ ./tools/config.setup.sh
$ ./build.sh
Por defecto, generará ejecutable binario en directorio public .
Para construir para un entorno diferente, establezca la variable de entorno BUILD_TYPE .
$ BUILD_TYPE=prod ./build.sh
El proceso de compilación utilizará la configuración del compilador definida en fano/fano.cfg , build.cfg y build.prod.cfg . Por defecto, build.prod.cfg contiene algunos interruptores de compiladores que optimizarán agresivamente el ejecutable tanto en velocidad como en tamaño.
$ BUILD_TYPE=dev ./build.sh
El proceso de compilación utilizará la configuración del compilador definida en fano/fano.cfg , build.cfg y build.dev.cfg .
Si no se establece la variable de entorno BUILD_TYPE , se asumirá el entorno de producción.
La compilación emitirá ejecutable a directorio definido en la variable de entorno EXEC_OUTPUT_DIR . Por defecto es el directorio public .
$ EXEC_OUTPUT_DIR=/path/to/public/dir ./build.sh
La compilación utilizará el nombre de archivo ejecutable como se define en la variable de entorno EXEC_OUTPUT_NAME . Por defecto es app.cgi FileName.
$ EXEC_OUTPUT_NAME=index.cgi ./build.sh
Configurar un host virtual. Consulte la documentación del servidor web que usa.
Por ejemplo en 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>
En Apache, deberá habilitar el módulo CGI, como mod_cgi o mod_cgid . Si el módulo CGI no está cargado, el host virtual anterior causará que se descargue app.cgi en lugar de ejecutar.
Por ejemplo, en Debian, esto habilitará el módulo mod_cgi .
$ sudo a2enmod cgi
$ sudo systemctl restart apache2
Dependiendo de la configuración de su servidor, por ejemplo, si usa .htaccess , agregue el siguiente código:
DirectoryIndex app.cgi
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.cgi [L]
</IfModule>
y coloque el archivo .htaccess en el mismo directorio que el archivo app.cgi (es decir, en app/public ).
El contenido de .htaccess básicamente le dice a Apache que sirva directamente archivos/directorios existentes. Para cualquier archivo/directorios inexistentes, paselos a nuestra aplicación.
$ cd app/public
$ REQUEST_METHOD=GET
REQUEST_URI=/test/test
SERVER_NAME=juhara.com
./app.cgi
tools/simulate.run.sh es un script bash que se puede usar para simplificar la aplicación de ejecución simulada en shell.
$ ./tools/simulate.run.sh
o para cambiar la ruta para acceder, establezca la variable REQUEST_URI .
$ REQUEST_URI=/test/test ./simulate.run.sh
Esto es similar a la simulación de navegador solicitando esta página, por ejemplo,
$ wget -O- http://[your fano app hostname]/test/test
Sin embargo, ejecutar con tools/simulate.run.sh le permite ver la salida de la unidad heaptrc para detectar la fuga de memoria (si habilita -gh Switch en build.dev.cfg ).
Debe implementar solo binario ejecutable y cualquier archivo de soporte, como plantillas HTML, imágenes, hojas de estilo CSS, configuración de aplicaciones. Cualquier archivo pas o inc o scripts de shell no es necesario en la máquina de implementación para que la aplicación se ejecute.
Entonces, para este repositorio, deberá copiar directorios public , Templates , config y storages a su máquina de implementación. Asegúrese de que el directorio storages sea WRITITY en Web Server.
Al ejecutar el script build.sh , puede encontrar después de la advertencia:
/usr/bin/ld: warning: public/link.res contains output sections; did you forget -T?
Este es un problema conocido entre Pascal gratuito y enlazador GNU. Vea las preguntas frecuentes: Error de sintaxis Link.res, o "¿Olvidaste -t?"
Sin embargo, esta advertencia es menor y puede ser ignorada. No afecta el ejecutable de salida.
En algún momento, Pascal gratuito no puede compilar su código porque, por ejemplo, eliminó un código fuente de la unidad (.pas) pero una unidad generada antigua (.ppu, .o, .a archivos) todavía allí o cuando cambia entre ramas GIT. La solución es eliminar esos archivos.
Por defecto, las unidades compiladas generadas se encuentran en el directorio bin/unit . Pero no elimine el archivo README.md dentro de este directorio, ya que Git no lo ignora.
$ rm bin/unit/*.ppu
$ rm bin/unit/*.o
$ rm bin/unit/*.rsj
$ rm bin/unit/*.a
El siguiente comando shell eliminará todos los archivos dentro del directorio bin/unit excepto el archivo README.md .
$ find bin/unit ! -name 'README.md' -type f -exec rm -f {} +
Se proporciona el script tools/clean.sh para simplificar esta tarea.
Free Pascal admite Windows como sistema operativo objetivo, sin embargo, este repositorio aún no se prueba en Windows. Para apuntar a Windows, en build.cfg reemplazar el interruptor del compilador -Tlinux con -Twin64 y la línea de incommento #-WC para convertirse en -WC .
Si bien puede usar Lazarus IDE, no es una herramienta obligatoria. Cualquier editor de texto para la edición de código (Atom, Visual Studio Code, Sublime, VIM, etc.) debería ser suficiente.