Ubuntu Unleashed 2017 Edition (includes Content Update Program): Covering 16.10, 17.04, 17.10

Paperback | October 19, 2016

byMatthew Helmke

not yet rated|write a review

Book + Content Update Program

Ubuntu Unleashed 2017 Edition is filled with unique and advanced information for everyone who wants to make the most of the Ubuntu Linux operating system. This new edition has been thoroughly updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 16.04 LTS release with forthcoming online updates for 16.10, 17.04, and 17.10 when they are released.

Former Ubuntu Forum administrator Matthew Helmke covers all you need to know about Ubuntu 16.04 installation, configuration, productivity, multimedia, development, system administration, server operations, networking, virtualization, security, DevOps, and more—including intermediate-to-advanced techniques you won’t find in any other book.

Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and Web development tools, programming languages, hardware support, and more. You’ll find new or improved coverage of navigation via Unity Dash, wireless networking, VPNs, software repositories, new NoSQL database options, virtualization and cloud services, new programming languages and development tools, monitoring, troubleshooting, and more.

  • Configure and customize the Unity desktop
  • Get started with multimedia and productivity applications, including LibreOffice
  • Manage Linux services, users, and software packages
  • Administer and run Ubuntu from the command line
  • Automate tasks and use shell scripting
  • Provide secure remote access and configure a secure VPN
  • Manage kernels and modules
  • Administer file, print, email, proxy, LDAP, DNS, and HTTP servers (Apache, Nginx, or alternatives)
  • Learn about new options for managing large numbers of servers
  • Work with databases (both SQL and the newest NoSQL alternatives)
  • Get started with virtualization
  • Build a private cloud with Juju and Charms
  • Learn the basics about popular programming languages including Python, PHP, Perl, and new alternatives such as Go and Rust
  • Learn about Ubuntu’s work toward usability on touchscreen and phone devices


In addition, this book is part of InformIT’s exciting Content Update Program, which provides content updates for major technology improvements! As significant updates are made to Docker and Azure, sections of this book will be updated or new sections will be added to match the updates to the technologies. As updates become available, they will be delivered to you via a free Web Edition of this book, which can be accessed with any Internet connection. To learn more, visit informit.com/cup.

How to access the Web Edition: Follow the instructions inside to learn how to register your book to access the FREE Web Edition.


Pricing and Purchase Info

$48.77 online
$68.99 list price (save 29%)
In stock online
Ships free on orders over $25
Prices may vary. why?
Please call ahead to confirm inventory.

From the Publisher

Book + Content Update Program Ubuntu Unleashed 2017 Edition is filled with unique and advanced information for everyone who wants to make the most of the Ubuntu Linux operating system. This new edition has been thoroughly updated by a long-time Ubuntu community leader to reflect the exciting new Ubuntu 16.04 LTS release with forthc...

Matthew Helmke is an active member of the Ubuntu community. He served from 2006 to 2011 on the Ubuntu Forum Council, providing leadership and oversight of the Ubuntu Forums (www.ubuntuforums.org), and spent two years on the Ubuntu regional membership approval board for Europe, the Middle East, and Africa. He has written about Ubuntu fo...

other books by Matthew Helmke

Ubuntu Unleashed 2016 Edition: Covering 15.10 And 16.04
Ubuntu Unleashed 2016 Edition: Covering 15.10 And 16.04

Paperback|Dec 1 2015

$46.78 online$68.99list price(save 32%)
The Official Ubuntu Book
The Official Ubuntu Book

Paperback|Jul 20 2016

$38.03 online$49.99list price(save 23%)
The Official Ubuntu Book
The Official Ubuntu Book

Paperback|Jul 15 2014

$29.60 online$41.99list price(save 29%)
see all books by Matthew Helmke
Format:PaperbackDimensions:832 pages, 8.8 × 7 × 2 inPublished:October 19, 2016Publisher:Pearson EducationLanguage:English

The following ISBNs are associated with this title:

ISBN - 10:0134511182

ISBN - 13:9780134511184

Customer Reviews of Ubuntu Unleashed 2017 Edition (includes Content Update Program): Covering 16.10, 17.04, 17.10

Reviews

Extra Content

Table of Contents

