Lewati ke isi

Pemutakhiran versi - iTop

Persiapan

Persyaratan

Komponen Minimum Didukung Disarankan
PHP 5.6 7.2 7.1
MySQL 5.5.3 5.7
MariaDB 5.5 10.3 10.1

PHP

#
dnf module reset php
dnf module install -y php:remi-7.2
dnf install -y php-mysqlnd php-xml php-cli php-soap php-ldap php-gd php-zip php-json php-mbstring graphviz
#
cp /etc/php.ini{,.`date +"%Y%m%d"`}
sed --in-place "s/^memory_limit = .*/memory_limit = 256M/g" /etc/php.ini
#
systemctl restart httpd php-fpm

PHP APCu (pilihan & dipertimbangkan)

#
dnf install -y php-pecl-apcu
dnf install -y php-pear httpd-devel pcre-devel gcc make
systemctl restart httpd php-fpm
#
cp /etc/php.ini{,.`date +"%Y%m%d"`}
cat << EOF >> /etc/php.ini
[apcu]
apc.enabled=1
# Memory Segments
apc.shm_size=512M
## PHP file cache 1 hour ##
apc.ttl=3600
## User cache 2 hour ##
apc.user_ttl=7200
## Garbage collection 1 hour ##
apc.gc_ttl=3600
EOF

#
systemctl restart httpd php-fpm

MariaDB

cat << EOF >> /etc/my.cnf.d/itop.cnf
[mysqld]
innodb_buffer_pool_size = 512M
query_cache_size = 32M
query_cache_limit = 1M
EOF

Umum

# variabel umum
DOMAIN_ITOP=tadah.proxsis.co.id
LOKASI_DIREKTORI="/var/www/$DOMAIN_ITOP/html"
PENGGUNA_PELADEN_WEB="apache"
GRUP_PELADEN_WEB="apache"
LOKASI_CADANGAN="$HOME/cadangan"
#
mkdir $LOKASI_CADANGAN
#
systemctl stop httpd php-fpm

Proses

  1. Menghentikan apache2 pada app02-itop
  2. Snaphost Droplet app02-itop
  3. Mencadangkan pangkalan data app02_tadah yang saat ini digunakan

Pencadangan pangkalan data

# akses ke db02-mariadb104
ssh -v do-db02-mariadb104-01
# variable
PELADEN_SUMBER="localhost"
PORTA_SUMBER="3306"
PANGKALAN_DATA_SUMBER="skema_pangkalan_data"
NAMA_BERKAS_SQL="${PANGKALAN_DATA_SUMBER}_`date +"%Y%m%d"`.sql"
PENGGUNA_CADANG_PULIH="root"

# pencadangan pangkalan data
mysqldump --single-transaction \
  --quick \
  -h $PELADEN_SUMBER \
  -P $PORTA_SUMBER \
  -u $PENGGUNA_CADANG_PULIH \
  -p $PANGKALAN_DATA_SUMBER \
  > $NAMA_BERKAS_SQL

Memindahkan cadangan ke peladen target

#
ssh -v peladen-data-sumber

# variable
PELADEN_APLIKASI="localhost"
PELADEN_PANGKALAN_DATA="localhost"
PENGGUNA_APLIKASI="app00_kecebadai"
PENGGUNA_CADANG_PULIH="root"
PANGKALAN_DATA_APLIKASI="app00_kecebadai"
SANDI_APLIKASI="lalalalililu"
CHARSET="utf8mb4"
COLLATION="utf8mb4_general_ci"

# membuat pangkalan data, pengguna aplikasi dan memberikan aksesnya
mysql -uroot -hlocalhost -p <<EOF
CREATE DATABASE ${PANGKALAN_DATA_APLIKASI} CHARACTER SET = '${CHARSET}' COLLATE = '${COLLATION}';
GRANT ALL PRIVILEGES ON ${PANGKALAN_DATA_APLIKASI}.* TO '${PENGGUNA_APLIKASI}'@'${PELADEN_APLIKASI}' IDENTIFIED BY '${SANDI_APLIKASI}';
FLUSH PRIVILEGES;
EOF

