Saturday, September 30, 2017

Debian Stretch: XEN configure & create DomU PV Debian part 3

We will use xen-tools to make it easier to create guest.

Configure /etc/xen-tools/xen-tools.conf
# vi /etc/xen-tools/xen-tools.conf
...
# lvm = vg0
lvm = volGroup1
...
install-method = debootstrap
...
debootstrap-cmd = /usr/sbin/debootstrap
...
size   = 80G       # Root disk, suffix (G, M, k) required
memory = 2G # Suffix (G, M, k) required
#maxmem = 2G      # Suffix (G, M, k) optional
swap   = 3G # Suffix (G, M, k) required
# noswap = 1      # Don't use swap at all for new systems.
fs     = ext4     # Default file system for any disk
dist   = `xt-guess-suite-and-mirror --suite`
                  # Default distribution is determined by Dom0's distribution
...
gateway = [your_ip_gateway]
netmask = [your_ip_netmask]
broadcast = [your_ip_broadcast]
...
nameserver = 8.8.8.8
...
bridge = br0
...
passwd = 1
...
pygrub = 1
...
mirror = `xt-guess-suite-and-mirror --mirror`
...

You can create your guest by command
# xen-create-image --hostname xdebian801 --ip=[your_ip]
...
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done
Logfile produced at:
         /var/log/xen-tools/xdebian801.log

Installation Summary
---------------------
Hostname        :  xdebian801
Distribution    :  stretch
MAC Address     :  00:16:3E:61:28:46
IP Address(es)  :  [your_ip]
SSH Fingerprint :  SHA256:GVI1ri+NA82lDeVEf+pPgSHYFHzLe+SYkCxuTgBfEZw (DSA)
SSH Fingerprint :  SHA256:s5z6k6ek+V43NDG1CX77E81WWCVXZEOYNTEaQTXAaGM (ECDSA)
SSH Fingerprint :  SHA256:FUmWelgtmKtB/sCqrS3P5ZlttVRD/M0IVrArPnUs/8Y (ED25519)
SSH Fingerprint :  SHA256:LvrUnZE3ktnahsWFi+hXZ78+V87YZfmDKi9E01Rn+Zs (RSA)
Root Password   :  N/A

Start your guest
# xl create /etc/xen/xdebian801.cfg
# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0 11815    24     r-----     653.2
xdebian801                                   5  2048     1     -b----       3.5

State:
  • r - running
  • b - blocked
  • p - paused
  • s - shutdown
  • c - crashed
  • d - dying

Connect to your guest
# xl connect xdebian801

To make your guest start after boot/restart
# mkdir /etc/xen/auto
# ln -s /etc/xen/xdebian801.cfg /etc/xen/auto/xdebian801.cfg

Example command to override default configuration during image creation:
# xen-create-image --hostname myexample --ip=192.168.1.1  --size=40G  --swap=2G --memory=1G --vcpus=2

References:

  1. http://blog.noviantech.com/2010/06/23/debian-kernels-and-tigon-tg3-firmware/
  2. https://wiki.debian.org/Firmware
  3. https://wiki.debian.org/LVM
  4. https://wiki.debian.org/LinuxRaidForAdmins
  5. https://ycnrg.org/xen-install-os-from-iso-pv/
  6. http://hwraid.le-vert.net/

Debian Stretch: XEN configure & create DomU HVM Centos part 2

Get centos iso cd
# mkdir iso/
# cd iso
# mkdir centos7
# cd centos7
# wget http://centos.biz.net.id/7/isos/x86_64/CentOS-7-x86_64-NetInstall-1708.iso
Note: you can choose your closest mirror.

Create logical volume for guest
# lvcreate -L300g -n xcentos701-disk volGroup1
  Logical volume "xcentos701-disk" created.