Introduction     xxxiii
Licensing     xxxiv
Who This Book Is For     xxxv
   Those Wanting to Become Intermediate or Advanced Users     xxxv
   Sysadmins, Programmers, and DevOps     xxxvi
What This Book Contains     xxxvii
Conventions Used in This Book     xxxviii

PART I:  GETTING STARTED
Chapter 1  Installing Ubuntu and Post-Installation Configuration     1

Before You Begin the Installation     1
   Researching Your Hardware Specifications     2
   Installation Options     2
   32-Bit vs 64-Bit Ubuntu     4
   Planning Partition Strategies     5
   The Boot Loader     5
   Installing from DVD or USB Drive     6
Step-by-Step Installation     6
   Installing     7
   First Update     13
Shutting Down     13
Finding Programs and Files     14
Software Updater     15
The sudo Command     18
Configuring Software Repositories     19
System Settings     21
   Detecting and Configuring a Printer     22
   Configuring Power Management in Ubuntu     22
Setting the Time and Date     23
Configuring Wireless Networks     24
Troubleshooting Post-Installation Configuration Problems     26
References     27
Chapter 2  Background Information and Resources     29
What Is Linux?     29
Why Use Linux?     31
What Is Ubuntu?     33
Ubuntu for Business     33
Ubuntu in Your Home     35
Getting the Most from Ubuntu and Linux Documentation     35
Ubuntu Developers and Documentation     36
Websites and Search Engines     37
   Web Search Tips     37
   Google Is Your Friend     37
   Ubuntu Package Listings     38
   Commercial Support     38
   Documentation     39
Linux Guides     39
   Ubuntu     40
Mailing Lists     40
   Ubuntu Project Mailing Lists     41
Internet Relay Chat     42

PART II:  DESKTOP UBUNTU
Chapter 3  Working with Unity     43

Foundations and the X Server     43
   Basic X Concepts     44
   Using X     45
   Elements of the xorg.conf File     46
   Starting X     51
   Using a Display Manager     51
   Changing Window Managers     52
Using Unity, a Primer     52
   The Desktop     53
   Customizing and Configuring Unity     58
Power Shortcuts     60
References     61
Chapter 4  On the Internet     63
Getting Started with Firefox     63
Checking Out Google Chrome and Chromium65
Choosing an Email Client     66
   Mozilla Thunderbird     66
   Evolution     67
   Other Mail Clients     68
RSS Readers     69
   Firefox     69
   Liferea     69
Internet Relay Chat     70
Usenet Newsgroups     72
References     74
Chapter 5  Productivity Applications     75
Introducing LibreOffice     76
Other Office Suites for Ubuntu     78
   Working with GNOME Office     78
   Working with KOffice     80
Other Useful Productivity Software     80
   Working with PDF     80
   Working with XML and DocBook     81
   Working with LaTeX     82
Productivity Applications Written for Microsoft Windows     83
References     83
Chapter 6  Multimedia Applications     85
Sound and Music     85
   Sound Cards     86
   Adjusting Volume     87
   Sound Formats     88
   Listening to Music     89
Graphics Manipulation     92
   The GNU Image Manipulation Program     93
   Using Scanners in Ubuntu     94
   Working with Graphics Formats     95
   Capturing Screen Images     97
   Other Graphics Manipulation Options     97
Using Digital Cameras with Ubuntu     98
   Handheld Digital Cameras     98
   Using Shotwell Photo Manager     98
Burning CDs and DVDs in Ubuntu     99
   Creating CDs and DVDs with Brasero     99
   Creating CDs from the Command Line     100
   Creating DVDs from the Command Line     102
Viewing Video     104
   TV and Video Hardware     104
   Video Formats     105
   Viewing Video in Linux     106
   Personal Video Recorders     107
   Video Editing     107
References     109
Chapter 7  Other Ubuntu Interfaces     111
Desktop Environment     112
KDE and Kubuntu     113
Xfce and Xubuntu     114
   LXDE and Lubuntu     115
GNOME3 and Ubuntu GNOME     116
MATE and Ubuntu MATE     117
Ubuntu Kylin     118
References     118
Chapter 8  Games     121
Ubuntu Gaming     121
Installing Proprietary Video Drivers     122
Steam     123
Installing Games in Ubuntu     123
   Warsow     124
   Scorched 3D     124
   Frozen Bubble     125
   SuperTux     126
   Battle for Wesnoth     126
   Frets on Fire     127
   FlightGear     128
   Speed Dreams     129
   Games for Kids     129
   Commercial Games     129
