Linux Web Server
Download
Report
Transcript Linux Web Server
How to setup a Linux Web
Server and use it to
monitor your home
SPEAKER: JESSICA DEEN – SYSTEMS INTEGRATION ENGINEER – SPK AND ASSOCIATES, LLC.
@JLDEEN | JESSICADEEN.COM | [email protected]
About Me
3 Year Microsoft MVP
Current Systems Integration Engineer for SPK
and Associates, LLC.
Former Community Engagement Specialist
for Windows Client and Windows IT Pro
CompTIA A+, Network +, Security + Certified
Apple Certified Macintosh Technician,
Apple Certified Support Professional, Mac
Integration Basics Certified
Why Linux?
Cost – Free
Security – Some might argue it’s a stronger OS than Windows considering
most viruses are written for the Windows platform
Versatility – It can work on extremely old hardware and requires very little
computing power (Raspberry Pi)
Software – The vast majority of Linux software is open source and free. Not
only is there a zero cost associated, but you can also usually modify the
source code and add more features if you have programming experience
Speed – In many cases, Linux distributions are found to be faster and
snappier than Windows and Mac
Building a Web Server - Important
Considerations
Cost
Apache HTTP is free
Ubuntu is free
Physical or Virtual?
Is your web server going to be setup with physical infrastructure or using a virtual
solution such as VMware ESXi or Hyper-V?
What kind of web site will you be deploying?
PHP based
Python based (Django)
HTML
Microsoft .NET (IIS)
10 Most Popular Linux Distributions
Debian
Fedora doesn’t make its own desktop environment or
other software. Instead, the Fedora project uses
“upstream” software
Cent OS / RHEL (Red Hat Enterprise Linux)
Fork of Mandriva Linux created in 2011
Arch Linux
Lightweight, minimal
Uses a “rolling release” model
Slackware Linux
Comes with GNOME 3, by default
Community created; sponsored by Novell
Mageia / Mandriva
Fedora
Built on top of Ubuntu
openSUSE / SUSE Linux Enterprise
Debian-based
Linux Mint
Composed of only free, open sourced software
Ubuntu
Oldest distrio that’s still maintained
Puppy Linux
Commercial Linux Distribution
Latest version built on Slackware
Intended for servers and workstations
ISO file is only 161 MB
Desktop Environments
Desktop Environments
Think of them like GUIs
XFCE
Gnome
KDE
Unity
Installed by default in 14.04
Cinnamon
Terminal
Linux (UNIX) Basics Commands
man
ls
“List”
Equivalent to “dir” in CMD
pwd
“Print Working Directory”
sudo
“Manual”
Think of this as UAC – elevate current user to root permissions for specific commands
Text Editors:
nano
vim
Linux (UNIX) Basics Commands (Cont’d)
mv
cp
Copy
crontab
Cron Table
Think of it like scheduled tasks on Windows Server
history | grep “search string”
Move
Pipe = Sends data from one program to another
Recommend Code Academy’s “Learn the Command Line” course to
become more familiar with CLI
Software Repositories
What are software repositories?
Storage locations from which software
packages may be retrieved and installed on a
computer.
Each Linux distribution hosts their own software
repositories
Installing software on Linux involves package
managers and software repositories
Package manager – Think of it like an app store,
except they were the original app store.
Example: sudo apt-get update
Example: sudo apt-get upgrade
Example: sudo apt-get install git
Example: sudo apt-get install vim
Updates
sudo apt-get update
Downloads the package lists from the repositories and "updates" them to get
information on the newest versions of packages and their dependencies. It will
do this for all repositories and PPAs
sudo apt-get upgrade
Will fetch new versions of packages existing on the machine if APT knows about
these new versions by way of apt-get update
Media
You can get the media for Ubuntu 14.04 LTS (long term support) for free
direct from: http://www.ubuntu.com/download/desktop
You can either burn to a disk, create a bootable USB stick, or mount it on a
virtual machine
How to Install
LAMP Stack
LAMP = Linux / Apache / MySQL / PHP
Apache HTTP
Around since 1995
Serves an estimated ~55% of all websites (as of June of 2013)
Can run on Windows, Linux, Mac
MySQL
Open source database
Free
PHP
Server side scripting language for web development
Can also be used as a general-purpose programming language
Install packages
To install all necessary tools for your new Web Server and the Nest Thermostat web
monitoring application, we can type everything we need to install in one single
command:
sudo apt-get install apache2 mysql-server libapache2-mod-auth-mysql php5 php5-mysql
php5-curl php5-json php5-mcrypt git
For Ubuntu 14, type:
sudo php5enmod mcrypt
Enables mcrypt
sudo service apache2 restart
Nest Thermostat Web Based
Monitoring
git clone https://github.com/f0rkz/Bootstrap-Nest-Administration-Tool
mv Bootstrap-Nest-Administration-Tool Nest_Admin
Proceeding with install
Activate mysql with this command:
After you have the pre-requisites installed, you will want to clone the repo
into your web directory.
git clone https://github.com/f0rkz/Bootstrap-Nest-Administration-Tool
I also renamed my Bootstrap-Nest-Administration-Tool by typing:
sudo mysql_install_db
mv Bootstrap-Nest-Administration-Tool Nest_Admin
Access MySQL
mysql -u root -p
You should be prompted for a password. This is the root password you created for your
MySQL installation
Proceeding with install (Cont’d)
Create the database for information to be stored
create database nest_stats;
grant all privileges on nest_stats.* to nest_stats@localhost identified by ‘somepassword’;
exit
mysql -unest_stats -p nest_stats < dbsetup.sql
Run the database query file as the user just created with the password just
specified
cp ./includes/nest.conf.php_EXAMPLE nest.conf.php
Note: Make sure the copied file is copied into the includes directory, or you will
experience an error later on. After the file is copied, you will edit it with the
necessary information and configure your crontab by typing:
Proceeding with install (Cont’d)
Reoccurring task
crontab –e
*/5 * * * * /bin/rm -f /tmp/nest_php_* ; cd /var/www/html/Nest_Admin/includes/scripts/;
/usr/bin/php /var/www/html/Nest_Admin/includes/scripts/collect-nest-data.php >
/dev/null
Mounting NFS / CIFS Shares
Mount an NFS directory from another machine
mount example.jessicadeen.com:/misc/export /misc/local
Mount a CIFS share
sudo apt-get install cifs-utils
mount -t cifs -o username=USERNAME,password=PASSWD //192.168.1.88/shares
/mnt/share
FSTAB
Mount the NFS or CIFS File System using FSTAB so the mount remains after
reboot
You must be root to modify the fstab
NFS Example:
Server:/usr/local/pub /pub nfs rszie=8192,wsize=8192,timeo=14,intr
CIFS Example:
//192.168.1.102/misc/export /location/goes/here cifs
credentials=/root.smbcredentials.iocharset.utf
//192.168.1.102/Location\040With\040Spaces /local/location/goes_here cifs
credentials=/root/.smbcredentials,iocharset=utf8
Store data in /root/.smbcredentials
Username=bob
Password=P@ssw0rd!
Vhost
Virtual hosting
Allows for hosting multiple domain names on a single server
Shared resources for multiple sites
Ubuntu specifically, vhost directory is /etc/apache2/sites-available/
Example:
ServerName democode.cloudapp.net
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/Nest_Admin/web/
Live Demo
Blog
http://www.jessicadeen.com/tech/setup-nest-bootstrap-control-panel/
Deck and notes will be posted on the blog later today
Free trick and tip:
Shortcut to SSH on Windows
Install Cygwin64 with the openssh and client package (bin)
Locate C:\cygwin64\bin\mintty.exe
Create shortcut
Copy shortcut to c:\windows\system32
Rename shortcut to ‘ssh’
Right click properties, change target path to C:\cygwin64\mintty.exe /bin/ssh
Press OK
Questions?