North Rose Devs website: Difference between revisions

From Littledamien Wiki
Jump to navigation Jump to search
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Project Documentation]] [[Category:AngularJS]] [[Category:Symfony]] [[Category:PHP]] [[Category:Python]] [[Category:Django]] [[Category:Web Development]]
[[Category: North Rose Web App]][[Category:Project Documentation]] [[Category:AngularJS]] [[Category:Symfony]] [[Category:PHP]] [[Category:Python]] [[Category:Django]] [[Category:Web Development]]
== Overview ==
== Overview ==


Line 12: Line 12:
== Deployment ==
== Deployment ==


One goal should be to include all packages installed via `npm`. Make sure to ''always'' install packages with the `--save-dev` option so they can be installed in all environments.
See [[Deploying a Django app on AWS]]
 
E.g. Twitter Bootstrap, Foundation, AngularJS can all be installed with `npm`.
 
TODO: `npm` requires its own article. Document how to maintain project dependencies. How to treat the `node_modules` directory. Also, how `bower` with its `bower_components` directory factors in. (`bower` is invoked by `npm` when installing AngularJS.)


=== Local development platform ===
=== Local development platform ===
Line 30: Line 26:
* Push to GitHub: `git push origin master`
* Push to GitHub: `git push origin master`


==== Running the app ====
==== Running the app locally ====


* Run the project in PyCharm (`python manage.py runserver 127.0.0.1:8000`)
1. Make sure the the virtual environment for the project is loaded.
* Connect to the site in a browser: http://127.0.0.1:8000
 
<pre>
$ source ./venv/bin/activate
</pre>
 
2. Make sure `localhost` is listed under `ALLOWED_HOSTS` in `settings.py`.
 
''(And make sure that that `localhost` is NOT listed under `ALLOWED_HOSTS` in the production environment.)''
 
3. Run the project in PyCharm (`python manage.py runserver 127.0.0.1:8000`)
 
4. Connect to the site in a browser: http://localhost:8000 or http://127.0.0.1:8000


==== Syncing between machines ====
==== Syncing between machines ====
Line 45: Line 52:
=== Production ===
=== Production ===


TK
See [[Deploying a Django app on AWS]].
 
Make sure to register all relevant environment variables in the environment. This needs to be done on an `eb create` type event (NOT after updating the environment with `eb deploy`).
 
Some global variables are defined in the local `.ebextensions/02-python.config` file. Variables holding sensitive information have their names registered via `.ebextensions` without the associated values. Other more sensitive variables are left out entirely.


== Technologies ==
== Technologies ==
Line 83: Line 94:


* [[:Category:PostgreSQL|PostgreSQL]]
* [[:Category:PostgreSQL|PostgreSQL]]
* Local development database is located on `littledamienii`
* <strike>Local development database is located on `littledamienii`</strike>
* Local development database is located on the same individual machines running development web servers.
* Consider moving PostgreSQL database to shared servers (e.g. DS916) if feasible


=== Version control ===
=== Version control ===


[https://github.com/dbarchowsky/northrose North Rose on GitHub]
[https://github.com/dbarchowsky/north-rose North Rose on GitHub]


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git remote add origin https://github.com/dbarchowsky/northrose.git
$ git remote add origin https://github.com/dbarchowsky/north-rose.git
$ git push origin master  
$ git push origin master  
</syntaxhighlight>
</syntaxhighlight>
=== Hosting ===
==== Amazon AWS ====
* Elastic Beanstalk - Web server processes and environment
* Amazon RDS - PostgreSQL database
* Amazon S3 - file system storage
== Notes ==
=== See also ===
* [[Updating North Rose Content]]
* [[NorthRose Invoicing Web App]]
=== References ===
<references />

Latest revision as of 16:14, 29 November 2020

Overview[edit]

Documentation of the configuration and technologies of the North Rose website.

Goals[edit]

  • Host the site on AWS.
  • A portfolio of web development work built with python/Django.
  • An invoicing system. Currently this is built with Symfony, but ultimately it should be integrated with the rest of the site, restricted to admin-level access.

Deployment[edit]

See Deploying a Django app on AWS

Local development platform[edit]

Getting the latest code[edit]

  • Always do: git pull origin master before working.
  • Create branch locally: git co -b feature/T0###]
  • Commit changes after they are finished.
  • Merge with master:
    • git co master
    • git merge feature/T0###
  • Push to GitHub: git push origin master

Running the app locally[edit]

1. Make sure the the virtual environment for the project is loaded.

$ source ./venv/bin/activate

2. Make sure localhost is listed under ALLOWED_HOSTS in settings.py.

(And make sure that that localhost is NOT listed under ALLOWED_HOSTS in the production environment.)

3. Run the project in PyCharm (python manage.py runserver 127.0.0.1:8000)

4. Connect to the site in a browser: http://localhost:8000 or http://127.0.0.1:8000

Syncing between machines[edit]

See Wiki on Sharing Git Branches on Different Workstations

Staging[edit]

TK

Production[edit]

See Deploying a Django app on AWS.

Make sure to register all relevant environment variables in the environment. This needs to be done on an eb create type event (NOT after updating the environment with eb deploy).

Some global variables are defined in the local .ebextensions/02-python.config file. Variables holding sensitive information have their names registered via .ebextensions without the associated values. Other more sensitive variables are left out entirely.

Technologies[edit]

Platforms & packages[edit]

Python[edit]

  • python 3
  • TODO: determine the exact minimum version. I think it's 3.4.x at this point.

Django[edit]

  • Minimum version: 1.8.7
Grappelli[edit]
  • Minimum version: 2.7.2
  • Upgrade with pip install -U django-grappelli

Custom package dependencies[edit]

  • Contact Info
    • Package that manages individual people's contact information.
    • This is a stand-alone PyCharm project that can be added to other applications-level projects.
    • e.g. [DEV_ROOT]\django\django-contact-info

Development platforms[edit]

IDE[edit]

  • PyCharm

Database[edit]

  • PostgreSQL
  • Local development database is located on littledamienii
  • Local development database is located on the same individual machines running development web servers.
  • Consider moving PostgreSQL database to shared servers (e.g. DS916) if feasible

Version control[edit]

North Rose on GitHub

$ git remote add origin https://github.com/dbarchowsky/north-rose.git
$ git push origin master

Hosting[edit]

Amazon AWS[edit]

  • Elastic Beanstalk - Web server processes and environment
  • Amazon RDS - PostgreSQL database
  • Amazon S3 - file system storage

Notes[edit]

See also[edit]

References[edit]