Playing Windows Games     130
References     130

PART III:  SYSTEM ADMINISTRATION
Chapter 9  Managing Software     133

Ubuntu Software     133
Using Synaptic for Software Management     134
Staying Up-to-Date     137
Working on the Command Line     138
   Day-to-Day Usage     138
   Finding Software     141
   Using apt Instead of apt-get     142
Compiling Software from Source     143
   Compiling from a Tarball     143
   Compiling from Source from the Ubuntu Repositories     144
Configuration Management     145
   dotdee     145
Snappy Ubuntu Core     146
Using Snaps     146
References     147
Chapter 10  Command-Line Beginner’s Class     149
What Is the Command Line?     150
Accessing the Command Line     151
   Text-Based Console Login     152
   Logging Out     153
   Logging In and Out from a Remote Computer     153
User Accounts     154
Reading Documentation     155
   Using Man Pages     156
   Using apropros     156
   Using whereis     157
Understanding the Linux File System Hierarchy     157
   Essential Commands in /bin and /sbin     158
   Configuration Files in /etc     159
   User Directories: /home     159
   Using the Contents of the /proc Directory to Interact with the Kernel     160
   Working with Shared Data in the /usr Directory     161
   Temporary File Storage in the /tmp Directory     162
   Accessing Variable Data Files in the /var Directory     162
Navigating the Linux File System     162
   Listing the Contents of a Directory with ls     162
   Changing Directories with cd     164
   Finding Your Current Directory with pwd     165
Working with Permissions     165
   Assigning Permissions     166
   Directory Permissions     167
   Altering File Permissions with chmod     168
   File Permissions with umask     169
   File Permissions with chgrp     170
   Changing File Permissions with chown     170
   Understanding Set User ID, Set Group ID, and Sticky Bit Permissions     170
   Setting Permissions with Access Control Lists     171
Working with Files     173
   Creating a File with touch     173
   Creating a Directory with mkdir     173
   Deleting a Directory with rmdir     174
   Deleting a File or Directory with rm     175
   Moving or Renaming a File with mv     175
   Copying a File with cp     176
   Displaying the Contents of a File with cat     177
   Displaying the Contents of a File with less     177
   Using Wildcards and Regular Expressions     177
Working as Root     178
   Understanding and Fixing sudo     178
   Creating Users     181
   Deleting Users     182
   Shutting Down the System     182
   Rebooting the System     183
Commonly Used Commands and Programs     183
References     184
Chapter 11  Command-Line Master Class Part 1      185
Why Use the Command Line?     186
Using Basic Commands     187
   Printing the Contents of a File with cat     188
   Changing Directories with cd     189
   Changing File Access Permissions with chmod     191
   Copying Files with cp     191
   Printing Disk Usage with du     192
   Using echo     193
   Finding Files by Searching with find     193
   Searches for a String in Input with grep     196
   Paging Through Output with less     197
   Creating Links Between Files with ln     199
   Finding Files from an Index with locate     200
   Listing Files in the Current Directory with ls     200
   Listing System Information with lsblk, lshw, lsmod, and lspci     202
   Reading Manual Pages with man     203
   Making Directories with mkdir     204
   Moving Files with mv     204
   Renaming Files with rename     204
   Deleting Files and Directories with rm     205
   Sorting the Contents of a File with sort     205
   Printing the Last Lines of a File with tail     207
   Printing the Location of a Command with which     207
   Download Files with wget     207
References     208
Chapter 12  Command-Line Master Class Part 2     209
Redirecting Output and Input     209
stdin, stdout, stderr, and Redirection     211
Comparing Files     212
   Finding Differences in Files with diff     212
   Finding Similarities in Files with comm212
Limiting Resource Use and Job Control     213
   Listing Processes with ps     213
   Listing Jobs with jobs     214
   Running One or More Tasks in the Background     215
   Moving Jobs to the Background or Foreground with bg and fg     215
   Printing Resource Usage with top     216
   Setting Processes Priority with nice     218
