Damien Accorsi fb6389f283 Initial commit | 10 年之前 | |
---|---|---|
bin | 10 年之前 | |
doc | 10 年之前 | |
install | 10 年之前 | |
pod | 10 年之前 | |
.gitignore | 10 年之前 | |
.hgignore | 10 年之前 | |
README.md | 10 年之前 |
Pod is collaborative software designed to allow people to work on and share various data and document types.
It is AGPL licenced software.
Pod is licensed under the terms of the GNU Affero General Public License as published by the Free Software Foundation.
It is currently unstable, it is recommended to use it for test purpose only.
It's a python 3 web application based on TurboGears; it uses PostgreSQL as storage engine.
It allows to keep private and shared data in the same place. The ACL is based on share with groups or individual users.
The fastest way to test it is to test the demo:
The other way to test it is to install it on your computer. See documentation below.
Note: the following information is for Debian. For other OS, adapt the package names.
You'll need to install the following packages:
apt-get install realpath python3 python-virtualenv python3-dev python-pip build-essential postgresql-server-dev-all
If you work on a local database, then you also need to install PostgreSQL:
apt-get install postgresql postgresql-client
Get the sources from Bitbucket:
git clone https://bitbucket.org/lebouquetin/pod.git
Note: Now everything is documented to be executed from the pod directory newly created.
Check the pg_hba.conf file, it should allow connection for user/pass through loopback IP address. The file should include the following configuration:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Note: on Debian, the pg_hba file is found at /etc/postgresql/9.1/main/pg_hba.conf
If you changed the file, reload PostgreSQL:
service postgresql reload
We suppose you will create a user named poduser with passowrd podpassword and a database poddb
First login as root, then su as postgre and run a PostgreSQL client:
root@hostname:~# su postgres
postgres@hostname:/root$ psql
psql (9.1.13)
Type "help" for help.
postgres=#
Now, type the following commands:
CREATE ROLE poduser WITH LOGIN PASSWORD 'podpassword';
CREATE DATABASE poddb OWNER poduser;
GRANT ALL PRIVILEGES ON DATABASE poddb TO poduser;
At the end, you can quit the psql client by running the \q quit command:
postgres=# \q
postgres@mozart:/root$
You can test your newly created user by running the following command:
psql -h 127.0.0.1 -W -U poduser poddb -c 'SELECT NOW();'
The result should be similar to:
user@hostname:~$ psql -h 127.0.0.1 -W -U poduser poddb -c 'SELECT NOW();'
Password for user poduser:
now
-------------------------------
2014-06-16 11:35:48.590838+02
(1 row)
Your database is now ready. Fill it with the required schema and data by importing SQL:
psql -h 127.0.0.1 -W -U poduser poddb < doc/database/pod-init-database.sql
You can test it through the following command:
user@hostname:~$ psql -h 127.0.0.1 -W -U poduser poddb -c 'SELECT * from pod_user;'
You should find the admin@localhost user entry.
Pod uses virtualenv as deployment environment. This ensure that there will be no conflict between system-wide python modules and pod required ones.
virtualenv -p /usr/bin/python3 tg2env
source tg2env/bin/activate
cd pod && python setup.py develop && cd -
pip install -r install/requirements.txt
Notes:
cp pod/development.ini.base pod/development.ini
Configure database in the development.ini file. This is defined as sqlalchemy.url and the default value is below:
sqlalchemy.url = postgresql://pod_user:pod_user_password@127.0.0.1:5432/pod
Now you can run the standalone server:
./bin/run.sh
Which should result in something like this:
13:53:49,982 INFO [gearbox] Starting subprocess with file monitor
13:53:50,646 WARNI [py.warnings] /tmp/pod/protov1/tg2env/lib/python3.2/site-packages/tw2/core/validation.py:12: ImportWarning: Not importing directory '/tmp/pod/protov1/tg2env/lib/python3.2/site-packages/tw2/core/i18n': missing __init__.py
from .i18n import _
13:53:50,862 INFO [gearbox] Starting server in PID 11174.
Starting HTTP server on http://0.0.0.0:8080
You can now enter the application at http://localhost:8080 and login:
Enjoy :)
Install dependencies:
apt-get install apache2 libapache2-mod-wsgi-py3
Example of Apache WSGI configuration. This configuration refers to productionapp.wsgi which is a copy of the file app.wsgi available in the repo. (this file has to be updated to match with your environment and installation)
<VirtualHost *:80>
ServerAdmin webmaster@archipeldata.com
ServerName demo.archipeldata.com
WSGIProcessGroup pod
WSGIDaemonProcess pod user=www-data group=adm threads=4 python-path=/opt/podinstall/tg2env/lib/python3.2/site-packages
WSGIScriptAlias / /opt/podinstall/pod/productionapp.wsgi
#Serve static files directly without TurboGears
Alias /img /opt/podinstall/pod/pod/public/img/
Alias /favicon.ico /opt/podinstall/pod/pod/public/favicon.ico
Alias /css /opt/podinstall/pod/pod/public/css
Alias /javascript /opt/podinstall/pod/pod/public/javascript
CustomLog /var/log/apache2/demopod-access.log combined
ErrorLog /var/log/apache2/demopod-error.log
LogLevel debug
</VirtualHost>
If you need help, contact us. If you want to help, contact us. So... contact us ;)
Damien Accorsi - damien.accorsi@free.fr