# lvdisplay
  --- Logical volume ---
  LV Path                /dev/volGroup1/xcentos701-disk
  LV Name                xcentos701-disk
  VG Name                volGroup1
  LV UUID                jmP1d1-9xFo-ruio-eEXx-Vkgi-w1Ah-X4tO7B
  LV Write Access        read/write
  LV Creation host, time server, 2017-09-29 02:29:55 +0700
  LV Status              available
  # open                 0
  LV Size                300.00 GiB
  Current LE             76800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

Create guest configuration file /etc/xen/xcentos701.cfg
builder = "hvm"
name = "xcentos701"
memory = 8192
vcpus = 4
vif = [ 'mac=00:16:4f:02:02:15, ip=[your_ip], bridge=br0' ]
# Disk Devices
# A list of `diskspec' entries as described in
# docs/misc/xl-disk-configuration.txt
disk = [
  '/dev/volGroup1/xcentos701-disk,raw,xvda,rw',
  'file:/[your_home]/iso/centos7/centos7.iso,xvdc:cdrom,r'
  ]
boot = "dc"
vnc = 1
vnclisten = "[your_ip]"
vncdisplay = 0
vncpasswd = "password"

You need to use any vnc viewer to finish installation. At the end, set root password and reboot. 

If the reboot is stuck, destroy the instance.
# xl destroy xcentos701

You need to remove cdrom from configuration, edit /etc/xen/xcentos701.cfg 
builder = "hvm"
name = "xcentos701"
memory = 8192
vcpus = 4
vif = [ 'mac=00:16:4f:02:02:15, ip=[your_ip], bridge=br0' ]
# Disk Devices
# A list of `diskspec' entries as described in
# docs/misc/xl-disk-configuration.txt
disk = [
  '/dev/volGroup1/xcentos701-disk,raw,xvda,rw'
  ]
boot = "c"
We don't need vnc anymore, so we remove it (comment it out).

Start your guest
# xl create /etc/xen/xcentos701.cfg 
# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0 11815    24     r-----    5001.7
xcentos701                                   1 12288     4     -b----    9315.6

State:

  • r - running
  • b - blocked
  • p - paused
  • s - shutdown
  • c - crashed
  • d - dying


To connect to your guest
# xl console xencentos701

To make your guest start after boot/restart
# mkdir /etc/xen/auto
# ln -s /etc/xen/xcentos701.cfg /etc/xen/auto/xcentos701.cfg

Add user and allow su/sudo
# adduser [your_user]
# usermod -aG wheel [your_user]

References:

  1. http://blog.noviantech.com/2010/06/23/debian-kernels-and-tigon-tg3-firmware/
  2. https://wiki.debian.org/Firmware
  3. https://wiki.debian.org/LVM
  4. https://wiki.debian.org/LinuxRaidForAdmins
  5. https://ycnrg.org/xen-install-os-from-iso-pv/
  6. http://hwraid.le-vert.net/

Debian Stretch: XEN part 1

Install minimum Debian Stretch and add some tools
# apt-get install net-tools
# apt-get install fail2ban
# apt-get install debian-goodies
# apt-get install ntp
# apt-get install dnsutils

Install Firmware
1. Add firmware repository
# vi /etc/apt/sources.list
# NON FREE
deb http://httpredir.debian.org/debian stretch main contrib non-free
# apt-get update 
2. Install firmware
# apt-get install firmware-linux-nonfree

To configure timezone
# dpkg-reconfigure tzdata

If your hardware use LSI RAID for my case Mega Raid, you need to monitor your disks status. Install this tool.
1. Add Raid tools repository
# wget https://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key
# apt-key add ./hwraid.le-vert.net.gpg.key
# vi /etc/apt/sources.list
...
deb ​http://hwraid.le-vert.net/debian stretch main
...
# apt-get update 
2. Install Raid tools to monitor disks status.
# apt-get install megaraid-status
# megaraidsas-status
-- Arrays informations --
-- ID | Type | Size | Status
a0d0 | RAID 1 | 931GiB | optimal

-- Disks informations
-- ID | Model | Status | Warnings
a0e32s0 | SEAGATE ST1000NM0001 931GiB | online
a0e32s1 | SEAGATE ST1000NM0023 931GiB | online
a0e32s2 | SEAGATE ST1000NM0001 | ready
a0e32s3 | SEAGATE ST31000640SS 931GiB | predictive-failure

There is at least one disk/array in a NOT OPTIMAL state.

Install & configure LVM (Logical Volume Manager)
1. Install LVM2
# apt-get install lvm2 
2. Create Physical Volume on unused partition
# pvcreate /dev/sda5
WARNING: ext4 signature detected on /dev/sda5 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sda5.
  Physical volume "/dev/sda5" successfully created.
3. Create Volume Group
# vgcreate volGroup1 /dev/sda5
  Volume group "volGroup1" successfully created
# vgdisplay
  --- Volume group ---
  VG Name               volGroup1
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               784.78 GiB
  PE Size               4.00 MiB
  Total PE              200903
  Alloc PE / Size       0 / 0
  Free  PE / Size       200903 / 784.78 GiB
  VG UUID               LzgeKn-N4EO-R4mV-YbRB-6Utc-7GmB-F0ALs1

Install Xen 4.8 (default in stretch)
# apt-get install xen-system-amd64 xen-tools

Make prioritise boot xen kernel
# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
# update-grub
Including Xen overrides from /etc/default/grub.d/xen.cfg
WARNING: GRUB_DEFAULT changed to boot into Xen by default!
         Edit /etc/default/grub.d/xen.cfg to avoid this warning.
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
done

Network configuration for bridge
# vi /etc/network/interfaces
# The primary network interface
auto eno1
iface eno1 inet manual

# Bridge
#allow-hotplug eno1
auto br0
iface br0 inet static
   address [your_ip]/24
   gateway [your_gateway]
   # dns-* options are implemented by the resolvconf package, if installed
   dns-nameservers 8.8.8.8 208.67.222.222
   bridge_ports eno1
# shutdown -r now

Edit /etc/xen/xl.conf to make bridge br0 as default network bridge
# vi /etc/xen/xl.conf
...
# default bridge device to use with vif-bridge hotplug scripts
#vif.default.bridge="xenbr0"
vif.default.bridge="br0"
...

Done! :)

Debian Stretch: XEN part 1
Debian Stretch: XEN configure & create DomU PV Debian part 3
Debian Stretch: XEN configure & create DomU HVM Centos part 2
Debian Stretch: XEN configure & create DomU PV ubuntu xenial part 4

To show memory:
# xl info | grep memory
total_memory           : 24530
free_memory            : 3122
sharing_freed_memory   : 0
sharing_used_memory    : 0

To show VCPU:
# xl info | grep cpu
nr_cpus                : 24
max_cpu_id             : 47
cpu_mhz                : 2000
free_cpus              : 0

To show volume group free space:
# vgdisplay | grep Free
  Free  PE / Size       71367 / 278.78 GiB

References:

  1. http://blog.noviantech.com/2010/06/23/debian-kernels-and-tigon-tg3-firmware/ 
  2. https://wiki.debian.org/Firmware 
  3. https://wiki.debian.org/LVM
  4. https://wiki.debian.org/LinuxRaidForAdmins
  5. https://ycnrg.org/xen-install-os-from-iso-pv/
  6. http://hwraid.le-vert.net/




Friday, September 29, 2017

WHM/Cpanel: install on centos 7 (1708)

Recommendation: install whm/cpanel on minimum Centos 7

Install yum util and network tool
# yum install yum-utils net-tools

Disable SeLinux
# vi /etc/selinux/config
...
SELINUX=disabled
...

Set  fully qualified hostname 
# hostname example.[your_domain]

