Tekir Linux Kurulum

Belgeyi Hazırlayan: Duygu Ölmez

Bu kurulum Tekir’in varsayılan ayarları için geçerlidir.

Sistem Gereksinimleri ve Ön Gereksinimler


Kuracağımız sanal makinenin özellikleri aşağıdaki gibidir.

  • İşletim Sistemi: CentOS 6.6
  • İşletim Sistemi Türü: Red Hat (64-bit)
  • Bellek: 2048 MB (1024 MB’dan fazla olmalı)
  • İşlemci: 1
  • Depolama: 10 GB

Öncelikle 80 portunun açık olduğundan ve selinuxun kapalı olduğundan emin olun. 80 portu kapalıysa açmak için /etc/sysconfig/iptables dosyasına aşağıdaki satırı ekleyin:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Servisi yeniden başlatın:

service iptables restart

Selinuxu kapatmak için /etc/sysconfig/selinux dosyasındaki seçeneği aşağıdaki şekilde değiştirin. Değişiklikten sonra cihazı reboot etmeniz gerekir:

SELINUX=disabled

NOT: Sanal makinenin imajını almadan önce /etc/udev/rules.d/70-persistent-net.rules dosyasındaki SUBSYSTEM ile başlayan satırı silmeniz gerekmektedir. Makineyi reboot etmeden imajını alın.

Tekir’i kurarken aşağıdaki uygulamaları kuracağız

  • Java : Sun-JDK 7
  • Veritabanı Sunucusu : Percona Mysql 5.6
  • Uygulama Sunucusu : JBoss AS 4.2.3.GA (RedHat)
  • Web Sunucusu : Nginx 1.8.0

Zip dosyalarını internetten indirmek için wget kullanacağız. Açmak için unzip ve tar kullanacağız. Kurulu değillerse aşağıdaki gibi kurabilirsiniz:

yum install -y wget unzip tar

JDK ( Java Development Kit ) Kurulumu


Öncelikle rpm dosyasını indirip kuruyoruz:

cd /tmp
wget -c --no-check-certificate --no-cookies --header 'Cookie: oraclelicense=accept-securebackup-cookie' http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.rpm -O jdk-7u71-linux-x64.rpm
yum install -y jdk-7u71-linux-x64.rpm
rm -f jdk-7u71-linux-x64.rpm

Daha sonra java ve alternatiflerinin kurulumu için aşağıdaki komutları çalıştırıyoruz:

alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_71/bin/java 1
alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_71/bin/javac 1
alternatives --install /usr/bin/jar jar /usr/java/jdk1.7.0_71/bin/jar 1
alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.7.0_71/bin/javaws 1
alternatives --config java
  Selection    Command
-----------------------------------------------
*+ 1           /usr/java/jdk1.7.0_71/bin/java

Enter to keep the current selection[+], or type selection number: 1
alternatives --set jar /usr/java/jdk1.7.0_71/bin/jar
alternatives --set javac /usr/java/jdk1.7.0_71/bin/javac
alternatives --set java /usr/java/jdk1.7.0_71/bin/java
alternatives --set javaws /usr/java/jdk1.7.0_71/bin/javaws

MySQL Kurulumu


Veritabanı paketini yükleyip kurmak için aşağıdaki komutları yazmanız yeterli:

yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum install -y Percona-Server-server-56.x86_64 Percona-Server-client-56.x86_64
service mysql start
chkconfig --levels 235 mysql on

Güvenlik ayarlarını yapılandırıp root şifresi oluşturmak için aşağıdaki komutu giriyoruz:

mysql_secure_installation

İlk kurulumda veritabanı parolamız olmadığı için enter’a basıyoruz

Enter current password for root (enter for none):
Set root password? [Y/n] y
New password: parolaniz
Re-enter new password: parolaniz
...
Remove anonymous users? [Y/n] y
...
Disallow root login remotely? [Y/n] y
...
Remove test database and access to it? [Y/n] y
...
Reload privilege tables now? [Y/n] y
...
All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

utf8 çalışmasını sağlama almak için /etc dizinindeki my.cnf dosyasında ilgili bölümlere şu satırları ekleyelim:

