Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Pre Installation Stuff

Code Block
languagebash
yum install -y epel-release

yum update -y
yum upgrade -y

yum install -y git mariadb mariadb-server httpd php php-cli php-mysql php-snmp php-mcrypt php-mbstring php-pdo dhcp tftp tftp-server net-snmp net-snmp-devel flex flex-devel cacti mod_ssl bzip2 gcc bison bc wget composer bind bind-utils firewalld graphviz

# create folders
mkdir /etc/dhcp/nms
mkdir -p /tftpboot/cm

chown -R apache /etc/dhcp/nms /tftpboot
chmod o+rx /etc/dhcp/
chown -R apache /etc/dhcp/ /etc/named.conf /var/named/dynamic/
chown apache /var/named/ 
chmod g+w /var/named/dynamic/

NOTE: see Extra Section to install PHP 5.6 for Laravel 5

Code Block
languagebash
# add IUS repo
wget https://centos7.iuscommunity.org/ius-release.rpm
rpm -Uvh ius-release.rpm

# update php version with yum replace plugin
yum install yum-plugin-replace
yum replace php --replace-with php56u

Database

Code Block
languagebash
# mysql enable
systemctl start mariadb
systemctl enable mariadb

# set root and make sql production
mysql_secure_installation

# create mysql db
mysql -u root -p -e "create database db_lara;"

Laravel Specific Stuff

Code Block
languagebash
# install composer (dependency manager)
# NOTE: depraceated .. could / will be installed via yum
#curl -sS https://getcomposer.org/installer | php
#mv composer.phar /usr/local/bin/composer

# clone project 
git clone https://github.com/schmto/nmsprime.git /var/www/lara

cd /var/www/lara

# create/edit the .env file (you can take the example file as starting point)
cp .env.example .env
chmod 640 .env
chgrp apache .env
vim .env

# install packages (this will need .env file with properly configured DB_* fields)
composer install

# access rights
chown -R apache storage/ bootstrap/cache/

# create application key
php artisan key:generate

# enable/disable modules for your needs
php artisan module:list
php artisan module:[enable|disable] <MODULE>

# create the database tables (using migrations)
php artisan migrate
php artisan module:migrate
Info

Note: all hosts that run with local settings are defined in /bootstrap/start.php

edit app/config/database.php or app/config/local/database.php with the msql connection properties

use /.env.php (on production server) for global and /.env.local.php to describe local settings – edit files to your needs

Info
titleClone from Roetzer Engineering Repo
# Historical Stuff: Clone from Roetzer Engineering Repo
# Note: 1. Server must have access to atlassian repo server # 2. change username
git config --global http.sslVerify false
git clone https://<user>@devel.roetzer-engineering.com:3128/stash/scm/pro/laravel.git /var/www/lara

 

Disable SELinux

Code Block
languagebash
# in /etc/sysconfig/selinux

echo "
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0
" > /etc/sysconfig/selinux

# disable at runtime - NOTE: it's still possible that a reboot is necessary
setenforce  0
Info
titlealternative
# or prevent blocking the app/storage directory
sudo su
chcon -R -h -t httpd_sys_script_rw_t /var/www/lara/storage

Interfaces

Code Block
languagebash
# create VLANs - Attention: edit "if" (interface) if necessary 
if="eno2"
for word in 10 100 110 120 130; do 
Z=`echo "$word-100" | bc`; 
if [ $Z -lt 0 ]; 
then ip=192.168.253.1; 
else ip=172.20.$Z.1; 
fi;
echo "DEVICE=$if.$word
BOOTPROTO=none
ONBOOT=yes
IPADDR=$ip
PREFIX=24
VLAN=yes
" > /etc/sysconfig/network-scripts/ifcfg-$if.$word
done
Info

on VMs to avoid dhcp trouble on a bridged interface disable all ip stuff on the major provisioning interface

Code Block
if="eno2"
echo "
DEVICE=$if
ONBOOT=yes
" > /etc/sysconfig/network-scripts/ifcfg-$if

Firewall

Code Block
languagebash
# assign internal network interfaces (vlans) to internal firewall zone (see Buglist: https://bugs.centos.org/view.php?id=7407)
for i in `find /etc/sysconfig/network-scripts/ -name ifcfg-*.*`; do echo "ZONE=internal" >> $i; done