Download whm/cpanel installer script
# wget https://securedownloads.cpanel.net/latest
--2017-09-29 02:02:22--  https://securedownloads.cpanel.net/latest
Resolving securedownloads.cpanel.net (securedownloads.cpanel.net)... 208.74.123.12
Connecting to securedownloads.cpanel.net (securedownloads.cpanel.net)|208.74.123.12|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26720 (26K)
Saving to: ‘latest’

100%[======================================>] 26,720       125KB/s   in 0.2s

2017-09-29 02:02:23 (125 KB/s) - ‘latest’ saved [26720/26720]

Run whm/cpanel installer
# chmod 744 latest
# ./latest

It may takes some times. Mine, it takes al least 40 minutes.

Continue configure your whm/cpanel via web, for example https://[youripaddress]:2087

Thursday, September 21, 2017

Debian Stretch: replace php5 to 7.0

You can remove php5 by command
 # apt-get purge *php5*

Delete any configuration exist
# rm -R /etc/php5/

You need to know which php5 library you used and upgrade it to php7.0.
Note: php7.1 not available in Debian Stretch currently.

Show available php7.0
# apt-cache search 'php7.0'
php-amqp - AMQP extension for PHP
php-apcu - APC User Cache for PHP
php-all-dev - package depending on all supported PHP development packages
php-gearman - PHP wrapper to libgearman
php-geoip - GeoIP module for PHP
php-gmagick - Provides a wrapper to the GraphicsMagick library
php-gnupg - PHP wrapper around the gpgme library
php-igbinary - igbinary PHP serializer
php-imagick - Provides a wrapper to the ImageMagick library
php-libsodium - PHP wrapper for the Sodium cryptographic library
php-mailparse - Email message manipulation for PHP
php-memcache - memcache extension module for PHP
php-memcached - memcached extension module for PHP, uses libmemcached
php-mongodb - MongoDB driver for PHP
php-msgpack - PHP extension for interfacing with MessagePack
php-oauth - OAuth 1.0 consumer and provider extension
php-http - PECL HTTP module for PHP Extended HTTP Support
php-pinba - Pinba module for PHP
php-propro - propro module for PHP
php-radius - radius client library for PHP
php-raphf - raphf module for PHP
php-redis - PHP extension for interfacing with Redis
php-rrd - PHP bindings to rrd tool system
php-smbclient - PHP wrapper for libsmbclient
php-solr - PHP extension for communicating with Apache Solr server
php-ssh2 - Bindings for the libssh2 library
php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP
php-uploadprogress - file upload progress tracking extension for PHP
php-uuid - PHP UUID extension
php-yac - YAC (Yet Another Cache) for PHP
php-yaml - YAML-1.1 parser and emitter for PHP
php-zmq - ZeroMQ messaging bindings for PHP
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-bcmath - Bcmath module for PHP
php7.0-bz2 - bzip2 module for PHP
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-common - documentation, examples and common module for PHP
php7.0-curl - CURL module for PHP
php7.0-dba - DBA module for PHP
php7.0-dev - Files for PHP7.0 module development
php7.0-enchant - Enchant module for PHP
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-json - JSON module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-opcache - Zend OpCache module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-pspell - pspell module for PHP
php7.0-readline - readline module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-soap - SOAP module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-sybase - Sybase module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0-zip - Zip module for PHP
php-remctl - PECL module for Kerberos-authenticated command execution
php-tideways - Tideways PHP Profiler Extension
php-xdebug - Xdebug Module for PHP


Now you can choose and install php7.0. For instant:
# apt-get install php7.0 php7.0-gd php7.0-pgsql php7.0-cli php7.0-common php7.0-mcrypt php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0-xml php7.0-xmlrpc php7.0-bz2 php7.0-zip libapache2-mod-php7.0

Note:
  1. Configuration folder will change from /etc/php5 to /etc/php/7.0/.
  2. File php.ini will located in /etc/php/7.0/apache2/php.ini.