Combining Commands     219
   Pipes     219
   Combining Commands with Boolean Operators     221
   Running Separate Commands in Sequence     222
   Process Substitution     222
Using Environment Variables     222
Using Common Text Editors     226
   Working with nano     227
   Working with vi     227
   Working with emacs     229
   Working with sed and awk     230
Working with Compressed Files     232
Using Multiple Terminals with byobu     233
Polite System Reset Using REISUB     234
Fixing an Ubuntu System That Will Not Boot     235
   Checking BIOS     235
   Checking GRUB     235
   Reinstalling GRUB     235
   Using Recovery Mode     236
   Reinstalling Ubuntu     236
Tips and Tricks     236
   Running the Previous Command     236
   Running Any Previous Command     237
   Running a Previous Command that Started with Specific Letters     237
   Running the Same Thing You Just Ran with a Different First Word     237
   Viewing Your History and More     237
   Doing Two or More Things     237
   Using Shortcuts     238
   Confining a Script to a Directory     238
   Using Coreutils     239
   Reading the Contents of the Kernel Ring Buffer with dmesg     239
References     240
Chapter 13  Managing Users     241
User Accounts     241
   The Super User/Root User     242
   User IDs and Group IDs     244
   File Permissions     244
Managing Groups     245
   Group Listing     245
   Group Management Tools     246
Managing Users     248
   User Management Tools     248
   Adding New Users     250
   Monitoring User Activity on the System     251
Managing Passwords     252
   System Password Policy     252
   The Password File     253
   Shadow Passwords     254
   Managing Password Security for Users     256
   Changing Passwords in a Batch     256
Granting System Administrator Privileges to Regular Users     257
   Temporarily Changing User Identity with the su Command     257
   Granting Root Privileges on Occasion: The sudo Command     259
Disk Quotas     262
   Implementing Quotas     262
   Manually Configuring Quotas     263
Related Ubuntu Commands     264
References     264
Chapter 14  Automating Tasks and Shell Scripting     265
Scheduling Tasks     265
   Using at and batch to Schedule Tasks for Later     265
   Using cron to Run Jobs Repeatedly     268
   Using rtcwake to Wake Your Computer from Sleep Automatically     270
Basic Shell Control     272
   The Shell Command Line     273
   Shell Pattern-Matching Support     274
   Redirecting Input and Output     275
   Piping Data     276
   Background Processing     277
Writing and Executing a Shell Script     277
   Running the New Shell Program     279
   Storing Shell Scripts for System-Wide Access     279
   Interpreting Shell Scripts Through Specific Shells     280
   Using Variables in Shell Scripts     281
   Assigning a Value to a Variable     282
   Accessing Variable Values     282
   Positional Parameters     282
   A Simple Example of a Positional Parameter     283
   Using Positional Parameters to Access and Retrieve
   Variables from the Command Line     284
   Using a Simple Script to Automate Tasks     284
   Built-In Variables     286
   Special Characters     287
   Using Double Quotes to Resolve Variables in Strings with Embedded Spaces     288
   Using Single Quotes to Maintain Unexpanded Variables     288
   Using the Backslash as an Escape Character     289
   Using the Backtick to Replace a String with Output     289
   Comparison of Expressions in pdksh and bash     290
   Comparing Expressions with tcsh     295
   The for Statement     299
   The while Statement     300
   The until Statement     302
   The repeat Statement (tcsh)     303
   The select Statement (pdksh)     303
   The shift Statement     304
   The if Statement     304
   The case Statement     305
   The break and exit Statements     307
   Using Functions in Shell Scripts     307
References     308
Chapter 15  The Boot Process     311
Running Services at Boot     311
Beginning the Boot Loading Process     312
   Loading the Linux Kernel     314
   System Services and Runlevels     315
   Runlevel Definitions     315
   Booting into the Default Runlevel     316
   Understanding init Scripts and the Final Stage of Initialization     316
   Controlling Services at Boot with Administrative Tools     317
   Changing Runlevels     318
   Troubleshooting Runlevel Problems319
   Starting and Stopping Services Manually     319