# pemulihan menggunakan akun root
mysql -u $PENGGUNA_CADANG_PULIH -h $PELADEN_PANGKALAN_DATA \
  -p $PANGKALAN_DATA_APLIKASI \
  < $NAMA_BERKAS_SQL

2.4.x - 2.5.x

# variabel khusus
VERSI_ITOP="2.5.1"
RILIS_ITOP="4123"
VERSI_SEBELUMNYA="itop24"
BERKAS_CADANGAN="$LOKASI_CADANGAN/$VERSI_SEBELUMNYA"
#
tar -czvf $BERKAS_CADANGAN-`date +"%Y%m%d%H%M"`.tar.gz --exclude "*.tar.gz" $LOKASI_DIREKTORI/*
#
systemctl stop httpd php-fpm
#
rm -rf $LOKASI_DIREKTORI/{*.*,addons,application,core,css,datamodels,dictionaries,documentation,env-test,images,index.php,js,lib,pages,portal,setup,sources,navigator,synchro,webservices}
#
wget https://sourceforge.net/projects/itop/files/itop/$VERSI_ITOP/iTop-$VERSI_ITOP-$RILIS_ITOP.zip
mkdir $VERSI_ITOP
unzip iTop-$VERSI_ITOP-$RILIS_ITOP.zip -d $VERSI_ITOP
cp -aRv ./$VERSI_ITOP/web/* $LOKASI_DIREKTORI
chown -Rv $PENGGUNA_PELADEN_WEB:$GRUP_PELADEN_WEB $LOKASI_DIREKTORI
chmod -Rv 644 $LOKASI_DIREKTORI/conf/production/config-itop.php
#
restorecon -Rv $LOKASI_DIREKTORI
#
systemctl restart httpd php-fpm

2.5.x - 2.6.x

# variabel khusus versi
VERSI_ITOP="2.6.3"
RILIS_ITOP="5092"
VERSI_SEBELUMNYA="itop25"
BERKAS_CADANGAN="$LOKASI_CADANGAN/$VERSI_SEBELUMNYA"
#
tar -czvf $BERKAS_CADANGAN-`date +"%Y%m%d%H%M"`.tar.gz --exclude "*.tar.gz" $LOKASI_DIREKTORI/*
#
systemctl stop httpd php-fpm
#
rm -rf $LOKASI_DIREKTORI/{*.*,addons,application,core,css,datamodels,dictionaries,documentation,env-test,images,index.php,js,lib,pages,portal,setup,sources,navigator,synchro,webservices}
#
wget https://sourceforge.net/projects/itop/files/itop/$VERSI_ITOP/iTop-$VERSI_ITOP-$RILIS_ITOP.zip
mkdir $VERSI_ITOP
unzip iTop-$VERSI_ITOP-$RILIS_ITOP.zip -d $VERSI_ITOP
cp -aRv ./$VERSI_ITOP/web/* $LOKASI_DIREKTORI
chown -Rv $PENGGUNA_PELADEN_WEB:$GRUP_PELADEN_WEB $LOKASI_DIREKTORI
chmod -Rv 644 $LOKASI_DIREKTORI/conf/production/config-itop.php
#
matchpathcon -V $LOKASI_DIREKTORI/*
restorecon -Rv $LOKASI_DIREKTORI
#
systemctl restart httpd php-fpm

2.6.x - 2.7.x

# variabel khusus
VERSI_ITOP="2.7.0-2"
RILIS_ITOP="5689"
VERSI_SEBELUMNYA="itop26"
BERKAS_CADANGAN="$LOKASI_CADANGAN/$VERSI_SEBELUMNYA"
#
systemctl stop httpd php-fpm
#
tar -czvf $BERKAS_CADANGAN-`date +"%Y%m%d%H%M"`.tar.gz --exclude "*.tar.gz" $LOKASI_DIREKTORI/*
#
rm -rf $LOKASI_DIREKTORI/{*.*,addons,application,core,css,datamodels,dictionaries,documentation,env-test,images,index.php,js,lib,pages,portal,setup,sources,navigator,synchro,webservices}
#
wget https://sourceforge.net/projects/itop/files/itop/$VERSI_ITOP/iTop-$VERSI_ITOP-$RILIS_ITOP.zip
mkdir $VERSI_ITOP
unzip iTop-$VERSI_ITOP-$RILIS_ITOP.zip -d $VERSI_ITOP
cp -aRv ./$VERSI_ITOP/web/* $LOKASI_DIREKTORI
chown -Rv $PENGGUNA_PELADEN_WEB:$GRUP_PELADEN_WEB $LOKASI_DIREKTORI
chmod -Rv 644 $LOKASI_DIREKTORI/conf/production/config-itop.php
#
matchpathcon -V $LOKASI_DIREKTORI/*
restorecon -Rv $LOKASI_DIREKTORI
#
systemctl restart httpd php-fpm

Penyelesaian

SELinux

#
grep -E 'setroubleshoot|preventing' /var/log/messages
#
matchpathcon -V $LOKASI_DIREKTORI/*
#
semanage fcontext -a -t httpd_sys_content_t "$LOKASI_DIREKTORI(/.*)?"
restorecon -Rv $LOKASI_DIREKTORI
#
systemctl restart httpd php-fpm
# periksa ulang
matchpathcon -V $LOKASI_DIREKTORI/*

Cron

mkdir -p /var/www/$DOMAIN_ITOP/etc
#
cat << EOF | sudo tee /var/www/$DOMAIN_ITOP/etc/itop-cron.params
# This is a parameter file
#
# If a parameter is given both in the file and in the arguments,
# then the value given as argument is retained
# Authentication
auth_user = lilili
auth_pwd = lalala
# My web service
size_min = 20 # Megabytes
time_limit = 40 # Minutes
EOF

#
chown -Rv apache:apache /var/www/$DOMAIN_ITOP/etc/itop-cron.params
#
sudo -u apache crontab -e
#
*/5 * * * * apache /usr/bin/php /var/www/tadah.proxsis.co.id/html/webservices/cron.php --param_file=/var/www/tadah.proxsis.co.id/etc/itop-cron.params >>/var/www/tadah.proxsis.co.id/log/itop-cron.log 2>&1

Redirect domain

# variabel khusus
DOMAIN_LAMA="lama.sub.domain.tld"
DOMAIN_ITOP="baru.sub.domain.tld"
cat << EOF | sudo tee /etc/httpd/conf.d/$DOMAIN_LAMA.conf
<VirtualHost *:80>
    ServerName $DOMAIN_LAMA
    ServerAlias $DOMAIN_LAMA
    DocumentRoot /var/www/$DOMAIN_ITOP/html
    ErrorLog /var/www/$DOMAIN_ITOP/log/error.log
    CustomLog /var/www/$DOMAIN_ITOP/log/request.log combined
    Redirect / http://$DOMAIN_ITOP/
</VirtualHost>
EOF
cat << EOF | sudo tee /etc/httpd/conf.d/$DOMAIN_LAMA.conf
<VirtualHost *:80>
  ServerName $DOMAIN_LAMA
  ServerAlias $DOMAIN_LAMA
  DocumentRoot /var/www/$DOMAIN_ITOP/html
  ErrorLog /var/www/$DOMAIN_ITOP/log/error.log
  CustomLog /var/www/$DOMAIN_ITOP/log/request.log combined

  RewriteEngine On
  RewriteCond %{SERVER_NAME} =$DOMAIN_LAMA
  RewriteRule ^ https://$DOMAIN_ITOP [END,NE,R=301]
</VirtualHost>
EOF