LAMP için Windows ve Linux'tan ortak kullanım

Başlatan ImpossibleIsNothing, 19 Şubat 2010 - 06:52:48

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ImpossibleIsNothing

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 adresine Windows için 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://forum.ubuntu-tr.net/index.php/topic,14457.0.htmlhttp://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.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.htmlhttp://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
Birgün Mikropsoft batacak herkes huzura kavuşacak...

garafatma

Bira, Tanrı'nın bizi sevdiğinin ve eğlenmemizi istediğinin kanıtıdır.

>-- Askıdaki Çeviri --< Ubuntu Türkçe Çevirilerine Sizde Destek Olun
Elveda metal müziğin tanrısı... \m/ Ronnie James DIO: 1942 - 2010

heartsmagic

Ben de teşekkür ederek konuyu sabitleyeyim.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ugurarslan

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.
One for all, all for the future...

alquirel

@ugurarslan,
Aynı sorun benim de başıma gelmişti. Diskleri Ubuntu kurulumunda bağlayınca böyle bi sıkıntı doğuyor. Şu iletideki disk bağlama ile ilgili adımı uygularsan sorunun çözülür büyük ihtimalle
.

ugurarslan

Merhaba,

Gönderdiğiniz klavuzda diskleri bağlamak için /mnt/Windows/ şeklinde bir komut kullanmış.. Ama ben bunu eski makalelere göre yapmıştım. ( /media/Windows gibi...)

Şu durumda Ubuntu'yu tekrar mı kurmam gerekiyor. Diski masaüstünde görebiliyorum ama bir sıkıntı var. Sağ tıklayıp özelliklerden Erişim Hakları'na tıkladığımda da "Localhost" (Diskimin adı ) 'in erişim hakları belirlenmedi yazıyor  :(
One for all, all for the future...

alquirel

Bende de /media/windows şeklinde bağlı. Örnek olması için kendi fstab dosyamdan ilgili kısmı koyuyorum:

UUID=36A01FD5A01F9A87                                  /media/windows  ntfs-3g  gid=100,umask=000  0  0 
UUID=4D1C99240423401F                                  /media/depo  ntfs-3g  gid=100,umask=000  0  0 


Burada önemli olan id'si "100" olan kullanıcı grubuna kendi kullanıcınızı eklemek. Bir önceki iletide paylaştığım konudaki resimdeki gibi ;)
Yine olmazsa bakarız...

ugurarslan

Merhaba,

Bir önceki aşamada sanırım diske yetki verdi.. Diske (Localhost: Diskin adı ) sağ tıklayıp, özellikler-Erişim Haklarına girdiğimde "Localhost"in erişim hakları belirlenemedi demeye devam ediyor. Diskteki index.php yi okutabildim ancak bu seferde, Phpmyadmin'in kurulu olduğu "PMA" klasörüne girmek istediğimde ( Firefox = localhost/PMA )

"Wrong permissions on configuration file, should not be world writable!"

şeklinde bir hata alıyorum.