Using Upstart     319
systemd     320
Boot Repair     322
References     322
Chapter 16  System-Monitoring Tools     323
Console-Based Monitoring     323
   Using the kill Command to Control Processes     325
   Using Priority Scheduling and Control     326
   Displaying Free and Used Memory with free     327
   Disk Space     328
   Disk Quotas     329
   Checking Log Files     329
   Rotating Log Files     331
Graphical Process and System Management Tools     333
   System Monitor     334
   Conky     334
   Other     339
KDE Process- and System-Monitoring Tools     339
Enterprise Server Monitoring     340
   Landscape     340
   Other     340
References     340
Chapter 17  Backing Up     341
Choosing a Backup Strategy     341
   Why Data Loss Occurs     342
   Assessing Your Backup Needs and Resources     343
   Evaluating Backup Strategies     345
   Making the Choice     348
Choosing Backup Hardware and Media     348
   Removable Storage Media     348
   CD-RW and DVD+RW/-RW Drives     349
   Network Storage     349
   Tape Drive Backup     349
   Cloud Storage     350
Using Backup Software     350
   tar: The Most Basic Backup Tool     351
   The GNOME File Roller     353
   The KDE ark Archiving Tool     353
   Déjà Dup     354
   Back In Time     356
   Unison     358
   Using the Amanda Backup Application     358
   Alternative Backup Software     359
Copying Files     360
   Copying Files Using tar     360
   Compressing, Encrypting, and Sending tar Streams     361
   Copying Files Using cp     361
   Copying Files Using mc     362
   Using rsync     362
Version Control for Configuration Files     364
System Rescue     366
   The Ubuntu Rescue Disc     367
   Restoring the GRUB2 Boot Loader     367
   Saving Files from a Nonbooting Hard Drive     368
References     368
Chapter 18  Networking     369
Laying the Foundation: The localhost Interface     370
   Checking for the Availability of the Loopback Interface     370
   Configuring the Loopback Interface Manually     370
Checking Connections with ping, traceroute, and mtr     371
Networking with TCP/IP     374
   TCP/IP Addressing     374
   Using IP Masquerading in Ubuntu     376
   Ports     377
IPv6 Basics     378
Network Organization     380
   Subnetting     381
   Subnet Masks     381
   Broadcast, Unicast, and Multicast Addressing     382
Hardware Devices for Networking     382
   Network Interface Cards     382
   Network Cable     384
   Hubs and Switches     385
   Routers and Bridges     386
   Initializing New Network Hardware     387
Using Network Configuration Tools     389
   Command-Line Network Interface Configuration     389
   Network Configuration Files     394
   Using Graphical Configuration Tools     397
Dynamic Host Configuration Protocol     399
   How DHCP Works     399
   Activating DHCP at Installation and Boot Time     400
   DHCP Software Installation and Configuration     401
   Using DHCP to Configure Network Hosts     403
   Other Uses for DHCP     405
Wireless Networking     405
   Support for Wireless Networking in Ubuntu     405
   Advantages of Wireless Networking     407
   Choosing from Among Available Wireless Protocols     407
Beyond the Network and onto the Internet     408
Common Configuration Information     408
   Understanding PPP over Ethernet     410
   Configuring a PPPoE Connection Manually     411
Configuring Dial-Up Internet Access     412
Troubleshooting Connection Problems     413
References     414
Chapter 19  Remote Access with SSH, Telnet, and VNC     415
Setting Up a Telnet Server     415
Telnet Versus SSH     417
Setting Up an SSH Server     417
SSH Tools     417
   Using scp to Copy Individual Files Between Machines     418
   Using sftp to Copy Many Files Between Machines     418
   Using ssh-keygen to Enable Key-Based Logins     419
Virtual Network Computing     420
References     423
Chapter 20  Securing Your Machines     425
Understanding Computer Attacks     425
Assessing Your Vulnerability     427
Protecting Your Machine     428
   Securing a Wireless Network     429
   Passwords and Physical Security     429
   Configuring and Using Tripwire     430
   Devices     431
Viruses     431
Configuring Your Firewall     432
AppArmor     435
Forming a Disaster Recovery Plan     437
References     439
Chapter 21  Performance Tuning     441
Hard Disk     441
   Using the BIOS and Kernel to Tune the Disk Drives     442
   The hdparm Command     443
   File System Tuning     444
   The tune2fs Command     444
   The e2fsck Command     445
   The badblocks Command     445
   Disabling File Access Time     445
