CentOS 7 Server note

Prelude

This article is mainly to help experienced user install and setup CentOS 7 Server.

Prerequisites

  • You are familiar with CentOS, at least you have some experience working on Linux system.
  • You are familiar with basic bash/shell command

Things to do after installing CentOS server

  • How to setup your server

Firewall setup

sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp

sudo firewall-cmd --reload

SSH server setup

!!! For production environment, SSH should be secured by the CA

  • Install SSH if it is not done yet

    ## yum install openssh openssh-server openssh-clients openssl-libs
    
  • Configure SSH

    ## backup default config 
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
    sudo chmod a-w /etc/ssh/sshd_config.ori
    
    ## use any editor to update sshd_config 
    sudo vi /etc/ssh/sshd_config 
    
    ## uncomment PasswordAuthentication yes to allow remote password login
    ## Password authentication is only for test environment
    
    ## setup ssh auto-start onboot
    sudo systemctl restart sshd 
    

Update Time Zone if it is incorrect

ls -l /etc/localtime ## check the time zone

sudo timedatectl list | grep New_York ## find the time zone by the city
sudo timedatectl set-timezone America/New_York

Install Git

  • Option 1: You can use yum to install git, but it is quite out-of-date. The version of git is 1.8.x

    sudo yum install git
    git --version
    
  • Option 2: Download the latest stable release of Git and compile the software from source. (Recommended)

Install build tools

sudo yum groupinstall "Development Tools"

sudo yum install gettext-devel openssl-devel perl-CPAN perl-devel \
    zlib-devel libcurl-devel expat-devel

sudo yum install yum-utils

Download the latest release

wget https://github.com/git/git/archive/v2.x.x.tar.gz -O git.tar.gz
tar -zxf git.tar.gz
cd git-*
make configure
./configure --prefix=/usr/local
sudo make install
git --version

Setup a better Vim

sudo yum isntall vim-enhanced

Install Tmux

sudo yum install tmux
  • Most useful tmux commands

Ctrl+b “ — split pane horizontally.

Ctrl+b % — split pane vertically.

Ctrl+b arrow key — switch pane.

Hold Ctrl+b, don’t release it and hold one of the arrow keys — resize pane.

Ctrl+b c — ©reate a new window.

Ctrl+b , — rename reate a new window.

Ctrl+b n — move to the (n)ext window.

Ctrl+b p — move to the (p)revious window.

Install python 3

You will only find Python 2 on CentOS by default. In order to install the latest python3, we need to install IUS to which stands for Inline with Upstream Stable.

sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install python36u

### Install development package
sudo yum -y insall python-devel python36u-devel

Install nodejs

  • Nodejs 6.x

    sudo yum -y install nodejs
    
  • Nodejs 8.x

    curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
    
  • Upgrade NPM

    sudo npm install -g npm
    sudo npm install -g typescript
    sudo mpm install -g yarn
    

install docker CE (CentOS 7)

## add repo
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

## check docker.list
yum list docker-ce --showduplicates | sort -r

## install docker engine
sudo yum install docker-ce

docker -v 

Install JDK 8

  • Downlaod the JDK from Oracle website.

    
    ## At the confirmation prompt, enter y 
    ## then RETURN to continue with the installation.
    sudo yum install java-1.8.0-openjdk-devel
    
    
    java -version
    
  • Test JDK with a simple HelloWorld program

    import java.util.Calendar;
    
    class HelloWorld {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int day = cal.get(Calendar.DATE);
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int minute = cal.get(Calendar.MINUTE);
        String username = System.getProperty("user.name");
        System.out.println(username+ ": Hello World! ");
        System.out.println(year + "/" + month + "/" + day + " " + hour + ":" + minute);
    }
    }
    
  • Compile and run the program

    javac HelloWorld.java
    java HelloWorld.java
    

Install Go

  • Install Go

    cd /tmp
    curl -LO https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
    
    ## check hash
    shasum -a 256 go*linux-amd64.tar.gz
    
    ## install tar ball
    sudo tar -C /usr/local -xvzf go1.9.2.linux-amd64.tar.gz
    
  • Setup GOROOT

    cd /etc/profile.d
    ## Create a path.sh script
    sudo vi path.sh
    
  • Copy following code into path.sh

    export PATH=$PATH:/usr/local/go/bin
    
  • Setup local GOBIN, GOPATH

    export GOBIN="$HOME/projects/go/bin"
    export GOPATH="$HOME/projects/go/src"
    export PATH
    
  • Create a simple hello.go file to test

    package main                                                        
                                                                        
    import (                                                            
    "fmt"                                                           
    "log"                                                           
    "os/user"                                                       
    )                                                                   
                                                                        
    func main(){                                                        
    user, err := user.Current()                                 
    if err != nil {                                             
            log.Fatal(err)                                      
    }                                                            
    fmt.Printf(user.Name + " said : Hello World! \n" )            
    }                                                                   
    
  • Run the program

    go run $GOPATH/hello.go
    go install $GOPATH/hello.go
    $GOBIN/hello
    

Install Cmake

sudo yum install epel-release
sudo yum install cmake3
sudo ln -s /usr/bin/cmake3 /usr/bin/cmake

Install Rust

curl -f -L https://static.rust-lang.org/rustup.sh -O
sh rustup.sh
rustc --version

Install PHP 7

  • install and enable EPEL and Remi repository

    sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    
  • install yum-utils

    sudo yum install yum-utils
    
  • Enable PHP 7 repo

    sudo yum-config-manager --enable remi-php72  
    
  • Install PHP

    sudo yum install php php-mcrypt php-cli php-gd php-curl php-mysql \
    php-ldap php-zip php-fileinfo 
    

Install clang

sudo yum install llvm
sudo yum install clang