forked from nbproject/nbproject
-
Notifications
You must be signed in to change notification settings - Fork 0
/
INSTALL
122 lines (109 loc) · 7.5 KB
/
INSTALL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Installation Procedure:
Note: This assumes that you've downloaded the project from git (for instance from https://github.com/nbproject/nbproject ) and that you copied it in a directory that the user running the server (e.g www-data) can access.
1- Dependencies:
On a typical debian-like (ubuntu etc...) distribution, NB requires the following base packages:
NOTE: - packages in square brackets are optional)
- core ubuntu dependencies can be installed by running 'sudo make prereqs'
***CORE DEPENDENCIES that can be installed as ubuntu packages***
python (>= 2.6)
postgresql (>= 8.4)
imagemagick
python-pypdf
mupdf-tools (for pdfdraw)
context (for rich, i.e. annotated pdf generation)
python-numpy
apache2
python-psycopg2
libapache2-mod-wsgi
python-openid (>= 2.2.0)
python-xlwt (used to generate downloadable stats spreadsheet)
python-setuptools (used for 'easy_install pytz' in make prereqs as well)
g++ (used to compile node)
python-pip (used to install google python library).
nodejs
npm
nodejs-legacy (in order to use executable name node instead of nodejs)
***MANUAL INSTALL PACKAGES***
You now need to install packages that might not be part of ubuntu (at least in the required version):
django (>=1.5): download and follow instructions from https://www.djangoproject.com/download/
python-django-openid-auth (for OpenId authentication)
- Note about django_openid_auth: We've tested w/ the version downloadable from launchpad.net (0.4 or 0.5), not w/ the ubuntu package:
- Download the tarball from https://launchpad.net/django-openid-auth
- Untar and
sudo python setup.py install
- django_facebook_oath, for example from this github fork: https://github.com/sachazyto/django_facebook_oauth
- download the zip and unzip
sudo python setup.py install
- grunt:
# As of November 2013 we have been using grunt 0.4.X, but it should still work w/ grunt 0.3.X
# If questions on getting NB to work w/ grunt 0.3.X, plrease refer
# to http://gruntjs.com/upgrading-from-0.3-to-0.4, and follow the procedure in the opposite way.
npm install grunt
npm install -g grunt-cli
npm install -g grunt-init
npm install grunt-contrib-jshint --save-dev
npm install grunt-contrib-concat --save-dev
npm install grunt-contrib-cssmin --save-dev
[optional] To annotate YouTube Videos: The google python library.
sudo pip install --upgrade google-api-python-client
2- Installation commands:
Once you've satisfied the dependencies listed above, you need to run the following installation commands:
cd nbproject #(or whatever name you may have choosen for the root NB code directory).
sudo npm install #in order to install specific grunt modules, such as grunt-css, execSync
make django #create configuration files. You can safely ignore the "Error 127" message
#[edit values in apps/nbsite/settings_credentials.py, following the direction there]
sudo make create_dirs #create root folder and some folders below that for nb data
make django #one more time...
#[If you're deploying a production environmant, use the cmds given in output in order to configure apache]
#[then configure the cron jobs (cf 5)]
grunt #Compiles js and css.
#[optional]: If you want to use different slave servers for different parts of the app (i.e. one for serving images, one for handling the rpc calls, and one for handling file uploads for instance), edit params in content/ui/admin/conf.js: Tell which server(s) the client should use to fetch various pieces data. If you're going to use just one server for the whole app, you can safely ignore this. Note that this is unrelated to whether or not you're using localhost as your databse server, but if you do use several server, make sure they all use the same database, for consistency. Don't forget to re-run 'grunt' if you change conf.js
3- Database Initialization:
* Log in as someone who has postgres create role and create database privileges, such as postgres (one way is to do 'su' and then 'su postgres')
* createuser nbadmin -P #important to setup as superuser since only superusers can create a language (used for plpythonu)
* Back to the regular user:
* createdb -U <YOUR_POSTGRES_USER> -h localhost <YOUR_NB_DATABASE_NAME>
* cd apps
* ./manage.py syncdb #to actually create the tables.
* ./manage.py sqlcustom base | ./manage.py dbshell #to create custom views
*
* You may also have to allow remote connections
* sudo nano /etc/postgresql/[YOUR_VERSION]/main/pg_hba.conf
o host your_db_name your_db_user 127.0.0.1/0 password
* sudo nano /etc/postgresql/[YOUR_VERSION]/main/postgresql.conf
listen_addresses = '*'
* if you make a mistake:
o dropdb -U nbadmin -h localhost notabene
o createdb -U nbadmin -h localhost notabene
At this point you can try your installation using the Django debug server (but never use this in production...):
- From the apps directory: ./manage.py runserver
- In your browser visit http//localhost:8000
4- Extra stuff
- To be able to genereate annotated pdfs: Configure tex so that it allows mpost commands: make sure that 'mpost' is in shell_escape_commands (cf /tex/texmf/texmg.cnf)
5- Crontab setup
A sample crontab generated as part of the 'make django'. You just need to add it to your crontab for it to take effect
6- Backup
- Database: use the pg_dump command, for instance, if NB was installed on host example.com, that the DB belonged to postgres used nbuser, and that the DB was called notabene, you'd use the following:
-pg_dump -U nbuser -h example.com -Fc notabene > nb.backup.YYYYMMDD
- uploaded PDF files: Use your favorite file backup technique (tar, rdiff-backup, unison etc...) to backup the directory:
"%s%s" % (settings.HTTPD_MEDIA,settings.REPOSITORY_DIR) (cf your settings.py files for actual values).
7- Restore (change localhost to your server name if it's not on loacalhost)
dropdb -U nbadmin -h localhost notabene
createdb -U nbadmin -h localhost notabene
pg_restore -U nbadmin -h localhost -d nb3 YOUR_NB_BACKUP_FILE
8- [Advanced] Updating the code base: What is a bit delicate is that database structure may change: You need to add the missing fields manually, as described at http://www.djangobook.com/en/2.0/chapter10.html#making-changes-to-a-database-schema
###IMPORTANT###: Make a database backup (cf. step 6) so you can revert to the previous state if you encounter a problem.
git fetch
git diff master origin master apps/base/models.py
#for each difference, add the corresponding field in the database.
#once everything is added:
git merge
apachectl restart
grunt
Note: if you encounter a problem, and would like to restore things as they were before you updated the code and the database:
restore your database (cf 7)
revert to the version of the code you were at: git reset --hard HEAD@{1}
apachectl restart
grunt
Questions (including how to install NB on other linux distributions): Use our forum at http://nbproject.vanillaforums.com/ more specifically, the deployers section: http://nbproject.vanillaforums.com/categories/deployers
Contact: [email protected] (NOTE: You'll likely get a much faster reply if you use the forum above).