Kernel     445
Apache     446
MySQL     448
   Measuring Key Buffer Usage     448
   Using the Query Cache     449
   Miscellaneous Tweaks     451
   Query Optimization     451
References     452
Chapter 22  Kernel and Module Management     453
The Linux Kernel     454
   The Linux Source Tree     455
   Types of Kernels     457
Managing Modules     458
When to Recompile     460
Kernel Versions     461
Obtaining the Kernel Sources     462
Patching the Kernel     463
Compiling the Kernel     464
   Using xconfig to Configure the Kernel     467
   Creating an Initial RAM Disk Image     470
When Something Goes Wrong     470
   Errors During Compile     471
   Runtime Errors, Boot Loader Problems, and Kernel Oops     472
References     472

PART IV:  UBUNTU AS A SERVER
Chapter 23  Sharing Files and Printers     473

Using the Network File System     474
   Installing and Starting or Stopping NFS     474
   NFS Server Configuration     474
   NFS Client Configuration     475
Putting Samba to Work     476
   Manually Configuring Samba with /etc/samba/smb.conf     478
   Testing Samba with the testparm Command     481
   Starting, Stopping, and Restarting the smbd Daemon     481
   Mounting Samba Shares     482
Network and Remote Printing with Ubuntu     483
   Creating Network Printers     483
   Using the Common UNIX Printing System GUI     485
   Avoiding Printer Support Problems     486
References     488
Chapter 24  Apache Web Server Management     489
About the Apache Web Server     489
Installing the Apache Server     490
   Starting and Stopping Apache     491
Runtime Server Configuration Settings     492
   Runtime Configuration Directives     492
   Editing apache2.conf     493
   Apache Multiprocessing Modules     495
   Using .htaccess Configuration Files     496
File System Authentication and Access Control     498
   Restricting Access with Require     498
   Authentication     499
   Final Words on Access Control     501
Apache Modules     502
   mod_access     502
   mod_alias     502
   mod_asis     503
   mod_auth     503
   mod_auth_anon     503
   mod_auth_dbm     503
   mod_auth_digest     504
   mod_autoindex     504
   mod_cgi     504
   mod_dir and mod_env     504
   mod_expires     504
   mod_headers     504
   mod_include     505
   mod_info and mod_log_config     505
   mod_mime and mod_mime_magic     505
   mod_negotiation     505
   mod_proxy     505
   mod_rewrite     505
   mod_setenvif     506
   mod_speling     506
   mod_status     506
   mod_ssl     506
   mod_unique_id     506
   mod_userdir     506
   mod_usertrack     507
   mod_vhost_alias     507
Virtual Hosting     507
   Address-Based Virtual Hosts     507
   Name-Based Virtual Hosts     508
Logging     509
HTTPS     510
References     513
Chapter 25  Nginx Web Server Management     515
About the Nginx Web Server     515
Installing the Nginx Server     517
   Installing from the Ubuntu Repositories     517
   Building the Source Yourself     517
Configuring the Nginx Server     518
Virtual Hosting     521
Setting Up PHP     522
Adding and Configuring Modules     523
HTTPS     524
References     526
Chapter 26  Other HTTP Servers     527
lighttpd     527
Yaws     528
Cherokee     528
Jetty     529
thttpd     529
Apache Tomcat     530
References     530
Chapter 27 Remote File Serving with FTP     531
Choosing an FTP Server     531
   Choosing an Authenticated or Anonymous Server     532
   Ubuntu FTP Server Packages     532
   Other FTP Servers     532
Installing FTP Software     533
The FTP User     534
Configuring the Very Secure FTP Server     536
   Controlling Anonymous Access     537
   Other vsftpd Server Configuration Files     537
Using the ftphosts File to Allow or Deny FTP Server Connection     539
References     540
Chapter 28  Handling Email     541
How Email Is Sent and Received     541
   The Mail Transport Agent     542
   Choosing an MTA     544
   The Mail Delivery Agent544
   The Mail User Agent     545
Basic Postfix Configuration and Operation     546
   Configuring Masquerading     548
   Using Smart Hosts     549
   Setting Message Delivery Intervals     549
   Mail Relaying     550
   Forwarding Email with Aliases     550
Using Fetchmail to Retrieve Mail     551
   Installing Fetchmail     551
   Configuring Fetchmail     551
Choosing a Mail Delivery Agent     555
   Procmail     555
   Spamassassin     555
   Squirrelmail     556
   Virus Scanners     556
   Autoresponders     556
Alternatives to Microsoft Exchange Server     556
   Microsoft Exchange Server/Outlook Client     557
   CommuniGate Pro     557
   Oracle Beehive     557
   Bynari     558
   Open-Xchange     558
   Horde     558
References     558
Chapter 29  Proxying, Reverse Proxying, and Virtual Private Networks (VPN)     561
What Is a Proxy Server?     561
Installing Squid     562
Configuring Clients     562
Access Control Lists     563
Specifying Client IP Addresses     567
Sample Configurations     568
Virtual Private Networks (VPN)     570
   Setting Up a VPN Client     571
   Setting Up a VPN Server     573
References     575
Chapter 30  Administering Relational Database Services     577
A Brief Review of Database Basics     578
   How Relational Databases Work     580
   Understanding SQL Basics     582
   Creating Tables     582
   Inserting Data into Tables     583
   Retrieving Data from a Database     584
Choosing a Database: MySQL Versus PostgreSQL     586
   Speed     586
   Data Locking     586
   ACID Compliance in Transaction Processing to Protect Data Integrity     587
   SQL Subqueries     588
   Procedural Languages and Triggers     588
Configuring MySQL     588
   Setting a Password for the MySQL Root User     589
   Creating a Database in MySQL     590
Configuring PostgreSQL     592
   Initializing the Data Directory in PostgreSQL     592
   Creating a Database in PostgreSQL     593
   Creating Database Users in PostgreSQL     593
   Deleting Database Users in PostgreSQL     594
   Granting and Revoking Privileges in PostgreSQL     594
Database Clients     595
   SSH Access to a Database     595
   Local GUI Client Access to a Database     597
   Web Access to a Database     597
   The MySQL Command-Line Client     598
   The PostgreSQL Command-Line Client     600
   Graphical Clients     600
References     601
Chapter 31  NoSQL Databases     603
Key/Value Stores     606
   Berkeley DB     606
   Cassandra     607
   Memcached and MemcacheDB     607
   Redis     608
   Riak     608
Document Stores     608
   CouchDB     609
   MongoDB     610
   BaseX     610
Wide Column Stores     611
   BigTable     611
   HBase     611
Graph Stores     612
   Neo4j     612
   OrientDB     612
   HyperGraphDB     612
   FlockDB     613
References     613
Chapter 32  Lightweight Directory Access Protocol (LDAP)     615
Configuring the Server     616
   Creating Your Schema     616
   Populating Your Directory     617
Configuring Clients     619
   Evolution     620
   Thunderbird     621
Administration     621
References     622
Chapter 33  Linux Terminal Server Project (LTSP)     623
Requirements     624
Installation     627
Using LTSP     628
References     629
Chapter 34  Virtualization on Ubuntu     631
KVM     633
VirtualBox     637
VMware     639
Xen     639
References     639
Chapter 35  Ubuntu in the Cloud     641
Why a Cloud?     642
   Software as a Service (SaaS)     643
   Platform as a Service (PaaS)     643
   Infrastructure as a Service (IaaS)     643
   Metal as a Service (MaaS)     643
   Before You Do Anything     644
Deploy/Install Basics: Public, Private, or Hybrid?     644
Ubuntu Cloud and OpenStack     645
   Compute Infrastructure (Nova)     645
   Storage Infrastructure (Swift)     646
   Networking Service (Neutron)     646
   Identity Service (Keystone)     646
   Imaging Service (Glance)     647
   Dashboard (Horizon)     647
   Learning More     647
Juju     647
   Getting Started     648
   Charms     650
   The Juju GUI     652
   Juju Quickstart     653
   Juju on Mac OS X and Windows     653
   Mojo: Continuous Delivery for Juju     653
