reset password

Set Up Ubuntu 18.04

This guide describes how to install and configure commonly used software on Ubuntu 18.04.

0. Install Ubuntu

Download and install Ubuntu Server 18.04 or Ubuntu Desktop 18.04. After installation, run the following commands to update the software packages:

> sudo apt update
> sudo apt upgrade

Then install some commonly used tools:

> sudo apt install mailutils mutt curl vim nmap git subversion build-essential

During installation, when you are asked to select mail server configuration type, choose "Internet Site".

1. Configure Auto Update

unattended-upgrades should already be installed, but if not, install it first:

> sudo apt install unattended-upgrades

Edit /etc/apt/apt.conf.d/50unattended-upgrades to enable the following:

  • Install non-security updates
  • Email notification after upgrade
  • Auto remove unused kernel packages and dependencies
  • Auto reboot if a reboot is required after upgrade

Then

> sudo service unattended-upgrades restart

2. Nginx

For HTTP server I recommend Nginx over Apache as Nginx is not only faster, but for common setups Nginx configuration is also easier.

> sudo apt install nginx

3. Java, Maven, and Tomcat

For Ubuntu Server, install openjdk-11-jdk-headless, and for Ubuntu Desktop, install openjdk-11-jdk, e.g.

> sudo apt install openjdk-11-jdk-headless

Then install Maven and Tomcat:

> sudo apt install maven tomcat8

At the time of writing (i.e. 7/2018), there are two bugs in Ubuntu 18.04 packages:

a) The cacerts file included in OpenJDK 11 is defective and will cause all Maven dependency downloads to fail due to connection problem to HTTPS of the central repository. According to the discussions here, the easiest and surest way to fix it is to replace /etc/ssl/certs/java/cacerts with the one included in Oralce's JDK 10 for Linux (it's in lib/security after you unzip the tar.gz file).

b) The Tomcat 8 service would fail to start because it cannot find JDK. You'll need to edit /etc/default/tomcat8, uncomment the JAVA_HOME line, and set JAVA_HOME to OpenJDK 11:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

And then you can start Tomcat 8 with the following command:

> sudo service tomcat8 start

4. Node.js and NPM Global Packages

At the time of writing (i.e. 7/2018), Node.js 10 is not under LTS but will be soon, so we'll install Node.js 10 instead of 8:

> curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
> sudo apt install -y nodejs

Using sudo to install NPM global package seems to be discouraged. The NPM documentation recommends using a version manager, but I feel that changing NPM's default directory (the second option in the documentation) is better because it keeps the same command line syntax as on Windows, and it's one less tool to learn or use. So:

> mkdir ~/.npm-global
> npm config set prefix '~/.npm-global'

Edit .profile file so the PATH environment variable looks like the following:

PATH=$PATH:$HOME/.npm-global/bin

then

> source ~/.profile

And install the following global packages

> npm install -g typescript ts-node nodemon @angular/cli pm2

5. MySQL

> sudo apt install mysql-server
> sudo mysql_secure_installation

You will be asked a number of questions. Here are my suggestions for the answers:

  • VALIDATE PASSWORD plugin: No
  • root password: <whatever you choose, but it won't matter anyway -- see below>
  • Remove anonymous user: Yes
  • Disallow root login remotely: Yes
  • Remove test database: Yes
  • Reload privilege tables: Yes

On Ubuntu systems running MySQL 5.7 (and later versions), the root MySQL user is set to authenticate using the auth_socket plugin by default rather than with a password. What this means is basically that you can only log into MySQL as root if you are the system root user, not matter what root password you set in the configuration step. So instead of "mysql -u root -p", just "sudo mysql":

> sudo mysql

After that you may want to create a non-root user for regular database usage. For example:

mysql> create database cysun;
mysql> grant all privileges on cysun.* to 'cysun'@'%' identified by 'abcd' with grant option;
mysql> flush privileges;
mysql> quit

Note that the GRANT statement will automatically create the user account if it does not exist.

6. PostgreSQL

> sudo apt-get install postgresql

Again, create a regular user:

> sudo -u postgres psql template1
psql> create user cysun with createdb password 'abcd';
psql> create database cysun with owner=cysun;
psql> \q

Leave out the createdb option in the CREATE USER statement if you do not want to grant the user the privilege to create databases.

 

This page has been viewed 33172 times.