MacPorts ile Apache2 ve PHP (MySQL-PostgreSQL destekli) kurulumu
Bir PHP geliştiricisi olarak uzun yıllar Windows tecrübesi yaşadıktan sonra artık aradığımı bulmuş ve Macos kullanmaya karar vermiştim. Bunun envai çeşit nedenini bir önceki yazıda zaten uzun anlatmıştım. Bu yazıda macos’da Apache ve PHP (MySQL-PostgreSQL destekli) kurulumundan bahsedeceğiz. Aslında Apache-PHP-MySQL için en pratik yol MAMP kurmak ama bu şekilde kurulan PHP’ye postgreSQL desteği vermek zor. Bunun için en iyi yöntem MacPorts kurmak.
Bilindiği üzere Macos aslında BSD tabanlı bir Unix işletim sistemidir. BSD’nin de en güzel özelliklerinden biri Ports denen bir yazılım kurma sistemi olmasıdır. Bu sistem sayesinde pek çok yazılımı sadece bir kaç komutla internetten indirip güncelleyebilirsiniz. İşte bu Ports sistemini Mac’e de uyarlamışlar ve adına MacPorts demişler.
MacPorts komut satırı (terminal) üzerinden çalıştırılan bir uygulama ama işletim sisteminize kurulu olarak gelmiyor. Bunun için bu sayfadan macos’unuza uygun olan dmg imajını öncelikle indirip kurmanız gerekiyor. Bizim sistemimiz Snow Leopard 1.6.3 olduğu için biz bu dosyayı indirip kurduk.
MacPorts kurulunca sıra port ağacını internetten güncellemeye geldi. Bunu arasıra yapmak gerekiyor ki en güncel yazılımları kullanabilelim.
Port ağacını güncellemek için terminali açıp şu ifadeyi giriyoruz:
# sudo port -v selfupdate
Kısa bir işlemden sonra port ağacı güncellenecektir. Bu güncelleme işlemi sonrasında eğer daha önce macports ile kurduğunuz yazılımların da güncellenmesini istiyorsanız
# port upgrade outdated
komutunu verebilirsiniz.
Şimdi sıra MacPorts kullanarak uygulamaları sisteme kurmaya geldi. Öncelikle şunu da belirtelim; Macos’da zaten Apache kurulu olarak gelmektedir. MacPorts ile kuracağımız sistemin sorunsuz çalışması için bu mevcut Apache’yi devredışı bırakmamız gerekiyor. Bunun en kolay ve zararsız yolu System Preferences>Sharing ekranında Web Sharing’i kapatmak.
Artık Apache2’yi portlardan kurabiliriz:
# sudo port install apache2
Bu komutu yazıp işlemlerin tamamlanmasını bekliyoruz. Biraz uzun sürebiliyor. En son şuna benzer bir çıktı ile işlem tamamlanıyor:
###########################################################
# A startup item has been generated that will aid in
# starting apache2 with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
###########################################################
Note: apache2 installs files outside the common directory structure.
—> Installing apache2 @2.2.15_1+darwin+preforkmpm
—> Activating apache2 @2.2.15_1+darwin+preforkmpm
—> Cleaning apache2
#
Şimdi sıra PHP5’i eklentileri ile birlikte kurmaya geldi. Macports’un en güzel yanı burada; istediğiniz eklentiyi daha sonra bile sisteme entegre edebiliyorsunuz. PHP’yi tekrar derlemek gibi bir problem yok. PHP’yi kurmadan önce Apache’nin mutlaka kapalı olması gerekiyor. Bunu da not düşmüş olalım.
PHP ile birlikte kurabileceğimiz bazı eklentiler :
- +apache2
- +imap
- +mssql
- +snmp
- +macports_snmp
- +mysql5
- +postgresql
- +sqlite
Biz şu şekilde kurduk, (burada mysql ve postgresql kurulumu yapılmıyor, sadece php’nin bu eklentilerle birlikte kurulması sağlanıyor):
# sudo port install php5 +apache2 +mysql5 +postgresql
Kurulum sonrasında şu şekilde bir çıktı alınıyor:
If this is your first install, you need to activate PHP in your web server.
To enable PHP in Apache, run
cd /opt/local/apache2/modules
/opt/local/apache2/bin/apxs -a -e -n “php5” libphp5.so
—> Cleaning php5
Bu mesajda da belirtildiği üzere ilk kurulum sonrasında Apache’yi PHP’den anlar hale getirmek için bir işlem daha yapmak gerekiyor. Fakat bundan önce Apache’nin konfigürasyon dosyasını oluşturalım. Apache ile birlikte gelen örnek dosyayı konfigürasyon dosyası olarak kopyalamak kafi:
#sudo cp /opt/local/apache2/conf/httpd.conf.sample /opt/local/apache2/conf/httpd.conf
Şimdi de active edelim:
# cd /opt/local/apache2/modules/
# sudo /opt/local/apache2/bin/apxs -a -e -n “php5” libphp5.so
[activating module `php5′ in /opt/local/apache2/conf/httpd.conf]
Apache’mizi konfigüre etmek için httpd.conf dosyasında bazı oynamalar yapmamız gerekiyor. Örneğin; web sayfalarının tutulduğu klasörü /www dizini olarak değiştirmek için /opt/local/apache2/conf/httpd.conf dosyasını açıp içerisindeki DocumentRoot ifadesini şu şekilde değiştirmemiz gerekiyor:
#DocumentRoot “/opt/local/apache2/htdocs”
DocumentRoot “/www”
Ayrıca <Directory> ifadesini değiştirmemiz gerekiyor:
#<Directory “/opt/local/apache2/htdocs”>
<Directory “/www”>
index.php adlı dosyaların url’de belirtilmeksizin ön tanımlı olarak açılmasını sağlayan ifadeyi dir_module ifadesine ekleyelim:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
.php uzantılı dosyaları Apache’nin yorumlamasını sağlamak için <IfModule mime_module> bloğunda gereken ayarı ekleyelim:
AddType application/x-httpd-php .php
Evet httpd.conf dosyamızla işimiz bitti. Şimdi php.ini dosyamızı oluşturalım:
# sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
Eğer sistemimizde MySQL kurulu ise php.ini dosyasına şu ifadeyi kaydetmemiz gerekiyor (macportslardan mysql kurulumunu da bu sayfalarda bulabilirsiniz):
mysql.default_socket = /tmp/mysql.sock
Apache’yi çalıştırmak ve durdurmak için komut satırından apachectl komutunu start veya stop parametresi ile çağırmak mümkün. Fakat halihazırda bu komut sadece macos’a önceden kurulu olan Apache’yi çalıştıracaktır. Biz kendi apachectl komutumuzu mesela apache2ctl şeklinde oluşturabiliriz. Bunun için .profile dosyamızda bir alias tanımlaması yapmamız kafi:
# vi ~/.profile
alias apache2ctl=’sudo /opt/local/apache2/bin/apachectl’
Profile dosyamızı yeniden yüklemek için şu komutu verin:
# source ~/.profile
Eğer Apache’mizin macos açılır açılmaz kendiliğinden devreye girmesini istiyorsak aşağıdaki komutu bir kere çalıştırmamız kafi:
# sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
İşte bu kadar. Şimdi bir info.php dosyası oluşturup /www dizini altına kopyalayalım ve apache’mizi çalıştıralım:
# mkdir /www
# echo ‘<?php phpinfo(); ?>’ >> /www/info.php
# apache2ctl start
Ve deneyelim: http://localhost/info.php
NOT: Bu yazı http://2tbsp.com/content/install_apache_2_and_php_5_macports adresindeki döküman baz alınarak hazırlanmıştır.
Bu yazıda her nekadar kurulum sırasında postgresql desteğini de parametrelere dahil ettiysek phpinfo çıktısını ilk kontrol ettiğimde postgresql desteğini göremedim. Bunu halletmek için :
# sudo port install php5-postgresql
komutunu kullanıp kurabilirsiniz.
MacPorts (ve aynı şekilde Fink) birçok sorunu halletmek üzere düşünülmüş bir sistem olduğu halde bazen sorun çıkartabiliyor. Geçen aylara kadar Mac mini’me açık kaynak uygulamaları kurmak için MacPorts’u kullanıyordum taa ki 64 bit – 32bit uyumsuzluğu yaşayana kadar.
Evet, PHP’nin özellikle GD gibi bazı extension’larının kullandığı libjpeg gibi kütüphaneler Mac sistemlerine default olarak 32bit olarak yerleştiriliyordu (MacPorts tarafından) İyi ama ben PHP’yi daha rahat calışsın diye 64bit istiyorum, ne olacak o zaman? Hiçbir şey olmadı, MacPorts’u tamamı ile kaldırdım ve Apache, MySQL + birçok kütüphaneyi (libjpeg, libpng, libiconv, libmcrypt,libmysqlclient) sıfırdan 64bit derleyerek PHP’yi yeniden derledim ve ancak o zaman 64bit PHP (3.2) elde edebildim….