Esqueleto de aplicativo da web usando a estrutura FANO, estrutura de aplicativos da web Pascal. Veja o tutorial em vídeo.
Verifique se o pacote libcurl para desenvolvimento está instalado executando curl-config .
$ curl-config --version
Se Libcurl instalado, você obterá algo como libcurl x.xx.x onde x.xx.x é versão. Por exemplo, libcurl 7.47.0 caso contrário você obtém
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>
No caso de Libcurl não instalado, execute
$ sudo apt install libcurl4-gnutls-dev
Verifique se o Pascal gratuito está instalado. Correr
$ fpc -i
Se você vir algo como Free Pascal Compiler version 3.0.4 , está pronto para ir.
Clone este repositório
$ git clone [email protected]:fanoframework/fano-app.git --recursive
--recursive é necessária para que o Git também puxe o repositório Fano.
Se você está perdendo --recursive ao clonar, pode achar que o diretório fano está vazio. Neste caso, execute
$ git submodule update --init
Para atualizar o Fano para o seu mais recente compromisso, execute
$ git checkout master && git submodule foreach --recursive git pull origin master
O comando acima vai check -out para a filial master deste repositório e puxará a atualização mais recente do master Branch of Fano Repository.
Cópia *.cfg.sample para *.cfg . Faça ajuste conforme necessário no build.cfg , build.prod.cfg , build.dev.cfg e Run build.sh shell Script (se você estiver no Windows, então build.cmd ).
Esses arquivos *.cfg contêm alguns comutadores gratuitos do compilador Pascal que você pode ligar/desligar para alterar como o executável é compilado e gerado. Para uma explicação completa sobre os interruptores do compilador disponível, consulte a documentação Pascal gratuita.
Copie também app/config/config.json.sample para app/config/config.json e edite a configuração conforme necessário. Por exemplo, pode ser necessário alterar baseUrl para corresponder ao seu próprio URL base para que o JavaScript ou as folhas de estilo CSS aponte para corrigir o 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 são fornecidas para simplificar a cópia desses arquivos de configuração. O comando shell a seguir é semelhante ao comando acima.
$ ./tools/config.setup.sh
$ ./build.sh
Por padrão, ele produzirá executável binário no diretório public .
Para construir para diferentes ambiente, defina a variável de ambiente BUILD_TYPE .
$ BUILD_TYPE=prod ./build.sh
O processo de construção usará a configuração do compilador definida em fano/fano.cfg , build.cfg e build.prod.cfg . Por padrão, build.prod.cfg contém alguns comutadores do compilador que otimizarão agressivamente executáveis tanto em velocidade quanto em tamanho.
$ BUILD_TYPE=dev ./build.sh
O processo de construção usará a configuração do compilador definida em fano/fano.cfg , build.cfg e build.dev.cfg .
Se a variável de ambiente BUILD_TYPE não estiver definida, o ambiente de produção será assumido.
A compilação produzirá executável para o diretório definido na variável de ambiente EXEC_OUTPUT_DIR . Por padrão, é um diretório public .
$ EXEC_OUTPUT_DIR=/path/to/public/dir ./build.sh
A compilação usará o nome do arquivo executável, conforme definido na variável de ambiente EXEC_OUTPUT_NAME . Por padrão, é o nome app.cgi .
$ EXEC_OUTPUT_NAME=index.cgi ./build.sh
Configure um host virtual. Consulte a documentação do servidor da web que você usa.
Por exemplo no 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>
No Apache, você precisará ativar o módulo CGI, como mod_cgi ou mod_cgid . Se o módulo CGI não carregado, o host virtual acima causará app.cgi for baixado em vez de executado.
Por exemplo, no Debian, isso ativará o módulo mod_cgi .
$ sudo a2enmod cgi
$ sudo systemctl restart apache2
Dependendo da configuração do seu servidor, por exemplo, se você usar .htaccess , adicione o seguinte código:
DirectoryIndex app.cgi
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.cgi [L]
</IfModule>
e put .htaccess File no mesmo diretório que o arquivo app.cgi (ou seja, no diretório app/public ).
O conteúdo do .htaccess basicamente diz ao Apache para atender diretamente arquivos/diretórios existentes. Para quaisquer arquivos/diretórios inexistentes, passe-os para o nosso aplicativo.
$ cd app/public
$ REQUEST_METHOD=GET
REQUEST_URI=/test/test
SERVER_NAME=juhara.com
./app.cgi
tools/simulate.run.sh é script bash que pode ser usado para simplificar a simulação de execução de execução no shell.
$ ./tools/simulate.run.sh
ou para alterar a rota para acessar, defina a variável REQUEST_URI .
$ REQUEST_URI=/test/test ./simulate.run.sh
Isso é semelhante a simular o navegador solicitando esta página, por exemplo,
$ wget -O- http://[your fano app hostname]/test/test
No entanto, a execução usando tools/simulate.run.sh permite visualizar a saída da unidade heaptrc para detectar vazamento de memória (se você ativar -gh switch in build.dev.cfg ).
Você precisa implantar apenas binários executáveis e quaisquer arquivos de suporte, como modelos HTML, imagens, folhas de estilo CSS, configuração de aplicativos. Quaisquer arquivos pas ou inc ou scripts shell não são necessários na máquina de implantação para executar o aplicativo para executar.
Portanto, para este repositório, você precisará copiar os diretórios public , Templates , config e storages para sua máquina de implantação. Verifique se o diretório storages é gravável pelo servidor da web.
Ao executar o script build.sh , você pode encontrar um aviso após o aviso:
/usr/bin/ld: warning: public/link.res contains output sections; did you forget -T?
Esta é a questão conhecida entre o Pascal Free e o Linker GNU. Veja FAQ: Link.Res Sintaxe Erro ou "Você esqueceu -t?"
No entanto, esse aviso é menor e pode ser ignorado. Não afeta a saída executável.
Em algum momento, o Pascal gratuito não pode compilar seu código porque, por exemplo, você excluiu um código -fonte da unidade (.PAs), mas a unidade antiga gerada (.ppu, .o, .a arquivos) ainda está lá ou quando você alterna entre as ramificações Git. Solução é remover esses arquivos.
Por padrão, as unidades compiladas geradas estão no diretório de bin/unit . Mas não exclua o arquivo README.md dentro deste diretório, pois não está sendo ignorado pelo Git.
$ rm bin/unit/*.ppu
$ rm bin/unit/*.o
$ rm bin/unit/*.rsj
$ rm bin/unit/*.a
O comando shell a seguir removerá todos os arquivos dentro do diretório bin/unit exceto o arquivo README.md .
$ find bin/unit ! -name 'README.md' -type f -exec rm -f {} +
Script tools/clean.sh é fornecido para simplificar esta tarefa.
O Pascal gratuito suporta o Windows como sistema operacional de destino, no entanto, esse repositório ainda não foi testado no Windows. Para segmentar o Windows, no build.cfg Substitua o comutador do compilador -Tlinux com -Twin64 e a linha de descomposição #-WC para se tornar -WC .
Embora você possa usar o Lazarus IDE, não é uma ferramenta obrigatória. Qualquer editor de texto para edição de código (Atom, Código do Visual Studio, sublime, Vim etc) deve ser suficiente.