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.




Wednesday, September 20, 2017

Debian Jessie: change MySql distribution to MySql community

Debian Stretch does not shipped MySql. Before upgrade your Debian Jessie into Stretch, you need to change your MySql Debian distribution into MySql Community.

Install MySql dependency
# apt-get install lsb-release

Download MySql apt configuration from https://dev.mysql.com/get/mysql-apt-config_0.8.7-1_all.deb
# wget --no-check-certificate https://dev.mysql.com/get/mysql-apt-config_0.8.7-1_all.deb
Note: File name may change without notice, check latest mysql-apt-config at https://dev.mysql.com/downloads/repo/apt/

"The MySQL APT repository can only replace distributions of MySQL maintained and distributed by Debian or Ubuntu. It cannot replace any MySQL forks found either inside or outside of the distributions' native repositories. To replace such MySQL forks, you have to uninstall them first before you install MySQL using the MySQL APT repository. Follow the instructions for uninstallation from the forks' distributors and, before you proceed, make sure you back up your data and you know how to restore them to a new server. "

Backup MySql
# mysqldump --all-database > backup_all_201709.sql -u root -p

Remove your MySql Distribution
# apt-get --purge remove mysql-server mysql-client
# apt-get --purge remove mysql-server-5.5 mysql-client-5.5 // if required
# apt-get --purge remove mysql-server-core-5.5 mysql-client-core-5.5
// if required
Note: check your mysql using 

# aptitude search mysql-server

Install MySql apt configuration.
# dpkg -i mysql-apt-config_0.8.7-1_all.deb
Choose MySql 5.7 for stable version and continue by click Ok. It will create apt repository file like this:

# cat /etc/apt/sources.list.d/mysql.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out entries below, but any other modifications may be lost.
# Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications.
deb http://repo.mysql.com/apt/debian/ jessie mysql-apt-config
deb http://repo.mysql.com/apt/debian/ jessie mysql-5.7
deb http://repo.mysql.com/apt/debian/ jessie mysql-tools
#deb http://repo.mysql.com/apt/debian/ jessie mysql-tools-preview
deb-src http://repo.mysql.com/apt/debian/ jessie mysql-5.7


Run update and install
# apt-get update
# apt-get install mysql-server mysql-client
At the end of installation, you will be ask for MySql root password (Note: this is not root Linux user)

# service mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled)
   Active: active (running) since Wed 2017-09-20 09:24:13 WIB; 8s ago
 Main PID: 8432 (mysqld)
   CGroup: /system.slice/mysql.service
           └─8432 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mys...

Sep 20 09:24:13 igamdeb8 systemd[1]: Started MySQL Community Server.
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


Run mysql_upgrade:
# mysql_upgrade -u root -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Upgrading the sys schema.
Checking databases.
...



Resotre your database
# mysql -u root -p < backup_all_201709.sql
Enter password:


References:
https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/
https://dev.mysql.com/doc/refman/5.7/en/backup-and-recovery.html
https://dev.mysql.com/doc/refman/5.7/en/reloading-sql-format-dumps.html

Debian Stretch: Installing MySql (for fresh installation)

Remove all MariaDB
# apt-get --purge remove mysql-server mysql-client 
or 
# apt-get --purge remove mariadb-server-10.1 mariadb-server-core-10.1 mariadb-client-10.1 
# apt-get autoclean && apt-get autoremove
Note: option purge will remove all mariadb database

Install MySql dependency

# apt-get install lsb-release

Download MySql apt configuration from https://dev.mysql.com/get/mysql-apt-config_0.8.7-1_all.deb
# wget --no-check-certificate https://dev.mysql.com/get/mysql-apt-config_0.8.7-1_all.deb
Note: File name may change without notice, check latest mysql-apt-config at https://dev.mysql.com/downloads/repo/apt/

Install MySql apt configuration.
# dpkg -i mysql-apt-config_0.8.7-1_all.deb
Choose MySql 5.7 for stable version and continue by click Ok. It will create apt repository file like this:
# cat /etc/apt/sources.list.d/mysql.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out entries below, but any other modifications may be lost.
# Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications.
deb http://repo.mysql.com/apt/debian/ stretch mysql-apt-config
deb http://repo.mysql.com/apt/debian/ stretch mysql-5.7
deb http://repo.mysql.com/apt/debian/ stretch mysql-tools
#deb http://repo.mysql.com/apt/debian/ stretch mysql-tools-preview
deb-src http://repo.mysql.com/apt/debian/ stretch mysql-5.7