Snappy Ubuntu Core     653
Ubuntu Metal as a Service (MaaS)     653
Landscape     654
References     654
Chapter 36  Managing Sets of Servers     655
Juju     655
Puppet     656
Chef     656
CFEngine     656
Ansible     657
Landscape     657
References     657
Chapter 37  Name Serving with the Domain Name System (DNS)     659
Understanding Domain Names     661
   DNS Servers     661
   DNS Records     662
Setting Up a DNS Server with BIND     665
References     667

PART V:  PROGRAMMING LINUX
Chapter 38  Using Programming Tools for Ubuntu     669

Programming with Linux     670
Using the C Programming Project Management Tools Provided with Ubuntu     671
   Building Programs with make     671
   Using Makefiles     671
   Using the autoconf Utility to Configure Code     673
   Debugging Tools     674
Using the GNU C Compiler     675
Graphical Development Tools     676
   Using the KDevelop Client     676
   The Glade Client for Developing in GNOME     677
   Use an IDE or SDK     678
References     680
Chapter 39  Opportunistic Development     681
Version Control Systems     681
   Managing Software Projects with Git     682
   Managing Software Projects with Bazaar     683
   Managing Software Projects with Subversion     684
   Managing Software Projects with Mercurial     685
Introduction to Opportunistic Development     686
Launchpad     687
Ubuntu Make     688
Creating Snap Packages     689
Bikeshed and Other Tools     689
References     692
Chapter 40  Helping with Ubuntu Development     693
Introduction to Ubuntu Development     694
Setting Up Your Development System     695
   Install Basic Packages and Configure     695
   Create a Launchpad Account     696
   Set Up Your Environment to Work with Launchpad     696
Developing Apps and Scopes     698
Fixing Bugs and Packaging     698
Finding Bugs to Fix with Harvest     701
Masters of the Universe     701
References     702
Chapter 41  Helping with Ubuntu Testing and QA     703
Community Teams     703
   Ubuntu Testing Team     704
   QA Team705
Bug Squad     705
Test Drive     705
References     708
Chapter 42  Using Popular Programming Languages     709
Ada     710
Clojure     710
COBOL     711
D     712
Dart     712
Elixir     713
Erlang     713
Forth     713
Go     714
Fortran     714
Groovy     715
Haskell     715
Java     715
JavaScript     716
Lisp     716
Lua     717
Mono     717
OCaml     718
Perl     718
PHP     719
Python     719
Ruby     719
Rust     720
Scala     720
Scratch     720
Vala     720
References     721
Chapter 43  Beginning Mobile Development for Android     723
Introduction to Android     724
   Hardware     724
   Linux Kernel     724
   Libraries     724
   Android Runtime     724
   Application Framework     725
   Applications     725
Installing Android Studio     725
   Install Android Studio     725
   Install SDK Packages     725
Create Your First Application     727
References     728
Chapter 44  Developing for Ubuntu Mobile/Touch     729
Install the SDK     730
Create Your First Application     730
References     731
Index     733


BONUS ONLINE CHAPTERS
Chapter 45  Using Perl Web
Using Perl with Linux
   Perl Versions
   A Simple Perl Program
Perl Variables and Data Structures
   Perl Variable Types
   Special Variables
Operators
   Comparison Operators
   Compound Operators
   Arithmetic Operators
   Other Operators
   Special String Constants
Conditional Statements: if/else and unless
   if
   unless
Looping
   for
   foreach
   while
   until
   last and next
   do ..while and do ..until
Regular Expressions
Access to the Shell
Modules and CPAN
Code Examples
   Sending Mail
   Purging Logs
   Posting to Usenet
   One-Liners
   Command-Line Processing
References
Chapter 46  Using Python
Python on Linux
The Basics of Python
   Numbers
   More on Strings
   Lists
   Dictionaries
   Conditionals and Looping
Functions
Object Orientation
   Class and Object Variables
   Constructors and Destructors
   Class Inheritance
The Standard Library and the Python Package Index
References
Chapter 47  Using PHP
Introduction to PHP
   Entering and Exiting PHP Mode
   Variables
   Arrays
   Constants
   References
   Comments
   Escape Sequences
   Variable Substitution
   Operators
   Conditional Statements
   Special Operators
   Switching
   Loops
   Including Other Files
Basic Functions
   Strings
   Arrays
   Files
   Miscellaneous
Handling HTML Forms
Databases
References