2,187
edits
m (→Change IP Address: Minor revision) |
m (→Persistent Route: Typo fix) |
||
(23 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Whilst this page was written with the installation of a Ubuntu Server 10.04 LTS in mind, it can also be used for Ubuntu 12. | |||
== Prepare Virtual Machine == | == Prepare Virtual Machine == | ||
# Create a virtual machine with the following options (use Custom) | # Create a virtual machine with the following options (use Custom) | ||
#* Guest OS: Linux > Ubuntu | #* Guest OS: Linux > Ubuntu 64bit | ||
#* CPU: 1 | #* CPU: 1 | ||
#* Memory: | #* Memory: 512 MB | ||
#* Disk: 36GB | #* Disk: 36GB | ||
# Then add a second 36GB disk on a separate physical datastore (if you intend to use software RAID) | # Then add a second 36GB disk on a separate physical datastore (if you intend to use software RAID) | ||
# Attach Ubuntu install ISO to the CD-ROM | # Attach Ubuntu install ISO to the CD-ROM | ||
Note that the specs above should be altered to suit your purposes. | Note that the specs above should be altered to suit your purposes. Whilst there is no need to use a 64 bit OS as opposed to 32 bit if you don't need to address lots of memory, it is standard these days. | ||
== OS Installation == | == OS Installation == | ||
Installing Ubuntu Server (LTS) is relatively painless, its generally a case of following the default or sensible choices for your locale. However, below are step-by-step instructions, which you probably won't require, but may help if you're not familiar with the terminology. | |||
If you're completely new make sure you read through the instructions 1st, so that you're prepared for the information you'll need to provide. | |||
* '''Partition Disks''' | |||
# Select language for installer | |||
# Select '''Install Ubuntu Server''' | |||
# '''Choose Language''' screens | |||
## Select language for server (and remainder of the installer) | |||
## Select location | |||
# '''Ubuntu Installer Main Menu''' screens | |||
## Select ''Yes'' for questions to determine appropriate keyboard, or ''No'' to just select a keyboard layout | |||
# '''Configure the network''' screen | |||
## Enter the hostname for the server (not a FQDN, so <code>hostname</code> rather than <code>hostname.domain.com</code>) | |||
# '''Configure the clock''' screen | |||
## Select ''Yes'' to accept the suggested timezone, or ''No'' to alter | |||
# '''Partition disks''' screens | |||
#* If you want to install the server onto software [[Acronyms#R|RAID]]'ed disks see [[#Install on Software RAID|Install on Software RAID]] | |||
## Select ''Guided - use entire disk and set up LVM'' | |||
## Select the disk to partition and install the OS onto | |||
## Select ''Yes'' to ''Write the changes to disks and configure LVM'' | |||
## Accept the full amount to partition | |||
## Select ''Yes'' to ''Write the changes to disks'' | |||
# '''Set up users and passwords''' screens | |||
## Enter your name | |||
* | ## Enter your username (that you will use to login with) | ||
* | ## Enter your password | ||
##* If you use a weak password (eg less that 8 characters) you'll be asked to confirm this is OK once you've verified it | |||
## Re-enter (verify) your password | |||
## Select ''No'' to not ''Encrypt your home drive'' | |||
##* If you are really worried about your dat being compromised you should consider encrypting the whole drive during its partitioning | |||
# '''Configure the package manager''' screen | |||
## Enter proxy server details if required for server to access the internet for updates | |||
# '''Select and install software''' screen | |||
## Select ''No automatic updates'' if you want to control how updates are applied yourself, otherwise select ''Install security updates automatically'' | |||
# '''Software selection''' screens | |||
## Select '''OpenSSH Server''' (press [Space] when item is highlighted), this allows you to Putty/SSH to the server | |||
## Select any other required software, eg | |||
##* DNS Server - Only required if you want your server to be a DNS server; or in order to configure split DNS, which is required for an exchange server install | |||
##* LAMP Server - Only required for Apache webserver (with MySQL and PHP) | |||
# '''Configuring grub-pc''' screen | |||
## Select ''Yes'' to ''Install the GRUB boot loader to the master boot record'' | |||
# '''Finish the installation''' screen | |||
## Select ''Continue'' | |||
=== Install on Software RAID === | |||
On the '''Partition Disks''' screens use the following to setup software RAID during OS installation. | |||
* If setting up software RAID follow the steps below, otherwise just select '''Guided - use entire disk and set up LVM''' | |||
# Select '''"Manual''' | |||
# Then create a partition... | |||
## Select the first disk ('''<code>sda</code>''') and on the next screen, '''Yes''', to '''Create new empty partition table on this device?''' | |||
## Select the FREE SPACE, then '''Create a new Partition''', and use all but the last 2GB of space, | |||
## And then select type of '''Primary''', and create at '''Beginning''' | |||
## Change '''''Use as''''' to '''physical volume for RAID''', and change the '''''Bootable flag''''' to '''Yes''', the select '''Done setting up this partition''' | |||
# Repeat the above on the remaining FREE SPACE on '''<code>sda</code>''', to create another primary '''physical volume for RAID''', but ''''not'' bootable''' | |||
# Select the second disk, <code>sdb</code>, and repeat the steps taken for <code>sda</code> to create two identical partitions | |||
# On the same screen, select the '''Configure Software RAID''' option (at the top), and then confirm through the next screen | |||
# Create a RAID pack/multidisk... | |||
## Select '''Create MD device''', then select '''RAID1''' (ie a mirror), then confirm 2 ''Active devices'', and 0 ''Spare devices'' | |||
## Select both '''<code>/dev/sda1</code>''' and '''<code>/dev/sdb1</code>''' partitions, and then select '''Finish''' | |||
# Repeat the above to create a RAID volume using '''<code>/dev/sda2</code>''' and '''<code>/dev/sdb2</code>''' partitions | |||
# Now select the RAID device #0 partition (select the #1 just under RAID1 device line), and change the '''''Use as''''' and select '''Ext3...''' | |||
# Change the '''''Mount point''''' to '''/''', then select '''Done configuring this partition''' | |||
# Now select the RAID device #1 partition (select the #1 just under RAID1 device line), and change the '''''Use as''''' and select '''Swap area''' | |||
# Then select '''Done configuring this partition''' then finally '''Finish partitioning and write changes to disk''', and confirm to '''Write the changes to disks''' | |||
# Accept the "The kernel was unable to re-read...system will need to restart" complaints for each RAID multidisk, after which the install will continue (note there's a little more to do post install to ensure you can boot using the second disk should the first fail). | |||
Much of this page was originally borrowed heavily from the following pages - they are well worth a read! | |||
* http://www.howtoforge.com/perfect-server-ubuntu8.04-lts | |||
* http://www.howtoforge.com/how-to-install-ubuntu8.04-with-software-raid1 | |||
== Post OS Install Config == | == Post OS Install Config == | ||
=== Enable Root === | |||
# Use the command <code> sudo passwd root </code> | |||
# Enter your user password | |||
# Enter a strong password for the root account | |||
For Ubuntu 18... | |||
# Use the command <code> sudo passwd</code> | |||
# Enter your user password | |||
# Enter a strong password for the root account | |||
=== Finish Software RAID config === | |||
''' Only if configured during install ''' | |||
# Start-up grub (by entering <code> grub </code> and enter the following commands (seems to work better via SSH than direct console)... | |||
#* <code> device (hd1) /dev/sdb </code> | |||
#* <code> root (hd1,0) </code> | |||
#* <code> setup (hd1) </code> | |||
#* <code> quit </code> | |||
# Then edit the <code> /boot/grub/menu.lst </code> config file. Go to the end of the file where the boot options are, and create a copy of the first option and edit the following lines | |||
#* <code> title </code> Add "Primary disk fail" or something similar to end | |||
#* <code> root </code> Change <code> hd0 </code> to <code> hd1 </code> | |||
# To check the RAID setup of your drives use | |||
#* <code> mdadm --misc -D /dev/md0 </code> | |||
#* <code> mdadm --misc -D /dev/md1 </code> | |||
== Change IP Address == | == Change IP Address (Pre v18) == | ||
=== v8 Hardy Heron / v10 Lucid Lynx === | |||
* Edit the <code> /etc/network/interfaces </code> file in the following fashion to set static address details | * Edit the <code> /etc/network/interfaces </code> file in the following fashion to set static address details | ||
<pre> | <pre> | ||
Line 76: | Line 122: | ||
gateway 192.168.1.1 | gateway 192.168.1.1 | ||
</pre> | </pre> | ||
* Then check the local hosts file <code> /etc/hosts </code>, so that the IP v4 part looks like this (so the host can resolve itself)... | * Then check the local hosts file <code>/etc/hosts</code>, so that the IP v4 part looks like this (so the host can resolve itself)... | ||
<pre> | <pre> | ||
127.0.0.1 localhost | 127.0.0.1 localhost | ||
192.168.1.150 hostname.domain.com hostname | 192.168.1.150 hostname.domain.com hostname | ||
</pre> | </pre> | ||
* Check that DNS resolution is setup correctly in <code>/etc/resolv.conf</code>. Add additional DNS nameservers as required, as found in in order of | * Check that DNS resolution is setup correctly in <code>/etc/resolv.conf</code>. Add additional DNS nameservers as required, as found in in order of preference. You can also add the domain of the server (<code>domain</code>), and add domain suffix searches (<code>search</code>), both are optional. For example... | ||
nameserver 192.168.1.20 | nameserver 192.168.1.20 | ||
nameserver 127.0.0.1 | nameserver 127.0.0.1 | ||
domain domain.com | |||
search domain.com | |||
search domain.com | |||
* Then restart networking | |||
** <code> /etc/init.d/networking restart </code> | |||
* Confirm network config is as expected with | |||
** <code>ifconfig</code> | |||
=== v12 Precise Pangolin === | |||
* Edit the <code> /etc/network/interfaces </code> file in the following fashion to set static address details | |||
<pre> | |||
# The primary network interface | |||
auto eth0 | |||
iface eth0 inet static | |||
address 192.168.1.150 | |||
netmask 255.255.255.0 | |||
gateway 192.168.1.1 | |||
dns-nameservers 192.168.1.20 8.8.8.8 | |||
dns-domain localdomain.com | |||
dns-search localdomain.com anotherdomain.com | |||
</pre> | |||
* Then check the local hosts file <code>/etc/hosts</code>, so that the IP v4 part looks like this (so the host can resolve itself)... | |||
<pre> | |||
127.0.0.1 localhost | |||
192.168.1.150 hostname.domain.com hostname | |||
</pre> | |||
* Then restart networking | * Then restart networking | ||
** <code> | ** <code> service networking restart </code> | ||
* Confirm network interface config is as expected with | |||
** <code>ifconfig</code> | |||
* Confirm DNS config is as expected with | |||
** <code>less /etc/resolv.conf</code> | |||
=== Persistent Route === | |||
To add a persistent route to an interface, add using the following syntax (example sends traffic to 172.32.1.0/24 via eth1 to 192.168.1.100 | |||
up route add -net 172.32.1.0/24 gw 192.168.1.100 dev eth1 | |||
=== Additional IPs / Multihome === | |||
To add additional IP addresses to an interface, create sub-interfaces as below. | |||
<pre> | |||
auto eth0:1 | |||
auto eth0:2 | |||
# Sub 1 | |||
iface eth0:1 inet static | |||
address 192.168.1.160 | |||
netmask 255.255.255.0 | |||
# Sub 2 | |||
iface eth0:2 inet static | |||
address 192.168.1.161 | |||
netmask 255.255.255.0 | |||
</pre> | |||
'''RTNETLINK answers: File exists''' - Note that you can't use the same default gateway twice, doing so will cause this error | |||
== Change IP Address (v18 onwards) == | |||
Ubuntu now uses [https://netplan.io Netplan], do not use the <code>/etc/network/interfaces</code> config file, use either <code>/etc/netplan/01-netcfg.yaml</code> or <code>/etc/netplan/50-cloud-init.yaml</code>. Formatting is very important with YAML files, indents especially. | |||
# Find the interface name (eg <code>ens2</code>) | |||
#* <code> ip link </code> | |||
# Edit the <code>/etc/netplan/01-netcfg.yaml</code> config file as show below | |||
# Apply the changes | |||
#* <code> netplan apply</code> | |||
<pre> | |||
network: | |||
version: 2 | |||
renderer: networkd | |||
ethernets: | |||
ens2: | |||
dhcp4: no | |||
addresses: | |||
- 192.168.1.50/24 | |||
gateway4: 192.168.1.1 | |||
nameservers: | |||
addresses: [192.168.1.1,8.8.8.8] | |||
</pre> | |||
== | === Persistent Route === | ||
To add a persistent route to an interface, add using the following syntax (example sends traffic to 172.32.1.0/24 via eth1 to 192.168.2.100) to add the <code>routes</code> config to the interface the traffic should go through. | |||
<pre> | |||
ens2: | |||
addresses: | |||
- 192.168.2.50/24 | |||
dhcp4: no | |||
routes: | |||
- to: 172.32.1.0/24 | |||
via: 192.168.2.100 | |||
</pre> | |||
== Update the OS == | |||
# Run the following command to update the apt package database | |||
# | |||
#* <code> apt-get update </code> | #* <code> apt-get update </code> | ||
# | # To install any updates | ||
#* <code> apt-get | #* <code> apt-get upgrade </code> | ||
#* If updates are being held back (eg linux image), then use <code> aptitude safe-upgrade</code> | |||
# If running in VMware VM, [[VM Tools_Install_(Ubuntu)|install VM Tools]] | |||
=== Remove Old Version === | |||
Old kernel images will tend to linger in <code>/boot</code> and source code will remain in <code>/user/src</code>. These can be safely removed so long as you're completely certain which you are using (normally the latest) | |||
# Get the versions currently installed | |||
#* <code>dpkg --get-selections | grep linux-image</code> | |||
# Remove unwanted versions (don't remove the current or base/unversioned image) | |||
#* EG <code>apt-get purge linux-image-3.2.0-32-virtual </code> | |||
#* If you've got lots to remove its easier to do lots in one go | |||
#** EG <code> apt-get purge linux-image-3.2.0-51-virtual linux-image-3.2.0-52-virtual </code> | |||
To remove old source, just delete manually, | |||
* EG <code> rm -fr /usr/src/linux-headers-3.2.0-51 </code> | |||
= NTP = | == NTP == | ||
''Not required if your server doesn't really need bang on accurate time'' | ''Not required if your server doesn't really need bang on accurate time'' | ||
Line 173: | Line 265: | ||
#* <code> server 3.europe.pool.ntp.org </code> | #* <code> server 3.europe.pool.ntp.org </code> | ||
# Restart the NTP service | # Restart the NTP service | ||
#* <code> | #* <code> systemctl restart ntp </code> | ||
# Verify using the following commands | # Verify using the following commands | ||
#* <code> ntpq -np </code> | #* <code> ntpq -np </code> |