Run apt update
# apt-get update

Now you are ready to install MySql by issuing command
# apt-get install mysql-server mysql-client
Reading package lists... Done
Building dependency tree     
Reading state information... Done
The following additional packages will be installed:
  libmecab2 mysql-community-client mysql-community-server
The following NEW packages will be installed:
  libmecab2 mysql-client mysql-community-client mysql-community-server
  mysql-server
0 upgraded, 5 newly installed, 0 to remove and 3 not upgraded.
Need to get 36.8 MB of archives.
After this operation, 254 MB of additional disk space will be used.
Do you want to continue? [Y/n]

At the end of installation, you will be ask for MySql root password (Note: this is not root Linux user)
# service mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; bad; vendor preset: enable
   Active: active (running) since Wed 2017-09-20 08:04:27 WIB; 24s ago
 Main PID: 15189 (mysqld)
   CGroup: /system.slice/mysql.service
           └─15189 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysql

Sep 20 08:04:23 ca01 systemd[1]: Starting MySQL Community Server...
Sep 20 08:04:27 ca01 systemd[1]: Started MySQL Community Server.
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


Reference:
  1. http://mysqlrelease.com/2017/06/debian-9-and-mysql-watch-out/
  2. https://dev.mysql.com/downloads/repo/apt/

Monday, September 18, 2017

Debian jessie: upgrade to Debian 9 (codename stretch)

Note:
  1. Debian 9 Stretch does not include MySql, your MySql will replace with MariaDB 10.1. Follow this step  to keep your MySql.
  2. PHP 7.0 will be use. Your PHP application may be not support it.
Upgrade your system and application before performing Debian 9 upgrade.
# apt-get update && apt-get upgrade -y
Note: restart your system if needed.

Install apt-listchanges
# apt-get install apt-listchanges

Edit your apt source and add Debian 9 (stretch) repository:
#deb http://security.debian.org/ jessie/updates main
#deb-src http://security.debian.org/ jessie/updates main

# Indonesia (main)
#deb http://kambing.ui.ac.id/debian/ jessie main
deb http://kambing.ui.ac.id/debian/ stretch main contrib

# NON FREE
#deb http://httpredir.debian.org/debian jessie main contrib non-free

# BACKPORT
#deb http://ftp.de.debian.org/debian jessie-backports main

# Google chrome
#deb http://dl.google.com/linux/chrome/deb/ stable main
Note: You can choose other closest mirror to you or use "deb http://mirrors.kernel.org/debian stretch main contrib".

To add CD-ROM
# apt-cdrom add

Do minimal upgrade by running apt update and apt-get upgrade
# apt-get update
...
# apt-get upgrade
...

You are ready for distribution upgrade. Edit /etc/apt/sources.list
#deb http://security.debian.org/ jessie/updates main
#deb-src http://security.debian.org/ jessie/updates main
deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main

#optional
#deb  http://deb.debian.org/debian stretch-updates main

# Indonesia (main)
# deb http://mirrors.kernel.org/debian stretch main contrib
deb http://kambing.ui.ac.id/debian/ stretch main contrib

# NON FREE
deb http://httpredir.debian.org/debian stretch main contrib non-free

# BACKPORT
deb http://ftp.de.debian.org/debian stretch-backports main

Note: you need to enable NON FREE repository for firmware upgrade

Do distribution upgrade
# apt-get update && apt-get dist-upgrade

Distribution upgrade will take some times depend on your connection speed. At the end of packages upgrade, you will need to interact with system.
Restart your system and enable 3rd party repository such as google chrome, virtualmin, odoo, etc. Perform final upgrade/update.
# apt-get update && apt-get upgrade -y

Your Debian 9 (stretch) is ready. :)
# uname -an
Linux saturn 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 GNU/Linux

Note:
  1. A new configuration may apply, please carefully to choose a new configuration or your existing one (the option show as keep local).
  2. Default document root apache2 folder will change from /var/www/ to /var/www/html.
  3. Apache2 will run under linux user and group 'www-data'.
  4. To replace php5 to php7.0 follow this step

References: