This is a repository for useful information for programmers who are new to CSCF.
Overview
Welcome to CSCF. Here are some hints, tips, and guidelines.
First Day
After your supervisor hires you in Workday, you should be able to log on and fill out any required forms as indicated.
Also, complete the following training modules:
Basic Setup
Microsoft Teams
TWiki
This isn't necessary for development, but you'll need an account if you want to edit anything on TWiki, such as this page. Note that the Odyssey application documentation pages on TWiki aren't current.
- Create a TWiki account with the display name FirstnameLastname, and the actual login username as your Quest ID.
- If you're unable to edit CSCF pages, ask your supervisor to grant your account access.
Request Tracker
- Log in to RT with your Quest login information: https://rt.uwaterloo.ca/
- You should be able to see CSCF tickets in the queue list. If not, ask your supervisor to grant you access.
- Familiarize yourself with the RT documentation here
.
SSH Key
- Log in to GitLab with your Quest login information: https://git.uwaterloo.ca
- Click on your user icon and go to 'Settings'.
- In the left sidebar, click on 'SSH Keys' and follow the linked instructions on generating an SSH key (under 'Add an SSH key').
- On the same page, follow the instructions under 'Key' to add your public key. The key should then be visible at the bottom of the page.
- If you're working on odyssey, give your supervisor your public key so they can grant you access to the odyssey-test server.
SCS VPN
Connecting to the SCS VPN allows you to SSH into the testing server and view its deployments in the browser.
- Setup instructions can be found here: https://vpn.cs.uwaterloo.ca/
- If you're working on odyssey, and if your SSH connection request or browser connection to odyssey-test.uwaterloo.ca is timing out, check that you're connected to the VPN.
Linux Setup
Ubuntu 18.04 (LTS) should be mostly "good to go." However, for video services, we need to install ffmpeg packages.
$ sudo -s
[sudo] password for (user):
root@RSG-PC280:~# apt-get install ffmpeg
[ many packages are displayed]
After this operation, 179 MB of additional disk space will be used.
Do you want to continue? [Y/n]
[say 'y']
[...]
Additionally:
-
apt-get install openssh-server
- You should set up a firewall. A simple option is 'ufw':
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw allow from 129.97.0.0/16 to any port ssh
$ sudo ufw allow proto tcp from 129.97.0.0/16 to any port 80,443
$ sudo ufw allow proto tcp from 172.16.0.0/16 to any port 80,443
$ sudo ufw allow proto tcp from 10.0.0.0/8 to any port 80,443
$ sudo ufw logging on
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN 129.97.0.0/16
80,443/tcp ALLOW IN 129.97.0.0/16
80,443/tcp ALLOW IN 172.16.0.0/16
80,443/tcp ALLOW IN 10.0.0.0/8
$
Commands you should run above come after the '$' character, and is bold. The command output, not bold, should match as above. Any differences should be confirmed with your manager, as they might open connections from the wider internet.
The above commands set up a default deny (DROP) firewall for incoming connections, with all outbound connections allowed with state tracking. It adds
SSH connections from the wired campus public network, and web access to both HTTP and HTTPS from the three campus networks (public and the two private).
The rest of the Linux setup is broken into whether you're going to be principally working on PHP or python applications.
PHP
See
detailed notes about setting up Linux, Apache, MySQL, PHP, PHPMyAdmin, and a developer environment complete with debugging tools.
Python
If you're working on Odyssey, see
OdysseyCoopGuide .
For non-odyssey dev, the following ubuntu packages will be a good start for developing in Python. (TODO: update for python 3)
- Install git, psql, mysql, python-pip, sublime, phpmyadmin, phppgadmin, pyscopg2, python-memcache
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update && sudo apt-get install git postgresql phppgadmin mysql-server phpmyadmin python-pip python-psycopg2 python-memcache sublime-text-installer
- You will receive prompts to setup mysql root user and phpmyadmin server type (apache2) and admin user
- Install python modules django 1.6, tastypie, south, requests, yaml, django-cas, prettyTable, numpy
sudo pip install django==1.6 django-tastypie south pyyaml prettyTable numpy
hg clone https://bitbucket.org/cpcc/django-cas
cd django-cas && sudo python setup.py install
git clone https://github.com/joequery/requests-sslv3
cd requests-sslv3 && sudo python setup.py install
Mac Environment Setup
Start by installing a package manager.
Homebrew
is recommended, to install it run the following command:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
To install third-party libraries easily, install
pip
by running the following command:
curl https://bootstrap.pypa.io/get-pip.py | python
References
Chirag's TODO list:
- A good explanation of what MVC how it should be structured. A few good posts to reference:
Extras:
- explanation/guide how to set up pages to be viewable to others--very useful knowledge to be able to show clients the current progress of the software.
- Very brief section describing the network (i.e. what has access to the outside world, doesn't need to be detailed, but is helpful)
--
DanielAllen - 2015-01-30