Genel sorun yazma izinleri sanırım.  :-[
One for all, all for the future...

heartsmagic

Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ugurarslan

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ı?
One for all, all for the future...

eribol

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.

ugurarslan

Sorunu çözdüm, aynı noktada takılan arkadaşlarım şu şekilde çözebilir :

1. Ubuntu'yu kurarken diskinizi /media/diskiniz şeklinde gösterirseniz sıkıntı yaşamazsınız. Ancak diskinizi göstermediyseniz anlatılan diğer disk tanıtma yöntemi de işe yarıyor.

2. Sistem > Yönetim > Kullanıcılar ve Gruplar yoluyla menüden grupları yönete tıklayın, users'ı seçin. Özelliklere tıklayın ve kendi kullanıcınızı seçin.


3. ALT+F2'ye tıklayıp gksu nautilus yazdıktan sonra /etc/fstab dosyasını @alquirel in verdiği örnek fstab dosyası gibi düzenleyin.UUID bölümüne dokunmadan sonundaki kodu aşağıdaki gibi değiştirin.

UUID=36A01FD5A01F9A87                                  /media/diskiniz  ntfs-3g  gid=100,umask=000  0  0


4. ALT+F2'ye tıklayıp gksu nautilus yazdıktan sonra diskinizi bularak bir üst menüye ( media ) çıkın. Diskinize sağ tıklayıp özelliklere girin. Erişim haklarından ayarlardan aşağıdakileri düzenleyin.

Erişim hakları : root
Klasör erişimi : dosyaları oluştur ve sil
Dosya erişimi : okuma ve yazma.

Grubu : users
Klasör erişimi : dosyaları oluştur ve sil
Dosya erişimi : okuma ve yazma.

En altta Çalıştırma : bir program gibi çalıştırmasına izin veri işaretleyin.

Çevrelenmiş dosyalara izinleri uygulamaya tıklayın. Bilgisayarı yeniden başlatın.

Önemli bölümler :

MYSQL için kullanılan D:\DATA bölümü bende dolu idi. Eğer dolu ise sadece farklı dosyaları kopyalayın. Windows'taki MYSQL iniz son sürümse sorun olmuyor.

Makalede değiştirilecek değerler bölümünde :

DocumentRoot /media/Ortak/WWW
...
...
<Directory /media/Ortak/WWW>
...
...


Directory /media/Ortak/WWW/ şeklinde olacak. Sondaki / işaretini gözardı etmeyin.

En önemlisi de sabırlı olun. Sonuçta oluyor :)

Sorunumla ilgilenen herkese teşekkürler :)




3.
One for all, all for the future...

alquirel

Sorunun çözülmüş olmasına sevindim.

Alıntı YapEn önemlisi de sabırlı olun. Sonuçta oluyor

Zaten bu değil mi bizi biz yapan, bize linuxu sevdiren :P

ugurarslan

Merhaba,

Konuyu yine canlandırdığım için üzgünüm, ama yeni bir sorunla karşı karşıyayım.

Bilgisayarıma Ubuntu 12.04 ü kurduğumda aşağıdaki tüm işlemleri yaptım. Şu noktalarda yardımınıza ihtiyacım var:

1. http://forum.ubuntu-tr.net/index.php/topic,14457.0.html adresindeki kurulumu yaptım. Kurulumu yaparken, apache, mysql ve php nin yeni sürümlerini yükledi. Aynı versiyonların Windows sürümünü buldum ve Windows'da yüklemeyi yapıp, çalışıp çalışmadığını denedim. Windows'da hata almıyorum. apache 2.2.22php 5.3.10 ve mysql 5.5.24 ( windows'da 5.5.26) yüklü durumda. Sadece mysql farklı, o da ubuntu'da yenisi gelmiyor.

2. sudo cp -pr /var/lib/mysql/* /media/Ortak/DATA/

kodunu uygulayamıyorum. Çünkü önce Windows'da MySQL kurdum. Data klasörünün içinde /var/lib/mysql klasöründeki dosyalar, windows'daki kurulum esnasında aynı adlarıyla yüklenmiş. Eğer var/lib/mysql deki dosyaları data klasörüne "üzerine yaz" yaparsam, bu sefer windows'da sunucu aşağıda 1. maddede yazdığım hatayı veriyor.

Şimdi aldığım hatalara gelirsek :

1. İşlemler bittikten sonra Windows'daki Phpmyadmin ekranına ulaşmak istersem : #2002 - Sunucu yanıt vermiyor (ya da yerel MySQL sunucusunun soketi doğru olarak yapılandırılmadı) şeklinde bir hata alıyorum. ( Windows'da localhost/pma şeklinde açılıyor. )

2. Ubuntu'daki localhost/phpmyadmin ekranına ulaşmak istediğimde ise ekran açılıyor, fakat ilk kurulumda çalışan kullanıcı adı ve şifre çalışmıyor.

3. Windows'dan sunucuya Joomla kurdum. Ubuntu'dan sayfaya ulaşmak istediğimde "Database Error: Unable to connect to the database:Could not connect to MySQL" şeklinde bir hata alıyorum.

Çözüm önerilerinizi alabilir miyim?

One for all, all for the future...

heartsmagic

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?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ugurarslan

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 :)
One for all, all for the future...