[mysqld]
character_set_server=utf8
character_set_client=utf8
skip-name-resolve
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

JBoss AS 4.2.3.GA Kurulumu


JBoss AS 4.2.3.GA sürümünü /tmp dizini altına indirip /opt dizinine açıyoruz

cd /tmp
wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/jboss-4.2.3.GA.zip
unzip jboss-4.2.3.GA.zip
mv jboss-4.2.3.GA /opt/tekir/
rm -f /tmp/jboss-4.2.3.GA.zip

Çalışma ayarını yapmak için /opt/tekir/bin/run.conf dosyasındaki x$JAVA_OPTS parametrelerini tanımlayalım:

 if [ "x$JAVA_OPTS" = "x" ]; then
  JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=1024m
  -Dsun.rmi.dgc.client.gcInterval=3600000
  -Dsun.rmi.dgc.server.gcInterval=3600000
  -Duser.language=en -Duser.country=US" 
 fi

Jboss için bir tekir kullanıcısı oluşturuyoruz

useradd -r tekir -d /opt/tekir
chown tekir: -R /opt/tekir

Jbossu çalıştırıp kapatabilmek için opt/tekir/bin dizinindeki run.sh ve shutdown.sh dosyalarının çalıştırılabilir olması gerekir:

chmod +x /opt/tekir/bin/run.sh
chmod +x /opt/tekir/bin/shutdown.sh

Jboss servisini kullanabilmek için /etc/init.d dizinine tekir adında bir servis dosyası oluşturun. Dosya içeriği aşağıdaki gibi olmalıdır:

#!/bin/sh
#
# $Id: jboss_init_redhat.sh 71252 2008-03-25 17:52:00Z dbhole $
#
# JBoss Control Script
#
# To use this script run it as root - it will switch to the specified user
#
# Here is a little (and extremely primitive) startup/shutdown script
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.
# All this can be changed in the script itself. 
#
# Either modify this script for your requirements or just ensure that
# the following variables are set correctly before calling the script.
# chkconfig: - 64 36
# description: Jboss Start|Restart|Stop Application Server
# pidfile: /var/run/jboss.pid
#define where jboss is - this is the directory containing directories log, bin, conf etc
JBOSS_HOME=${JBOSS_HOME:-"/opt/tekir"}

#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
JBOSS_USER=${JBOSS_USER:-"tekir"}

#make sure java is in your path
JAVAPTH=${JAVAPTH:-"/usr/java/default/bin"}

#configuration to use, usually one of 'minimal', 'default', 'all'
JBOSS_CONF=${JBOSS_CONF:-"default"}

#if JBOSS_HOST specified, use -b to bind jboss services to that address
JBOSS_HOST="127.0.0.1" 
JBOSS_BIND_ADDR=${JBOSS_HOST:+"-b $JBOSS_HOST"}

#define the script to use to start jboss
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF $JBOSS_BIND_ADDR"}

if [ "$JBOSS_USER" = "RUNASIS" ]; then
  SUBIT="" 
else
  SUBIT="su -s /bin/bash - $JBOSS_USER -c " 
fi

if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then
  # ensure the file exists
  touch $JBOSS_CONSOLE
  if [ ! -z "$SUBIT" ]; then
    chown $JBOSS_USER $JBOSS_CONSOLE
  fi 
fi

if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then
  echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE" 
  echo "WARNING: ignoring it and using /dev/null" 
  JBOSS_CONSOLE="/dev/null" 
fi

#define what will be done with the console log
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}

JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH" 

if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
  export PATH=$PATH:$JAVAPTH
fi

if [ ! -d "$JBOSS_HOME" ]; then
  echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
  exit 1
fi

echo JBOSS_CMD_START = $JBOSS_CMD_START

function procrunning() {
   procid=0
   JBOSSSCRIPT=$(echo $JBOSSSH | awk '{print $1}')
   for procid in `/sbin/pidof -x "$JBOSSSCRIPT"`; do
       ps -fp $procid | grep "${JBOSSSH% *}" > /dev/null && pid=$procid
   done
}

stop() {
    pid=0
    procrunning
    if [ $pid = '0' ]; then
        echo -n -e "\nNo JBossas is currently running\n" 
        exit 1
    fi

    RETVAL=1

    # If process is still running

    # First, try to kill it nicely
    for id in `ps --ppid $pid | awk '{print $1}' | grep -v "^PID$"`; do
       if [ -z "$SUBIT" ]; then
           kill -15 $id
       else
           $SUBIT "kill -15 $id" 
       fi
    done

    sleep=0
    while [ $sleep -lt 120 -a $RETVAL -eq 1 ]; do
        echo -n -e "\nwaiting for processes to stop";
        sleep 10
        sleep=`expr $sleep + 10`
        pid=0
        procrunning
        if [ $pid == '0' ]; then
            RETVAL=0
        fi
    done

    # Still not dead... kill it

    count=0
    pid=0
    procrunning

    if [ $RETVAL != 0 ] ; then
        echo -e "\nTimeout: Shutdown command was sent, but process is still running with PID $pid" 
        exit 1
    fi

    echo
    exit 0
}

case "$1" in
start)
    cd $JBOSS_HOME/bin
    if [ -z "$SUBIT" ]; then
        eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &
    else
        $SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &" 
    fi
    ;;
stop)
    stop
    ;;
restart)
    $0 stop
    $0 start
    ;;
*)
    echo "usage: $0 (start|stop|restart|help)" 
esac

Tekir dosyasını çalıştırılabilir hale getirdikten sonra aşağıdaki komutları kullanarak servisi başlatıp durdurup ya da yeniden başlatabilirsiniz. Jboss’un başlaması bir kaç dakika alabilir:

chmod +x /etc/init.d/tekir
service tekir start
service tekir stop
service tekir restart

Jbossun sistem açılışında çalışması için aşağıdaki komutu veriyoruz:

chkconfig --levels 235 tekir on

ÖNEMLİ: CentOS kurulumunda sunucu adını değiştirdiyseniz /etc/hosts dosyasına IP ve hostname bilgisini eklemeniz gerekmektedir. Aksi halde jboss başlamaz.

192.168.xxx.xxx hostname

TEKİR’İN KURULUMU

Öncelikle Tekir’in kurulum paketini indiriyoruz:

cd /tmp
wget http://sourceforge.net/projects/tekir/files/tekir/Tekir%202.1.0/tekir-2.1-linux-install.tar.gz
tar -xvf tekir-2.1-linux-install.tar.gz
chown tekir:tekir -R /tmp/tekir-2.1-linux-install
rm -f tekir-2.1-linux-install.tar.gz

Tekir’in çalışması için önceden veritabanının oluşturulması, tablo ve varsayılan verilerin yüklenmesi
gerekmektedir.

İlk önce mysql’e root olarak giriş yapıp tekir isimli bir veritabanı oluşturuyoruz. Daha sonra bu veritabanı için kullanıcı ve parolasını oluşturuyoruz. Giriş yapabilmek için güvenlik ayarlarını yapılandırırken oluşturduğunuz parolayı girmeniz gerekmektedir:

mysql -u root -p
mysql> CREATE DATABASE tekir collate utf8_turkish_ci;
mysql> CREATE USER 'kullanici'@'127.0.0.1' IDENTIFIED BY 'parolaniz';
mysql> GRANT ALL PRIVILEGES ON tekir.* TO 'kullanici'@'127.0.0.1';
mysql> FLUSH PRIVILEGES;
mysql> exit

Tabloları ve varsayılan verileri oluşturun. Burada kullanici kullanıcısı için oluşturduğunuz parolayı yazmanız gerekmektedir:

mysql -u kullanici -h 127.0.0.1 -p tekir < /tmp/tekir-2.1-linux-install/tekir/tekir.sql

Veritabanı bağlatısı için gereken bilgiler /tmp/tekir-2.1-linux-install/tekir dizininde tekir-ds.xml içinde bulunmaktadır. Veritabanını oluşturduktan sonra buradaki bilgilerin düzenlenmesi gerekmektedir. Kullanici ve parola yerine veritabanında oluşturduğunuz kullanıcı adını ve parolasını yazmanız gerekir. Dosya içeriği şu şekildedir :

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE datasources
    PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN" 
    "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">

<datasources>
   <local-tx-datasource>
      <jndi-name>tekirDatasource</jndi-name>
      <connection-url>jdbc:mysql://localhost:3306/tekir?characterEncoding=UTF-8</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>kullanici</user-name>
      <password>parolaniz</password>
      <exception-sorter-class-name>
         org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
      </exception-sorter-class-name>
      <metadata>
         <type-mapping>mySQL</type-mapping>
      </metadata>
   </local-tx-datasource>
</datasources>

Tekir’in JBoss’a yüklenmesi


Tekir EAR dosyasını kopyalayın:

cp /tmp/tekir-2.1-linux-install/tekir/tekir.ear /opt/tekir/server/default/deploy

Veritabanı bağlantı bilgisini kopyalayın:

cp /tmp/tekir-2.1-linux-install/tekir/tekir-ds.xml /opt/tekir/server/default/deploy

E-posta bağlantı bilgisini kopyalayın:

cp /tmp/tekir-2.1-linux-install/tekir/tekir-mail-service.xml /opt/tekir/server/default/deploy

Tekir ayar dosyasını kopyalayın:

cp /tmp/tekir-2.1-linux-install/tekir/tekir.properties /opt/tekir/server/default/conf

MySQL JDBC sürücünü kopyalayın:

cp /tmp/tekir-2.1-linux-install/lib/mysql.jar /opt/tekir/server/default/lib

Baskı şablonları ve kullanım sırasında yüklenecek olan dosyalar için klasörleri hazırlayın:

mkdir /var/tekir
mkdir /var/tekir/sablonlar
mkdir /var/tekir/dosyalar
cp -r /tmp/tekir-2.1-linux-install/tekir/sablonlar /var/tekir
chown tekir:tekir -R /var/tekir/
rm -rf /tmp/tekir-2.1-linux-install

Jboss servisini yeniden başlatıyoruz:

service tekir restart

Yukarıdaki işlemlerin sonucunda Tekir uygulama sunucusuna kurulmuş durumdadır. Denemek için metin tabanlı bir tarayıcıdan(Elinks) ip adresini girebilirsiniz. Elinks yüklemek için aşağıdaki komutu vermeniz yeterlidir. :

yum install -y elinks.x86_64

Tarayıcıyı ile tekir uygulamasına gitmek için aşağıdaki komutu kulanabilirsiniz(ipadresi yerine sanal makinenizin IP adresini yazın). Tarayıcıdan çıkmak için ctrl+c tuşuna basmanız yeterli:

links 127.0.0.1:8080/tekir

elinks

Uygulamaya ilk giriş için kullanıcı adı tekir ve parolası tekir’dir.

Nginx Kurulumu


Öncelikle Nginx’i yüklüyoruz:

yum install -y http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install -y nginx.x86_64

Nginxi çalıştırıp, sistem açılışında çalışmasını sağlıyoruz:

service nginx start
chkconfig --levels 235 nginx on

/etc/nginx/conf.d dizini altında Tekir için bir konfigürasyon dosyası(tekir.conf) oluşturuyoruz ve mevcut öntanımlı dosya ile çakışmaması için default.conf dosyasını siliyoruz:

rm -f /etc/nginx/conf.d/default.conf

Tekir.conf dosyası aşağıdaki gibi olmalıdır:

server {
    listen 80 default_server;
    server_name  _;
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/tekir/;
    }
    location /tekir/ {
        proxy_pass http://127.0.0.1:8080/tekir/;
    }
}

Değişiklikleri yaptıktan sonra servisi yeniden başlatıyoruz:

service nginx restart

Bu ayarları da yaptıktan sonra makineyi çalıştırdığımızda tarayacınızdan IP adresinizi girerek Tekir’in giriş sayfasına ulaşabilirsiniz.
Not: Sistem ilk açıldığında Jboss’un çalışması, sistem donanımına bağlı olarak bir kaç dakika alabilir.