# restart network that firewalld automatically assigns the interfaces
systemctl enable firewalld
systemctl start firewalld
systemctl restart network.service

# firewalld
# remove not required services - ATTENTION: if ssh runs on private network then switch public and internal in following cmds
for word in `firewall-cmd --list-services --zone=public`; do if [ $word != "ssh" ]; then firewall-cmd --remove-service=$word --zone=public --permanent; fi; done
for word in `firewall-cmd --list-services --zone=internal`; do firewall-cmd --remove-service=$word --zone=internal --permanent; done

# assign services
for word in ssh https; do firewall-cmd --add-service=$word --zone=public --permanent; done
for word in tftp dhcp dns; do firewall-cmd --add-service=$word --zone=internal --permanent; done
firewall-cmd --add-port=37/udp --zone=internal --permanent

# this is the port used to access the admin part of NMS Prime - feel free to restrict access to some IPs
# to get all working we allow connections for complete zone public
firewall-cmd --add-port=8080/tcp --zone=public --permanent

# restart
firewall-cmd --reload
Info
  • There are two different lists: the active list and the permanent list
  • Use --permanent flag to work with permanent list
  • permanent list will only be active after --reload command
  • only permanent commands will generate /etc/firewalld/... files

 

Apache

SSL

Code Block
languagebash
#
# SSL
# Self Signed Certificat
#
mkdir /etc/httpd/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/httpd/ssl/httpd.pem -keyout /etc/httpd/ssl/httpd.key

Configuration for Laravel Webspace

Code Block
languagebash
echo "
<VirtualHost *:443>
    SSLEngine On
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4
    SSLCertificateFile /etc/httpd/ssl/httpd.pem
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</VirtualHost>

Alias /lara /var/www/lara/public

<Directory /var/www/lara/public>
  AllowOverride all
</Directory>
" > /etc/httpd/conf.d/lara.conf
Code Block
languagebash
# start webserver
systemctl enable httpd
systemctl start httpd
Info

RewriteBase in laravel public/.htaccess must match with apache mods config

Code Block
# add the following line to /var/www/lara/public/.htaccess to change the root directory for the webbrowser
RewriteBase /lara/

php_flag safe_mode off # disables some functionalities for security purposes (deprecated)

This is already done in GIT Repo and should be only relevant for new projects and maybe debug problems

TFTP

Code Block
languagebash
# edit tftp config file
echo "
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot -v			# changed root dir
        disable                 = no						# enable
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}" > /etc/xinetd.d/tftp

# start server
yum install xinetd
systemctl enable xinetd
systemctl start xinetd

DOCSIS Config File Tool

Requirements

...

titlerequired packages
# requires following packages

...

This is recommend and allows running the latest stable git version from docsis tool: see https://github.com/rlaager/docsis.git

Code Block
languagebash
titleVersion 0.9.8
# yum 
yum install -y net-snmp net-snmp-devel flex flex-devel bison gcc

Install from source code

There are two different ways go install – From:

  1. GIT repo
  2. wget

1. Install from git repo

This is recommend and allows running the latest stable git version from docsis tool: see https://github.com/rlaager/docsis.git

Code Block
languagebash
titleVersion 0.9.8
# prepare yum install libtool glib2-devel
cd
~
mkdir git

# downloadprepare as cdroot gituser
git clone https://github.com/rlaager/docsis.git docsis

# install
cd docsis
./autogen.sh
./configure
make && make install

...

deprecated: Install with wget

...

to get a special version

Code Block
languagebash
titleold version
# download
wget http://sourceforge.net/projects/docsis/files/docsis/docsis-0.9.6/docsis-0.9.6.tar.bz2

# unzip
tar jxf docsis-0.9.6.tar.bz2
cd docsis*

# install
./configure
make
sudo make install

 

Last steps

Code Block
languagebash
cd /var/www/lara

# fill database tables with examples - only useful for testing or development
php artisan db:seed
php artisan module:seed

# Create CM and CPE configfiles
php artisan nms:configfile

# Create dhcp files
php artisan nms:dhcp

You now should be able to login to your NMS installation – initial user is “root” with password “toor” (you should at least change the password NOW!)

 

TODO

  • generic interface configuration (scripts)

 

 

...