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

See New Coop Students #First_day_s

Video Training

See LyndaCourses

Linux Setup

Ubuntu 16.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

The following ubuntu packages will be a good start for developing in Python.

  • Install git, mercurial, 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 mercurial 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)"

For Python development, OS X comes preinstalled with Python 2.7 already. But 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
Topic revision: r16 - 2019-01-09 - DanielAllen
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback