bobintetley / asm3

Este programa é coberto pelos termos da GNU General Public Licence v3.Veja o arquivo LICENSE neste diretório para detalhes.

Dependencies

Se você estiver usando um sistema baseado em Debian (ex: Ubuntu), então o seguinte irá instalar todo o software que você precisa para rodar o ASM. Se você está usando o pacote debltermanager3, ele já tem dependências definidas para estes e irá instalá-las para você.

  • apt-get install make python3 python3-webpy python3-pil python3-mysqldb python3-psycopg2

Extra, pacotes não obrigatórios:

  • apt-get install python3-memcache memcached (para sessões multiprocessadas)
  • apt-get install imagemagick (para escalar/comprimir PDFs para guardar no armazenamento)
  • apt-get install wkhtmltopdf (para criar PDFs a partir de templates de documentos HTML)
  • apt-get install python3-xhtml2pdf (biblioteca Python pura para criar PDFs a partir de templates de documentos HTML)
  • apt-get install python3-reportlab (para criar PDFs de etiquetas de correio)
  • apt-get install python3-requests (necessário para HTTP comms para outros serviços de publicação)
  • apt-get install python3-boto3 (necessário para armazenamento de mídia Amazon S3)
  • pip/pip3 install stripe (para solicitar pagamentos via Stripe)

Packages necessários para a construção, verificadores estáticos, instaladores e manuais:

  • apt-get install exuberant-ctags nodejs npm pychecker python3-sphinxpython3-sphinx-rtd-theme texlive-latex-base texlive-latex-extra latexmk

Node e npm são usados para transpor código javascript para navegadores mais antigos e para imprimir arquivos javascript. Para instalar todas as dependências javascript em tempo de compilação, execute este comando na pasta source:

  • npm install

Se estiver usando Debian e quiser fazer desenvolvimento, você pode usar “make deps” como uma forma conveniente de instalar as dependências necessárias.

Debian python3-webpy

A versão do web.py atualmente empacotada no Debian Buster (e possivelmente Ubuntu)como python3-webpy tem uma falha. Ele não pode servir conteúdo estático e só funcionará se você implementar sua aplicação com mod_wsgi, uwsgi, etc.

Você pode corrigi-lo manualmente editando/usr/lib/python3/dist-packages/web/httpserver.py e adicionando o novo lineself.directory = os.getcwd() na linha 198 na parte inferior da initfunção, assim:

class StaticApp(SimpleHTTPRequestHandler): """WSGI application for serving static files.""" def __init__(self, environ, start_response): self.headers = self.environ = environ self.start_response = start_response self.directory = os.getcwd()

Você não precisa desta correção se você estiver implantando sua aplicação para rodar com oApache como recomendado, isto só se aplica a rodar um servidor autônomo viacode.py a partir da linha de comando.

Em um ambiente de desenvolvimento, você pode iniciar uma instância de teste na porta 5000 com:

make test

Logging

ASM logs para a facilidade Unix syslog USER (/var/log/user.log para a maioria das instalações)por padrão. Isso pode ser alterado na configuração.

Configurando o ASM

Se você usou o pacote debian, edite o arquivo /etc/asm3.conf

Se você não o fez, copie scripts/asm3.conf.example para /etc/asm3.conf e depois editá-lo.

Configure os seguintes valores:

asm3_dbtype = (POSTGRESQL, MYSQL or SQLITE)asm3_dbhost = (hostname of your server)asm3_dbport = (port of your server if using tcp)asm3_dbusername = asm3_dbpassword = asm3_dbname = (name of the database, can be file path if type is SQLITE)

Se você está usando MySQL ou POSTGRESQL, certifique-se de que você emitiu uma BASE DE DADOS CREATE e a base de dados já existe (entretanto o esquema pode estar vazio).

ASM procurará seu arquivo de configuração nesta ordem até encontrar um:

  1. Em uma variável de ambiente chamada ASM3_CONF
  2. Em $INSTALL_DIR/asm3.conf (a pasta asm3 módulos python estão instalados em)
  3. Em $HOME/.asm3.conf (o diretório home do usuário executando asm3)
  4. Em /etc/asm3.conf

Configurando o Apache/WSGI

Configurar o Apache para servir a aplicação.

O pacote Debian versão 44 tem a libapache2-mod-wsgi-py3 como uma dependência e instalará o Apache 2 se você ainda não o tiver disponível.

Para versões antigas, instale o Apache com:

apt-get install apache2 libapache2-mod-wsgi-py3

As da versão 44, o pacote também incluirá um arquivo site/etc/apache2/sites-available/asm3.conf com o seguinte conteúdo:

WSGIScriptAlias /asm3 /usr/lib/sheltermanager3/code.py/Alias /asm3/static /usr/lib/sheltermanager3/static<Directory /usr/lib/sheltermanager3> Require all granted</Directory>

Para versões antigas, você terá que criar este arquivo manualmente.

Apache está instalado e você tem o arquivo do site, para ativar o ASM, execute:

a2enmod wsgia2ensite asm3service apache2 restart

Você deve agora poder visitar o ASM em http://localhost/asm3

Criando o banco de dados padrão

Após o serviço ASM ter iniciado, visite http://localhost/asm3/base de dados para criar o esquema do banco de dados (pressionando apenas http://localhost/asm3 iráredite lá se nenhum banco de dados tiver sido configurado ainda).

Tarefas diárias

ASM tem um lote de rotinas que precisam ser executadas todos os dias. Estas devem ser executadas algumas horas antes das pessoas começarem a inserir dados para o dia.

Estas rotinas incluem o recálculo de dados desnormalizados, tais como a idade dos animais, o timeon shelter, a actualização da lista de espera e a publicação de dados externamente.

Para executá-los, certifique-se de que o ambiente está configurado como antes e execute o cron.py all

Veja o arquivo cron.py para mais informações sobre parâmetros de modo para executar tarefas específicas apenas.

O pacote Debian adiciona automaticamente as tarefas diárias ao /etc/cron.daily