Скелет веб -приложений с использованием Fano Framework, Pascal Web Application Framework. Просмотреть видеоурок.
Проверьте, является ли Libcurl Package для разработки с помощью 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 до последнего коммита, запустите
$ git checkout master && git submodule foreach --recursive git pull origin master
Приведенная выше команда будет оказаться в главной области в master ветви этого репозитория и вытащить последнее обновление из master ветви репозитория FANO.
Копировать *.cfg.sample to *.cfg . Сделайте корректировку, как вам нужно в build.cfg , build.prod.cfg , build.dev.cfg и запустите скрипт оболочки build.sh (если вы находитесь в Windows, то build.cmd ).
Эти *.cfg -файлы содержат некоторые бесплатные компиляторы Pascal, которые вы можете включить/выключить, чтобы изменить то, как исполняется и генерируется. Для получения полного объяснения доступных компилятора компилятора обратитесь к бесплатной документации Pascal.
Также скопируйте app/config/config.json.sample to app/config/config.json и редактировать конфигурацию по мере необходимости. Например, вам может потребоваться сменить baseUrl , чтобы соответствовать вашему собственному базовому URL, чтобы javaScript или CSS -таблицы указывают на исправление 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 предоставляется для упрощения копирования этих файлов конфигурации. Следующая команда оболочки аналогична команде выше.
$ ./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 Filename.
$ 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 Directory).
Содержание .htaccess в основном говорит Apache непосредственно обслуживать существующие файлы/каталоги. Для любых несуществующих файлов/каталогов передайте их в наше приложение.
$ cd app/public
$ REQUEST_METHOD=GET
REQUEST_URI=/test/test
SERVER_NAME=juhara.com
./app.cgi
tools/simulate.run.sh - это скрипт Bash, который можно использовать для упрощения моделирования приложения Run в оболочке.
$ ./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?
Это известная проблема между свободным паскалем и гну линкером. См. FAQ: Link.res Syntax Error, или «Вы забыли -t?»
Однако это предупреждение незначительно и может быть проигнорировано. Это не влияет на исполняемый результат.
Иногда бесплатный Pascal не может скомпилировать ваш код, потому что, например, вы удалили исходный код модуля (.pas), но старый сгенерированный блок (.ppu, .o, файлы .a) все еще там или когда вы переключаетесь между ветвями GIT. Решение состоит в том, чтобы удалить эти файлы.
По умолчанию сгенерированные компилированные единицы находятся в каталоге 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 предоставляется для упрощения этой задачи.
Бесплатный Pascal поддерживает Windows в качестве целевой операционной системы, однако этот репозиторий еще не протестирован в Windows. Чтобы нацелиться на Windows, в build.cfg замените компилятор -компилятор -Tlinux на -Twin64 и нельзя #-WC , чтобы стать -WC .
Хотя вы можете использовать Lazarus IDE, это не обязательный инструмент. Должно быть достаточно любого текстового редактора для редактирования кода (Atom, Visual Studio Code, Sublime, VIM и т. Д.).