1. CM Web Application
Andrew McGarry
Summer Intern
Division
781-734-4234
andrew.mcgarry@linquest.com
LinQuest Proprietary Information
2. Overview of Presentation
Overview of My Project
Version Control Concepts
Servers
Web Applications
Django Web Framework
Linux and Bash Scripting
Virtual Machines
Improvements
Resources I Used
7/9/2015 1LinQuest Proprietary Information
3. About My Project
Design and Develop a Web Application
Should be intuitive
Set Up and Implement a CM Server
Utilize Bash Scripts to Process Requests
Query CM server for project information
Check out desired project
Build indicated project
Notify the user when tasks are completed
Learning Experience
Introduce to the Linux operating system
Set up a web server, CM server
Learn to script in Bash
Design and develop a web site from the ground up
7/9/2015 2LinQuest Proprietary Information
4. Version Control Concepts
Greater Control of Development
Makes it easy to keep track of incremental progress
Allows project to revert to any stage in its development
How Changes are Stored
“Snapshots”
“Deltas”
Branching and Merging
Multiple people can work on same project simultaneously
Branches can be merged into main line
Can result in conflicts
Must be solved through human interaction!
Tagging
Label particular set of versions as belonging together
7/9/2015 3LinQuest Proprietary Information
5. Servers
Applications which provide content over a network
CM Servers
Web Servers
FTP Servers
SVNServe
Fully capable server packaged with Subversion
No web browsing capability
Apache
Free, open source, multi-purpose server
Initial setup can be arduous
Robust security
Django Development Server
Not for production purposes
Comes with Django Web Framework
7/9/2015 4LinQuest Proprietary Information
6. Web Applications
Separation of Capabilities
In the beginning, everything was mashed together
Languages have divided responsibilities
HTML = Content
CSS = Presentation
Javascript = Behavior
HTML
The “backbone” of a website
Provides the raw materials
CSS
Controls layout of the web page
Font styles, colors, line breaks, etc.
Javascript
Decides how elements interact to user input
Ex. Drop-down menues, buttons, pointer clicks…
7/9/2015 5LinQuest Proprietary Information
7. Django Web Framework
Python Application
Intended to facilitate rapid web development
Origins in a Midwest newspaper company
Enforces Separation of Capabilities
Models interact with server-side databases
Views are responsible for data processing
Forms are extensions, more or less
Generate templates, handle HTTP requests
Templates = presentation
Written in HTML
Plug in CSS references, Javascript, etc.
Basically the typical web site
Servers
Comes with development server
Upload to Apache once finished
7/9/2015 6LinQuest Proprietary Information
Urls.py
HTTP Request
Views
Template
Form
Template Template
Form
Model
Database
Request
Request
8. Linux (Fedora 17)
Open Source Operating System
Open to public through GNU general public license
Can sell new distributions as long as distribution is open source
Hmmm…no tech support?
Online community is HUGE
Distributions
Approximately 350 recorded distributions
Fedora 17
Maintained an updated by open community
Best features are included in Red Hat distributions
Look out! Updates are frequent and hefty.
7/9/2015 7LinQuest Proprietary Information
10. Bash Scripting
Shells
Act as fronts for the operating system
Accept commands from user, passes to kernel
Ex. Windows Explorer
Contains the desktop, start menu, task bar, file browser.
Bash
Type of shell made for Linux
Provides a command prompt for the user
Bash Scripting
Commands saved in a file make a script
Contains many basic programming functions
Control flow loops/statements
Arithmetic operators
Assignment operators
Boolean expressions
7/9/2015 9LinQuest Proprietary Information
11. Virtual Machines
Also known as VM’s
Definition
A completely isolated guest operating system installed within a host operating system
Ex. Fedora running in Windows
Hardware Virtualization /Software Emulation
Software techniques to overcome differences in hardware/software
Can be extremely difficult, and sacrifices performance
Separate from host OS all the while…
7/9/2015 10LinQuest Proprietary Information
12. VirtualBox
VM Application for Windows
Inserts itself below the kernel to intercept
requests from the guest OS
Monitors guest OS to prevent damage
Completely isolated from host OS
How it Works (Basically)
XML settings file
Runs guest OS off of disk image
All hard disk requests from guest go to disk
image
Everything stored in a directory in host
OS
Routing HTTP requests was
tricky
7/9/2015 11LinQuest Proprietary Information
13. 7/9/2015 LinQuest Proprietary Information 12
LinQuest Network
10.5.1.7
192.168.56.1
Windows
VirtualBox
Server in VM
IP: 10.0.2.15*
Host IP
VirtualBox
Interface
NAT
15. Improvements
Run project at user level, not root
Transfer it to an Apache server
Summary field needs fixing
No instruction field
7/9/2015 14LinQuest Proprietary Information