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

  • Log in to Microsoft Teams at https://teams.microsoft.com/ using your userid@uwaterloo.ca account.
  • Make sure you're added to the CSCF team.

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:

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
Edit | Attach | Watch | Print version | History: r23 < r22 < r21 < r20 < r19 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r23 - 2021-01-04 - DanielAllen
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback