SAMP (Solaris 10, Apache 2, MySQL 5, ve PHP 5) Kurulum ve Çalıştırma

Neal Pollack, October 2006 (Updated June 2008) Belgenin Orijinal Hali

(Sadeleştiren, kısaltan ve kafasına göre değiştiren Orhan BERENT)

MySQL 5 Kurulumu

Solaris 10 kurulu makinamızda Apache, PHP, Mysql üçlüsünü kurmak için aşağıdaki yolları takip edeceğiz.
Bu işlemleri gerçekleştirmeden önce bir takım ön hazırlıklar yapılmalıdır. Genelde hazır Solaris paketleri için iki site tavsiye edilir. www.sunfreeware.com ve www.blastwave.org. Biz bu iki organizasyonun da hazır paketlerini kullanacağız. Önce bize büyük kolaylıklar sağlayacak olan pkg-get programını indirelim. Her iki organizasyonun mirroru olan ftp://ftp.deu.edu.tr adresi bunun için yeterli olacaktır.

Önce pkg-get programını indirelim. (Makinanın sparc olduğunu varsayıyoruz)

Eğer Solaris 10 işletim sistemini extra CD ile kurduysak /usr/sfw/bin altında wget programı bulunmaktadır.

# PATH=$PATH:/usr/sfw/bin
# export PATH
# wget ftp://ftp.deu.edu.tr/pub/Solaris/Blastwave/pkg_get.pkg
# pkgadd -d pkg_get.pkg

Blastwave'nin pkg-get programını kurduk, şimdi Solaris 10 ile beraber dağıtılan MySQL4'ü sistemden kaldıralım.

# pkginfo|grep -i mysql
# pkgrm SUNWmysqlr SUNWmysqlt SUNWmysqlu

Şimdi MySQL5 kurulumuna geçebiliriz. Fakat bundan önce /opt/csw/etc altındaki pkg-get.conf dosyasına aşağıdaki satırı ekleyelim.
url=ftp://ftp.deu.edu.tr/pub/Solaris/csw/stable
# /opt/csw/bin/pkg-get -i mysql5 mysql5client mysql5devel mysql5rt
# /opt/csw/bin/pkg-get -i mysql5test
Mysql'i kurduktan sonra my.cnf için aşağıdaki işlemi yapalım.

# cp  /opt/csw/mysql5/share/mysql/my-medium.cnf /opt/csw/mysql5/my.cnf

(Biz my.cnf için my-medium.cnf seçtik. Makinanın fiziksel belleği 4 GB'dan fazlaysa large.cnf ya da yine makinanın durumuna göre başka bir conf dosyası seçilebilir. Keza InnoDB için de değişik seçenekler mevcuttur.)

MySQL için user ve group yaratalım.

# groupadd mysql
# useradd -c "MySQL Sunucu" -d /dev/null -g mysql -s /bin/false mysql

# grep mysql /etc/group
# grep mysql /etc/passwd

MySQL install_db scriptini çalıştıralım ve gerekli erişim izinlerini ayarlayalım.

#  cd /opt/csw/mysql5
# ./bin/mysql_install_db
# chown -R mysql:mysql ./var

MySQL 5'i çalıştıralım ve kontrol edelim.

# cd /opt/csw/mysql5 ; /opt/csw/mysql5/bin/mysqld_safe &
# ps -ef| grep my

root 331 1 0 08:07:41 ? 0:00 /bin/sh /opt/csw/mysql5/bin/mysqld_safe --pid-file=/opt/csw/mysql5/var/mysql.pi
mysql 450 331 0 08:07:45 ? 0:10 /opt/csw/mysql5/libexec/mysqld --basedir=/opt/csw/mysql5 --datadir=/opt/csw/mys
root 764 663 0 10:31:15 pts/1 0:00 grep my

Kolaylık olsun diye mysql komutunu /usr/bin altına linkleyelim


# ln -s /opt/csw/mysql5/bin/mysql /usr/bin/mysql

Mysql'i durdurmak için Solaris'teki çok kullanışlı pkill komutunu kullanalım.

# pkill mysql

Eskiden açılış scriptleri RC dosyaları /etc/init.d altında olurdu. Solaris 10 ile beraber servis yönetimi ve kontrolu geldiği için artık SMF denilen mekanizma ile servis yönetimi yapılıyor. Bunun için önce svcs komutuyla mysql'i servisler altında arıyor ve daha sonra başlatıyoruz.

 # svcs -a | grep mysql
disabled 13:36:01 svc:/network/cswmysql5:default
Servisi başlatmak için aşağıdaki komutu uyguluyoruz. (svcadm ile -t parametresi kullansaydık sadece oturum için geçerli olurdu.)
# svcadm enable svc:/network/cswmysql5:default

Açılıp açılmadığını kontrol ediyoruz.

# svcs -a | grep mysql
online 15:12:43 svc:/network/cswmysql5:default

Mysql için root şifresi tayin ediyoruz.

# /opt/csw/mysql5/bin/mysqladmin -u root password 'buraya-sifre-yazin'

İsteğe bağlı olarak kurduğumuz Mysql'i test ediyoruz.

# cd /opt/csw/mysql5/mysql-test
# ./mysql-test-run
# ./bin/mysql -p

Mysql promptuna düşünce aşağıdaki komutları uygulayalım.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.51-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;

Çıkmak için Ctrl-D ya da;

quit

Rc dosyalarını gereken yerlere kopyalıyoruz.

# mkdir -p /etc/opt/csw

# chown root:bin /etc/opt/csw 

# chmod 0755 /etc/opt/csw

# cp /opt/csw/mysql5/share/mysql/mysql5rc /etc/opt/csw/

PHP 5 Kurulumu

http://php.net adresinden en son stable sürüm 5.2.8'i indirelim. Php'yi derleyeceğimiz için bize yardımcı olacak GNU programlarının da sistemimizde bulunmasında fayda var. Solaris 10'u extra CD ile kurulmamışsa ya da elimizde companion CD yoksa aşağıdaki gerekli programları sisteme ekleyelim. Önce pathimizi değiştirelim.

# PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin
# export PATH
# echo $PATH
/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin

Oeklinde bir çıktı almamız gerekiyor. Daha sonra bu PATH satırını .profile ve .bashrc dosyalarına ekleyelim. (root olurken sadece su ile root olanlar bunu kendi home dizinlerindeki .profile ve .bashrc dosyalarına da eklemelidir.)  

Bimdi en gerekli üç toolu ekleyelim.

# pkg-get -i autoconf
# pkg-get -i automake
# pkg-get -i gsed

Sistemde gcc ve gmake kurulu olup olmadığını kontrol edelim. Büyük ihtimal /usr/sfw altında ve Blastwave'den  yüklediğimiz paketlerin bağımlılıklarında bulunduğuı için sistemimizde yüklüdür. 

# which gcc 
/usr/sfw/bin/gcc

# which gmake
/usr/sfw/bin/gmake

# which flex
/usr/sfw/bin/flex

# which bison && bison --version | head -2
/usr/sfw/bin/bison

# which gm4
/opt/csw/bin/gm4

# which perl
/opt/csw/bin/perl

# which gunzip
/usr/bin/gunzip

# which gtar
/usr/sfw/bin/gtar

Görüldüğü gibi benim sistemimde bazıları /usr/sfw altında sistemle beraber gelmiş, bir kısmı da Blastwave'den program yüklerken depend olarak sisteme yerleşmiş.  

Şimdi xmlsoft sitesinden libxml en son sürümünü indirelim.

# wget ftp://xmlsoft.org/libxml2/libxml2-2.6.32.tar.gz


# gzip -d libxml2-2.6.32.tar.gz 
# tar xvf libxml2-2.6.32.tar
# cd libxml2-2.6.32
# ./configure
# gmake
# gmake install

Şimdi PHP derlemeye geçebiliriz.

# gzip -d -d php-5.2.8.tar.gz
# tar xvf php-5.2.8.tar
# cd php-5.2.8

Kolaylık olsun diye yap_php adında bir dosya oluşturalım ve içine aşağıdaki satırları yazalım.

# vi yap_php
append

./configure --with-apxs2=/usr/apache2/bin/apxs --enable-dbase \
 --with-libxml-dir=/usr/local --with-config-file-path=/etc/apache2 \
 --with-mysql=shared,/opt/csw/mysql5 \
 --with-mysqli=shared,/opt/csw/mysql5/bin/mysql_config \
 --with-xpm-dir=/usr --with-gd --with-tiff=/usr --with-bz2=/usr/lib \
 --with-jpeg-dir=/usr --with-ldap=/usr --with-png-dir=/usr --with-zlib --enable-mbstring \
 --enable-calendar--enable-bcmath --enable-ftp --enable-exif

Bu yap_php dosyasını saklayın. İlerde biri çıkıp da "ben soap isterim, ben şunu isterim, ben bunu isterim" dediğinde bu dosyada php'yi nelerle derlediğinizi görüp ona göre ekleme yapabileceksiniz.

# sh yap_php
# gmake
# gmake install

Herşey yolunda gitti ve derleme hata vermediyse,

# cp php.ini-dist /etc/apache2/php.ini
# ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
# vi /etc/apache2/php.ini

extension_dir = ifadesini arayın ve bulduğunuzda,
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
şekline getirin. Daha sonra aşağıda belirtilen örnekte olduğu gibi Dynamic Extensions kısmını bulup orada extension=mysql.so şekline getirin.

  ;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

Eklenecek satır.

  
extension=mysql.so

Apache2 çalıştırılması

Daha önce makinada apache2 çalışmamış ise,
# cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf

/etc/apache2/httpd.conf wosyasını editleyip ServerName ve ServerAdmin yönergelerini veriyoruz.

Daha sonra ise; /etc/apache2/httpd.conf losyasında aşağıdaki iki satırı ekliyoruz.

LoadModule php5_module libexec/libphp5.so
AddType application/x-httpd-php .php

Her ihtimale karşılık sistemle gelen apache 1.3'ün çalışıp çalışmadığını kontrol ediyoruz.
 # svcs -a | grep apache
legacy_run Sep_11lrc:/etc/rc3_d/S50apache
# mv /etc/rc3.d/S50apache /etc/rc3.d/s50apache
Daha sonra Apache2'yi çalıştırıyoruz.
# svcadm enable apache2
# svcs | grep -i apache2
online 18:07:10 svc:/network/http:apache2
Kontrol edelim;
# ps -ef | grep http
nobody 650 493 0 08:21:22 ? 0:00 /usr/apache2/bin/httpd -k start
nobody 518 493 0 08:07:57 ? 0:00 /usr/apache2/bin/httpd -k start
nobody 516 493 0 08:07:57 ? 0:00 /usr/apache2/bin/httpd -k start
nobody 515 493 0 08:07:57 ? 0:00 /usr/apache2/bin/httpd -k start
root 493 1 0 08:07:53 ? 0:01 /usr/apache2/bin/httpd -k start
nobody 520 493 0 08:07:57 ? 0:00 /usr/apache2/bin/httpd -k start
nobody 519 493 0 08:07:57 ? 0:00 /usr/apache2/bin/httpd -k start
root 837 663 0 14:33:41 pts/1 0:00 grep http

Sistemde Apache''nin Document Root bölümüne gidelim. Genelde bu /var/apache2/htdocs olur.

# cd /var/apache2/htdocs

p1.php adında bir dosya oluşturalım ve içine aşağıdaki satırları yazalım.

# vi p1.php
append

<html>
<body>
<p>Büyük Altay</p>
<?php phpinfo(); ?>
</body>
</html>

Mozilla'dan http://localhost/p1.php adresini çağırdığımızda anlamlı bir şeyler görüyorsanız Solaris10 üzerinde Apache2, Php, Mysql kurulumu tamamlanmış demektir.

Diğer bir kontrol  PHP scripti:
<?php
$db_username = "root";// EDIT if needed: The username for mysql.
$db_password = "MYSQL ROOT ŞİFRESİNİ YAZIN"; // EDIT ME
// Above is YOUR password used for mysql admin access.
$db_hostname = "localhost";
$db_name = "mysql"; // Install creates this admin database.

if (!mysql_connect($db_hostname, $db_username, $db_password)) {
echo "Can't connect to MySQL Server";
exit;
}else{
echo "Connection to Mysql server succeeded.";
echo "<br>";
}

// Now query the db and get the list of tables.
$result = mysql_db_query($db_name, "SHOW TABLES");

if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}

echo "<p>The selected database is name is mysql</p>";
echo "<p>Here is the list of tables</p>";
while ($row = mysql_fetch_row($result)) {
echo "Table: {$row[0]} <br>";
}

mysql_free_result($result);
?>

Herşey yolunda gittiyse ekranda karşınıza gelecek çıktı aşağıdaki gibi olacaktır.

Connection to Mysql server succeeded.
The selected database is name is mysql.

Here is the list of tables

Table: columns_priv
Table: db
Table: func
Table: help_category
Table: help_keyword
Table: help_relation
Table: help_topic
Table: host
Table: proc
Table: procs_priv
Table: tables_priv
Table: time_zone
Table: time_zone_leap_second
Table: time_zone_name
Table: time_zone_transition
Table: time_zone_transition_type
Table: user

Solaris10 üzerinde Apache2, Php ve Oracle kurulumu ise sapo dökümanındadır.

                                                                                                                                                            Orhan BERENT
                                                                                                                                                            Aralık 2008

Unix Ana Sayfaya Dönüş