README.md 4.83 KB
Newer Older
1
2
3
# Go (URL Shortener) [![build status](https://git.gmu.edu/srct/go/badges/master/build.svg)](https://git.gmu.edu/srct/go/commits/master) [![coverage report](https://git.gmu.edu/srct/go/badges/master/coverage.svg)](https://git.gmu.edu/srct/go/commits/master)


Jean Michel Rouly's avatar
Jean Michel Rouly committed
4

David Haynes's avatar
David Haynes committed
5
A project of [GMU SRCT](http://srct.gmu.edu).
Jean Michel Rouly's avatar
Jean Michel Rouly committed
6

7
8
9
10
Go is a drop-in URL shortening service. It aims to provide an easily
branded service for institutions that wish to widely disseminate
information without unnecessarily outsourcing branding.

David Haynes's avatar
David Haynes committed
11
I encourage you to join the #go channel in SRCT's [Slack Group](http://srct.slack.com) if you have any questions on setup or would like to contribute.
David Haynes's avatar
David Haynes committed
12

David Haynes's avatar
David Haynes committed
13
## Package Installation
David Haynes's avatar
David Haynes committed
14
<legend></legend>
15
### Prerequisities
David Haynes's avatar
David Haynes committed
16
First, install python and git on your system.
17
18
19
20
21
22
23
24
25
26
27
* Python is the programming language used for Django, the web framework used by Go.
* Git is the version control system used for SRCT projects.

Open a terminal and run the following command:

`$ sudo apt-get update`

This retrieves links to the most up-to-date and secure versions of your packages.

Next, with:

28
`$ sudo apt-get install python python-dev python-pip git`
29
30
31

you install python and git.

Zosman's avatar
Zosman committed
32
**MacOS**
Zosman's avatar
Zosman committed
33

Zosman's avatar
Zosman committed
34
35
36
Open terminal and run the following command:

If you have Homebrew installed skip the following command
Zosman's avatar
Zosman committed
37

Zosman's avatar
Zosman committed
38
`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
Zosman's avatar
Zosman committed
39

Zosman's avatar
Zosman committed
40
41
42
This installs Homebrew on your Mac

Next run the command:
Zosman's avatar
Zosman committed
43

Zosman's avatar
Zosman committed
44
`brew update`
Zosman's avatar
Zosman committed
45

Zosman's avatar
Zosman committed
46
47
48
This updates Homebrew

Next we install python and git with:
Zosman's avatar
Zosman committed
49

Zosman's avatar
Zosman committed
50
51
`brew install python git`

52
53
### Cloning the Go Codebase
Now, we're going to clone down a copy of the Go codebase from [git.gmu.edu](http://git.gmu.edu/srct/go), the SRCT code respository.
54

David Haynes's avatar
David Haynes committed
55
Configure your ssh keys by following the directions at [git.gmu.edu/help/ssh/README](http://git.gmu.edu/help/ssh/README).
56
57
58
59
60

Now, on your computer, navigate to the directory in which you want to download the project (perhaps one called development/ or something similar), and run

`$ git clone git@git.gmu.edu:srct/go.git`

61
62

### Required Packages
63
Finally, install these packages from the standard repositories:
David Haynes's avatar
David Haynes committed
64
65
66
 - VirtualBox

    `$ sudo apt-get install virtualbox`
67

Zosman's avatar
Zosman committed
68

69
    You should be installing the latest virtualbox version which as of time of writing is `5.0.24_Ubuntur108355`. You can verify the version number by running `vboxmanage --version`.
David Haynes's avatar
David Haynes committed
70
71
72
 - Vagrant

    `$ sudo apt-get install vagrant`
73
74

    You should be installing the latest vagrant version which as of time of writing is `Vagrant 1.8.1`. You can verify the version number by running `vagrant -v`.
David Haynes's avatar
David Haynes committed
75
76
 - Ansible

77
78
79
    `$ sudo pip install ansible`

    You should be installing the latest ansible version which as of time of writing is `ansible 2.1.1.0`. You can verify the version number by running `ansible --version`.
Zosman's avatar
Zosman committed
80
81
    **MacOS**
    Install virtual box at
Zosman's avatar
Zosman committed
82

Zosman's avatar
Zosman committed
83
84
85
    [VirtualBox.org](https://www.virtualbox.org/wiki/Downloads)

    Then install Vagrant and Ansible with Homebrew with the following command:
Zosman's avatar
Zosman committed
86
    
Zosman's avatar
Zosman committed
87
    `brew install Vagrant Ansible`
88
89

## Developing with Vagrant
David Haynes's avatar
David Haynes committed
90
91
92
93
94
95
96
97
98
<legend></legend>
Vagrant allows for the virtualization of your development enviornment and automates the setup process for Go.

### Vagrant Setup
Navigate to go/ and run:

`$ vagrant up`

This will setup a vm to run Go on your computer and will setup a database, install packages, etc. The first time you run `vagrant up` it may take a few minutes to setup, specifically when installing Go packages. Don't worry as progressive times it will speed up.
99

Zosman's avatar
Zosman committed
100
And that's it! Navigate to [localhost:8000](http://127.0.0.1:8000) in your web browser to view the website.
David Haynes's avatar
David Haynes committed
101

102
### Additional Notes & Troubleshooting
David Haynes's avatar
David Haynes committed
103

David Haynes's avatar
David Haynes committed
104
105
106
107
The authentication service used for Go is CAS. In local development however we utilize a test server. You can log in using your CAS username for both the username and password fields.

 The default superuser is _dhaynes3_ though this can be changed in _vagrantfile_ if you wish. You can run `$ vagrant provision` to apply this change. Be sure not to include that change in your commits.

108
*Note:* For a currently undetermined reason at some points if you try to navigate to [localhost](http://127.0.0.1:8000) and you see an error like: "Conenction has been reset" then:
David Haynes's avatar
David Haynes committed
109
110
111
1. `vagrant ssh`
2. `sudo /etc/init.d/networking restart` and then `exit`
3. `vagrant provision` (may need to do twice)
David Haynes's avatar
David Haynes committed
112

David Haynes's avatar
David Haynes committed
113
114
115
This is the only temporary fix that we know exists.

If you make any changes to _models.py_ you will need to re-provision the vm's database:
David Haynes's avatar
David Haynes committed
116
117
118

`$ vagrant provision`

David Haynes's avatar
David Haynes committed
119
Please note that this will refresh the database (as in delete everything in it).
David Haynes's avatar
David Haynes committed
120
121


122
123
124
125
126
127
128
### Cron

In order to expire links, you need to set up a cron job to run the manage.py
expirelinks command regularly. A sample cron script is available in the
repository and is named go-cleanlinks.cron. Drop this in cron.hourly and
change the paths so that they point to the virtualenv activate script and
manage.py.
David Haynes's avatar
David Haynes committed
129
130
131


### Note
132
Link by Viktor Vorobyev from the Noun Project.