Merhaba arkadaşlar;
Programlama yaparken Apache, MySQL ve PHP için verilerinizi tek bir harddisk bölümünde tutuyor ve bu verileri hem windows hemde linux üzerinden işlemek istiyorsanız aşağıdaki yönergeleri takip ederek istediğiniz sonuca ulaşabilirsiniz :
Konuyu aydınlatmak adına örneklendirmek gerekirse : Diyelimki daha önceden Windows ile başlattığınız MySQL etkileşimli bir php projeniz var... Ama siz o anlık sistem olarak linux kullanıyorsunuz yada projeye linux ile devam etmek istiyorsunuz. Disk yapılandırmanızın şu şekilde olduğunu varsayarsak :
#######
Disk yapılandırması#######
Windows görünümü Linux görümü C:\Windows(ntfs) /dev/sda1(ntfs)
D:\Ortak(ntfs) /dev/sda2(ntfs)
Linux(ext4) /dev/sda3(ext4)
##########################
NOTLAR:
1-Aşağıda anlatılanların tümü ortak olarak kullanılanılacak ntfs biçimli disk bölümü içindir. Dosya yolları linux için yazıldığı sürece aynı ayarları linux içinde sorunsuz çalışmaktadır.
2-Web için kullanılacak ortak dizinin D:\WWW(windows için), /media/Ortak/WWW(linux için) olduğu varsayılmıştır.
3-MySQL için kullanılacak ortak dizinin D:\DATA(windows için), /media/Ortak/DATA(linux için olduğu varsayılmıştır.
4-Windows ve linux için gerekli PHP kurulum ve ayarların yapıldığı varsayılmıştır. Nasıl yapılacağını bilmiyorsanız linux için [Nasıl] Karmic Koala üzerinde Apache,MySQL,PHP5,PhpMyAdmin kurulumu - LAMPP (http://forum.ubuntu-tr.net/index.php/topic,14457.0.html) adresine Windows için php.net (http://php.net) adresine bakabilirsiniz.
5-Windows üzerinde Apache ve MySQL in C:\ üzerinde kurulu olduğu varsayılmıştır. Apache Dizini = C:\Apache, MySQL Dizini = C:\MySQL
6-Anlatımlar Apache2.2 ve MySQL 5.1 için yapılmıştır. Yapılandırma dosyalarının bulunduğu konum, isim yada uzantı sizin kullandığınız sürüme göre değişebilir.
Sürüm farklılıklarından dolayı hatalar olabilir.
7-(Önemli) : Aşağıda bahsi geçen tüm ayar dosyaları için mutlaka yedek alınız. Örnek :
sudo cp -pr orjinaldosya orjinaldosya-bak
Windows için Apache yapılandırması: Apache nin kurulu olduğu dizini bularak "conf" dizini içerisindeki "
httpd.conf" dosyası içinde "
DocumentRoot" özelliğini bularak değerini değiştirelim:
a.) Dosya:
C:\Apache\conf\httpd.conf
b.) Değiştirilecek Değerler:
...
DocumentRoot "D:/WWW"
...
...
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "D:/WWW">
...
...
!!! Yukarıda bahsi geçen yerler dışında kalan metin ve ... işaretleri aradığınız özelliği dosya içinde daha kolay bulmanız için verilmiştir. Sadece özelliklerle ilgili değişiklik yapın.
*** Bu işlemi yaptıktan sonra Apache yi yeniden başlatmayı unutmayınız.
Windows için MySQL yapılandırması: MySQL in kurulu olduğu dizini bularak "
my.ini" dosyası içinde "
datadir" özelliğini bularak değerini değiştirelim:
a.) Dosya:
C:\MySQL\my.ini
b.) Değiştirilecek Değerler:
...
#Path to the database root
datadir="D:/DATA"
...
!!! Yukarıda bahsi geçen yerler dışında kalan metin ve ... işaretleri aradığınız özelliği dosya içinde daha kolay bulmanız için verilmiştir. Sadece özelliklerle ilgili değişiklik yapın.
*** Bu işlemi yaptıktan sonra MySQL i yeniden başlatmayı unutmayınız.
***ÖNEMLİ*** Linux için Apache ve MySQL yapılandırmasına geçmeden önce /dev/sda2(Ortak) diskinizin kalıcı şekilde bağ(mount) oluşturması gerekmektedir. Bunun için
1.Yöntem (Program yardımı ile): System->Yönetim->Synaptic Paket yöneticisi ni açın ve arama bölümüne "
ntfs-config" yazarak bu paketi kurdurun. Daha sonra System->Yönetim->NTFS yazma desteği Yapılandırma aracını başlatarak
a.) 1.pencerede "
Ortak" isimli disk bölümünü seçin ve tamam diyerek onaylayın
b.) 2.pencerede "
Dahili aygıt için yazma desteğini etkinleştir(ilk seçenek)" tıklayarak tamam dediğinizde bağlama işlemi gerçekleştirmiş olacaksınız.
c.) Bağın kalıcı oluştuğuna emin olmak için /etc/fstab dosyasını kontrol ediniz.
2.Yöntem (Terminal ve Fstab dosyası ile): Sırayla aşağıdaki komutları uygulayın;
(nano yerine gedit kullanılabilir)
a.) Fstab dosyamızı düzenleyelim
sudo nano /etc/fstab
b.) Dosya içeriğine en alt satıra bunu ekleyin:
/dev/sda2 /media/Ortak ntfs-3g defaults,locale=tr_TR.UTF-8 0 0
c.) Kaydedin(nano için: ctrl+o, gedit için: ctrl+s) ve programını kapatın(nano için: ctrl+x, gedit için: ctrl+q).
d.) Son olarak şu komutu verin:
sudo mount -a
*** Bağlama işlemini yaparken ntfs-3g paketinin kurulu olduğu varsayılmıştır. Eğer kurulu değilse yukardaki 1. yöntem yada şu yöntemle kurabilirsiniz.
sudo apt-get install ntfs-3g
Linux için Apache yapılandırması: Uygulamalar -> Donatılar -> Uçbirim (yada terminal) ı açın ve aşağıdakileri sırayla uygulayın.
1-) Apache yi durduralım:
sudo /etc/init.d/apache2 stop
2-) default dosyasını düzenleyelim:
a.) Dosya yolu:
/etc/apache2/sites-available/default
b.) Düzenleme komutu (nano yerine gedit kullanılabilir):
sudo nano /etc/apache2/sites-available/default
c.) Değiştirilecek Değerler:
DocumentRoot /media/Ortak/WWW
...
...
<Directory /media/Ortak/WWW>
...
...
!!! Yukarıda bahsi geçen yerler dışında kalan metin ve ... işaretleri aradığınız özelliği dosya içinde daha kolay bulmanız için verilmiştir. Sadece özelliklerle ilgili değişiklik yapın.
3-) Kaydedin(nano için: ctrl+o, gedit için: ctrl+s) ve programını kapatın(nano için: ctrl+x, gedit için: ctrl+q).
4-) Apache yi başlatalım
sudo /etc/init.d/apache2 start
Linux için MySQL yapılandırması: Uygulamalar -> Donatılar -> Uçbirim (yada terminal) ı açın ve aşağıdakileri sırayla uygulayın.
1-) Önce MySQL i durduralım:
sudo /etc/init.d/mysql stop
2-) Şimdi mysql için varsayılan dizindeki (/var/lib/mysql) dosyalarımızı kullanacağımız dizine kopyalıyalım(/media/Ortak/DATA) [DİKKAT Bu işlemi /media/Ortak/DATA dizini tamamen boşsa yapın]:
sudo cp -pr /var/lib/mysql/* /media/Ortak/DATA/
3-) My.cnf dosyamızı düzenleyelim:
a.) Dosya:
/etc/mysql/my.cnf
b.) Düzenleme komutu (nano yerine gedit kullanılabilir):
sudo nano /etc/mysql/my.cnf
c.) Değiştirilecek değerler:
...
datadir=/media/Ortak/DATA
...
!!! Yukarıda bahsi geçen yerler dışında kalan metin ve ... işaretleri aradığınız özelliği dosya içinde daha kolay bulmanız için verilmiştir. Sadece özelliklerle ilgili değişiklik yapın.
4-) Kaydedin(nano için: ctrl+o, gedit için: ctrl+s) ve programını kapatın(nano için: ctrl+x, gedit için: ctrl+q).
5-) Apparmor yapılandırmamızı yapalım:
a.) Dosya:
/etc/apparmor.d/usr.sbin.mysqld
b.) Düzenleme komutu (nano yerine gedit kullanılabilir):
sudo nano /etc/apparmor.d/usr.sbin.mysqld
c.) Değiştirilecek değerler(DİKKAT virgüllere(,) dikkat edin):
# işareti ile belirtilenler ilk değerleridir.Son değer kırmızıyla belirtilmiştir.Alıntı Yap
# /var/lib/mysql/ r,
# /var/lib/mysql/** rwk,
/media/Ortak/DATA/ r,
/media/Ortak/DATA/** rwk,
6-) Kaydedin(nano için: ctrl+o, gedit için: ctrl+s) ve programını kapatın(nano için: ctrl+x, gedit için: ctrl+q).
7-) Apparmor'u yeniden yükleyelim:
sudo /etc/init.d/apparmor reload
8-) Son olarak MySQL i tekrar başlatalım.
sudo /etc/init.d/mysql restart
Bu konuda çözüme ulaşmamı sağlayan herkese özellikle "heartsmagic" hocama çok teşekkürler.
Kaynaklar:
http://wiki.ubuntu-tr.net/index.php5/Fstabhttp://wiki.ubuntu-tr.net/index.php5/Fstab (http://wiki.ubuntu-tr.net/index.php5/Fstab)
http://forum.ubuntu-tr.net/index.php/topic,14457.0.htmlhttp://forum.ubuntu-tr.net/index.php/topic,14457.0.html (http://forum.ubuntu-tr.net/index.php/topic,14457.0.html)
http://www.syslogs.org/2009/04/mysql-data-dizininin-yerinin-degistirilmesi/http://www.syslogs.org/2009/04/mysql-data-dizininin-yerinin-degistirilmesi/ (http://www.syslogs.org/2009/04/mysql-data-dizininin-yerinin-degistirilmesi/)
http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.htmlhttp://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html (http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html)
http://manpages.ubuntu.com/manpages/jaunty/tr/man8/mount.8.htmlhttp://manpages.ubuntu.com/manpages/jaunty/tr/man8/mount.8.html (http://manpages.ubuntu.com/manpages/jaunty/tr/man8/mount.8.html)
Yukarıda söylenenlerin hepsini yaptım. Klasörleri kendime göre ayarladım. Disk bağlamayı ubuntu'yu kurarken /media/Ortak ( bendeki haliyle /media/Localhost şeklinde gösterdim. Ancak bütün işlemleri yaptıktan sonra firefox'dan girmek istediğimde :
Forbidden
You don't have permission to access /Joomla on this server.
---------------------------------------------------------------------------
Apache/2.2.16 ( Ubuntu) Server at localhost Port 80
şeklinde bir hata ekranı alıyorum. Diske ayrıca bir yazma izni mi vermem gerekiyor.
umask değerini 007 yaptığımda tekrar başa döndüm.
"Forbidden
You don't have permission to access / on this server." şeklinde bir hata yapıyorum.
Diğer denediklerim:
ALT+F2 yapıp gksu nautilus yazdım. Diskin bir üst dizinine çıkıp diske sağ tıkladım. root olarak sağ tıklayıp özelliklere girdim. Erişim haklarına tıkladığımda sırasıyla; sahibi : root , Klasör Erişimi : Dosya oluştur ve Sil , Dosya Erişimi: - olan bir bölüm var. root olan kısmı kendi kullanıcıma almak istediğimde sıfırlayıp eski haline getiriyor..
Başka bir öneriniz var mı?
Farklı bir dosya yöneticisi deneyin veya komut satırından izinleri değiştirmeye çalışın. chmod ve chown komutlarının kullanımlarına bakıp yapabilirsiniz.
3. maddedeki sorun malum eğer Mysql sunucusu çalışmıyorsa yaşanır. Çalışıyor mu sunucu?
Sen şimdi Windows'ta kurdun önce her şeyi, sonra Ubuntu üzerinden ortak çalışma için ayaları yaptın. Doğru mu anlıyorum?
Forum düzenliliği için siz bana kızmadan ben şöyle yapayım.
Sanırım http://forum.ubuntu-tr.net/index.php?topic=11666.0 adlı konuda devam eden sorundan dolayı bunu yaşıyorum. İsterseniz o başlıkta devam edelim, burada kirlilik yapmayayım. Aynı konuyu iki yerde tartışıyor gibi olmasın.
Ama bu kısmı okuyan arkadaşlar için de bir açıklama yapayım. Aynı sorunu onlar da yaşayabilirler :) Aldığım hatalar için nedenler şöyle :
1. Muhtemelen mysql dosyalarını taşıdığımda Windows'daki kuruluma bunlar uyum sağlamıyor. Windows mysql dosyaları windows'da, linux'dakiler de linux'de kalacak gibime geliyor.
2. Ubuntu'da açılmamasının nedeni üstteki başlıkta verdiğim konuda şu an tartışılıyor. Muhtemelen /var/run/mysqld/mysqld.sock dosyası şifreyi içinde tutuyor.
3. Veriyolunu değiştirip son aşamaya geldiğimde var/run/mysqld/ içindeki dosyalar mysql ve apparmor restartı ile silindiği için mysql hata veriyor. Yani başta düzgün olan kurulum taşıma esnasında bozuluyor.
Şimdi öbür konudan devam edip çıkacak çözüme göre burayı düzenleyebiliriz sanırım :)