Ubuntu'da LAMP (Linux-Apache-MySQL-PHP) Kurulumu
Ubuntu Wiki sitesinden
Apache-MySQL-PHP
Bu yazı Ubuntu üzerinde LAMP (Linux-Apache-MySQL-PHP) sunucusu kurmak konusunda yardımcı olmak amacıyla hazırlanmıştır. Ubuntu 7.04 (Feisty Fawn), 7.10 (Gutsy Gibbon) ve 8.04 (Hardy Heron) sürümüne göre düzenlenmiştir.
7.04, 7.10 ve 8.04 Ubuntu sürümlerinde öntanımlı LAMP yığınını kurmak
7.04 sürümünden itibaren Ubuntu temel sistemi Tasksel içermektedir. LAMP'i ister tasksel ile ister paketlerini kurarak sisteminize yükleyebilirsiniz.
sudo tasksel install lamp-server
ya da gerekli paketleri tek tek yükleyebilirsiniz:
sudo aptitude install apache2 php5-mysql libapache2-mod-php5 mysql-server
LAMP yığınını kaldırmak
LAMP yığınını aşağıdaki paketleri kaldırarak sisteminizden kaldırabilirsiniz:
sudo aptitude remove apache2 apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl libplrpc-perl libpq5 mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 php5-common php5-mysql
debconf verilerini de kaldırmak için, paketleri kaldırırken purge seçeneğini kullanın. Apache üzerinde yaptığınız her türlü değişiklikten kurtulmak istiyorsanız, paketleri kaldırdıktan sonra /etc/apache2 dizinini elle silin.
Apache2 Kurulumu
Yalnıca apache2 sunucusunu kurmak istiyorsanız aşağıdaki pakedi kurun:
sudo aptitude install apache2
Sorun Giderme
Eğer şu hatayı alıyorsanız:
apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Komut satırından "sudo nano" ya da çalıştır menüsünden "gksudo gedit" ile yeni bir metin dosyası yaratın,
sudo nano /etc/apache2/conf.d/fqdn
ya da
gksu "gedit /etc/apache2/conf.d/fqdn"
ve şunları dosyaya ekleyip kaydedin:
ServerName localhost
Bunların tamamı tek bir komutla yapılabilir:
echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
Sanal Sunucular
Apache farklı konfigurasyon dosyaları anlamına gelen "sites" olgusuna sahiptir. Bu konfigurasyonlar /etc/apache2/sites-available dizininde bulunur. Öntanımlı olarak, default olarak adlandırılan, http://localhost ya da http://127.0.0.1 adresini tarayıcıda açtığınız zaman karşınıza çıkan bir siteye vardır. Birden fazla site konfigurasyonuna sahip olabilir ve yalnızca ihtiyacınız olanları etkinleştirebilirsiniz.
Örnek olarak, biz öntanımlı sitenin /home/kullanıcı/public_html olmasını istiyoruz. Bunu yapmak için yeni bir site yaratıp bunu Apache2 içinde etkinleştiriyoruz.
Yeni bir site yaratmak için:
- Öntanımlı web sitesini başlangıç noktası olsun diye kopyalayın.
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite
- Yeni konfigurasyon dosyasını "sudo nano" ile komut satırından ya da "gksudo gedit" ile çalıştır menüsünden bir metin editörü ile açın:
gksudo gedit /etc/apache2/sites-available/mysite
- DocumentRoot bölümünde yeni yeri gösterin. Örnek: /home/kullanıcı/public_html
- Directory yönünü değiştirin, <Directory /var/www/> kısmını <Directory /home/user/public_html/> şeklinde düzenleyin.
- Ayrıca her site için ayrı kayıt tutabilirsiniz. Bunu yapmak için ErrorLog ve CustomLog ile belirtilenleri değiştirin. Bunu yapmak zorunlu değildir, fakat çok fazla siteniz olduğunda kullanışlı olur.
- Dosyayı kaydedin.
Şimdi eski siteyi etkisizleştirip, yeni sitemizi etkinleştirmemiz gerekiyor. Ubuntu bu iş için iki ufak araca sahip: a2ensite (apache2enable site) ve a2dissite (apache2disable site)
sudo a2dissite default && sudo a2ensite mysite
Apache2'yi yeniden başlatıyoruz:
sudo /etc/init.d/apache2 restart
Eğer /home/kullanıcı/public_html dizinini yaratmadıysanız, bir uyarı mesajı alacaksınız
Yeni sitemizi denemek için /home/kullanıcı/public_html dizini içinde bir dosya yaratıyoruz:
echo 'Merhaba! Site çalışıyor!' > /home/user/public_html/index.html
Son olarak da http://localhost sayfasını açıyoruz.
PHP 5 Kurulumu
Yalnızca PHP5 kurmak için php5 pakedini herhangi bir yolla kuruyoruz:
sudo aptitude install php5
Eğer sistemimizde PHP4 bulunuyorsa, ayrıca şu pakedi kuruyoruz:
sudo aptitude install libapache2-mod-php5
Sorun Giderme
İnternet tarayıcınız görüntülemek yerine phpyi indirmek isteyip istemediğinizi mi soruyor? Eğer Apache yeniden başlattıktan sonra da phpyi ayırt edemiyorsa, libapache2-mod-php5 pakedini kurun. Normalde php5 pakedini kurduğunuzda bu paket de kurulur fakat başka sürüm bir phpye ihtiyaç duyan diğer paketleri tarafından kazayla kaldırılmış olabilir.
Ayrıca bunu etkinleştirmeye de ihtiyacınız olabilir. sudo a2enmod php5 komutundan sonra sudo /etc/init.d/apache2 restart" komutu ile etkinleştirin. Eğer sudo a2enmod php5 komutu "$ This module does not exist!" çıktısını veriyorsa, libapache-mod-php5 pakedini purge seçeneğiyle kaldırıp tekrar kurmanız gerekir.
Sitenizi test etmeden önce internet tarayıcınızın belleğini (cache) temizlediğinizden mutlaka emin olun.
PHP 4 Kurulumu
Yalnızca PHP4 kurmak için php5 pakedini herhangi bir yolla kuruyoruz:
sudo aptitude install php4
Eğer sistemimizde PHP5 bulunuyorsa, php4ü kurmak apache 1.3 sürümü için gerekli php modülünü kuracak fakat apache2 için olanı kurmayacaktır. php4ü apache ile kullanmak için şu pakedi kurun:
sudo aptitude install libapache2-mod-php4
Sorun Giderme
İnternet tarayıcınız görüntülemek yerine phpyi indirmek isteyip istemediğinizi mi soruyor? Eğer Apache yeniden başlattıktan sonra da phpyi ayırt edemiyorsa, libapache2-mod-php4 pakedini kurun. Normalde php4 pakedini kurduğunuzda bu paket de kurulur fakat başka sürüm bir phpye ihtiyaç duyan diğer paketleri tarafından kazayla kaldırılmış olabilir.
Ayrıca bunu etkinleştirmeye de ihtiyacınız olabilir. sudo a2enmod php4 komutundan sonra sudo /etc/init.d/apache2 restart" komutu ile etkinleştirin. Eğer sudo a2enmod php4 komutu "$ This module does not exist!" çıktısını veriyorsa, libapache-mod-php4 pakedini purge seçeneğiyle kaldırıp tekrar kurmanız gerekir.
Sitenizi test etmeden önce internet tarayıcınızın belleğini (cache) temizlediğinizden mutlaka emin olun.
MYSQL Pakedini PHP 5 ile Kurmak
Herhangi bir yolla ya da belirtildiği gibi komut satırından şu paketleri kurun:
sudo aptitude install mysql-server libapache2-mod-auth-mysql php5-mysql
MYSQL Pakedini PHP 4 ile Kurmak
İlk olarak, bu paketler main deposunda olmadığından universe deposunu etkinleştirin.
Herhangi bir yolla ya da belirtildiği gibi komut satırından şu paketleri kurun:
sudo aptitude install mysql-server libapache2-mod-auth-mysql php4-mysql
PHP'yi Kurduktan Sonra
PHP'nin bir betiği yüklerkenki bellek limitini değiştirmeniz gerekebilir. /etc/php5/apache2/php.ini dosyasını düzenleyerek memory_limit değerini artırın.
MySQL Pakedini Kurduktan Sonra
Mysql bind adreslerini atamak
Ağınızdaki diğer bilgisayarlardan veritabanına erişmeden önce, bind adresini değiştirmeniz gerekir. Bu durumun bir güvenlik problemi yaratabileceğini aklınızda bulundurun, çünkü veritabanınıza sizinkinden farklı bilgisayarlar tarafından erişilebilecek. Eğer aynı makinede mysql gerektiren uygulamalar çalışıyor ise bu adımı atlayın.
nano /etc/mysql/my.cnf
komutunu girin ve:
bind-address = localhost
satırını dahili ip adresinizle, öerneğin 192.168.1.20 ile değiştirin:
bind-address = 192.168.1.20
Eğer ip adresiniz dinamik ise, bind-address satırını devre dışı bırakabilirsiniz ve böylece şu anda kullandığınız ipyi öntanımlı olarak kullanır.
Eğer bind-adsress satırını değiştirmeden bağlanmaya çalışırsanız, "Can not connect to mysql error 10061" hatasını alırsınız.
Mysql root şifresi atamak
Veritabanınıza konsoldan erişmeden önce:
mysql -u root
yazmanız gerekir. Mysql konsolunda ise şunu yazın:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
yourpassword kısmı dizin atadığınız şifredir.
Başarılı bir mysql komutu aşağıdaki çıktıyı verecektir:
Query OK, 0 rows affected (0.00 sec)
Mysql komutları çok sayıda satırdan oluşabilir. Mysql komutunuzu noktalı virgül (;) ile bitirmeyi unutmayın.
Not: Eğer mysql root için atanmış bir şifreniz zaten varsa, şu komutu kullanın:
mysql -u root -p
(Mysql-root şifrenizi unuttunuz mu? (Mysql Şifre Sıfırlama kısmına bakın.)
Bir mysql veritabanı yaratmak
mysql> CREATE DATABASE veritabani1;
Bir mysql kullanıcısı yaratmak
Bütün ayrıcalıklara sahip bir yeni kullanıcı yaratmak için (yalnızca sorun gidermede kullanın), mysql komut satırında:
{{{mysql> GRANT ALL PRIVILEGES ON *.* TO 'kullaniciadi'@'localhost' IDENTIFIED BY 'şifreniz' WITH GRANT OPTION; }}}
komutunu verin.
Yalnızca "veritabani1" adlı veritabanını kullanabilen daha az ayrıcalığa sahip bir yeni kullanıcı yaratmak için (çoğu web uygulaması için yeterlidir), mysql komut satırında:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON veritabani1.* TO 'kullaniciadi'@'localhost' IDENTIFIED BY 'şifreniz';
kullaniciadi ve şifreniz sizin seçtiğiniz herhangi bir şey olabilir. veritabani1 kullanıcının erişeceği veritabanının adıdır. localhost veritabanınıza eriştiğiniz konumdur. Veritabanına her konumdan bağlantıya izin vermek (ya da belli konumlardan) için bu değeri '%' ile (ya da host ya da ip adresleriyle) değiştirebilirsiniz.
mysql komut satırından çıkmak için:
mysql> \q
yazın.
mysql root şifresi artık konmuş olduğu için, eğer mysql'yi tekrar (root olarak) kullanmak isterseniz:
mysql -u root -p
komutunu yazıp daha sonra şifrenizi girmeniz gerekecektir.
Ayarları yedeklemek
Alternatif yollar
mysql root şifresini atamak ve veritabanı yaratmak için birden fazla yol vardır. Örneğin mysqladmin kullanılabilir:
mysqladmin -u root -p şifre şifreniz
ve
mysqladmin -u root -p create veritabani1
Phpmyadmin ve mysql-admin
Root şifresi atama ve veritabanları yaratma da dahil bütün mysql işleri phpmyadmin ya da mysql-admin kullanılarak grafik arabirimde yapılabilir.
Birini ya da her ikisini de kurmak için ilk önce universe depolarını etkinleştirmeniz gerekir.
Daha sonra:
phpmyadmin
pakedini kurun.
Sorun Giderme
Eğer blowfish_secret hatası alıyorsanız: /etc/phpymyadmin/blowfish_secret.inc.php dosyasından kriptografi için bir bölüm seçin ve ayarlayın, daha sonra satırı (php etiketleri hariç) /etc/phpmyadmin/config.inc.php dosyasına kopyalayın, yoksa hata alırsınız.
Alternatif: phpyMyAdmin programını kaynak koddan kurun
phpMyAdmin sayfasını inceleyin.
Mysql-admin
Mysql-admin masaüstünde yerel olarak çalışır.
mysql-admin
pakedini kurun.
MySQL Referans El Kitabı içindeki 2.9.3. Başlangıç MySQL Hesaplarının Güvenliğini Sağlamak kısmını okumalısınız.
Apache Konfigurasyonunu Düzenlemek
Hali hazırda bulunan kullanıcınızın PHP sayfaları yöneticisi olmasını isteyebilirsiniz. Bunu yapmak için Apache konfigurasyon dosyasını şu şekilde düzenlemelisiniz:
$ gksudo "gedit /etc/apache2/apache2.conf"
"User" ve "Group" ile başlayan değişkenleri bulun ve şu anda kullandığınız kullanıcı adı ve grup adı ile değiştirin. Daha sonra Apache'yi yeniden başlatmalısınız.
Belirli kullanıcı web siteleriyle (localhost/~kullaniciadi ile erişilen) ilgili konfigurasyon seçenekleri /etc/apache2/mods-enabled/userdir.conf dosyasındadır.
Apache'yi Çalıştırmak, Durdurmak ve Yeniden başlatmak
Apache'yi çalıştırmak için şu komutu kullanın:
$ sudo /usr/sbin/apache2ctl start
Durdurmak için:
$ sudo /usr/sbin/apache2ctl stop
Konfigurasyonu test etmek için:
$ sudo /usr/sbin/apache2ctl configtest
Son olarak, yeniden başlatmak için:
$ sudo /usr/sbin/apache2ctl restart
komutlarını çalıştırın.
Apache'yi kullanmak
Apache'ye tarayıcınızın adres çubuğuna 127.0.0.1 ya da http://localhost yazarak (öntanımlı olarak 80 portunda dinler) erişebilirsiniz. Apache sunucu sayfalarının öntanımlı dizini /var/www dizinidir. İçine dosya yerleştirmek için root erişimi gereklidir. Yalnızca dosya yöneticisini root olarak başlatmak için uçbirimden şu komutu verin:
$ sudo nautilus
Eğer /var/www dizine sahip olmak istiyorsanız (yalnızca üretim dışı web sunucuları için kullanın - çok da güvenli bir yol değildir) şu komutu verin:
$ sudo chown -R $kullaniciadi:$kullaniciadi /var/www
Durum
Php kurulumunuzun durumunu kontrol etmek için:
$ gksudo "gedit /var/www/testphp.php"
dosyasını açın ve şu satırı girin:
<?php phpinfo(); ?>
http://sunucuipadresiniz/testphp.php ya da http://localhost/testphp.php adresini tarayıcınızda açarak bu sayfayı görüntüleyin.
Apache'nin Güvenliğini Sağlamak
Eğer Apache kurulumunuzu yalnızca bir geliştirme sunucusu için kullanmak ve gelen bağlantı girişimlerini dinlemesini engellemek isterseniz, yapılması gereken basittir.
$ gksudo "gedit /etc/apache2/ports.conf"
komutu ile dosyayı açın ve şu satırı ekleyin:
Listen 127.0.0.1:80
Bu dosyayı kaydedin ve yukarda belirtildiği gibi Apache'yi yeniden başlatın. Artık Apache yalnızca yerel alana hizmet edecektir, http://127.0.0.1 ya da http://localhost
Bir Dizini Şifre ile Korumak
Belirli bir dizini şifre ile korumanın 2 yolu vardır. Önerilen yol /etc/apache2.conf dosyasını düzenlemektir (bunun için root erişimi gerekir). Diğer bir yol dizindeki bir .htaccess dosyasını düzenlemektir.
.htaccess ile Bir Dizini Şifre ile Korumak
Apache htaccess dosyalarını etkinleştirmek bölümüne bakın.
Uyarı: En azından bir kaç Ubuntu versiyonunda .htaccess dosyaları ön tanımlı olarak çalışmaz. Etkinleştirmek için yukardaki bağlantıya bakın.
önizlemeler
Eğer bir dizine (özel bir dosya dışında) web tarayıcınızı yönlendirirseniz ve bu dizinde "index.html" dosyası yok ise, Apache o dizindeki tüm dosyaları ve klasörleri anında listelemek için bir index dosyası oluşturacaktır. Her klasör hemen sonraki klasörün ufak bir simgesini içerir.
Her resim dosyasının yanına o resmin özel bir önizleme resmini (genel "resim simgesi" dışında) koymak için:
Apache::AutoIndex 0.08 or Apache::Album 0.95 linkine bakın.
Bilinen Sorunlar
Skype uyumsuzluğu
Skype gelen bağlantılar için 80 numaralı portu kullanır ve bu nedenle Apache'yi engelleyebilir. Çözüm uygulamalardan biri içinden portu değiştirmektir. Skype içindeki port numarasını değiştirmek için menüden Araçlar > Seçenekler kısmına gidin ve Gelişmiş bölümüne tıklayın ve daha sonra gelen çağrılar için port kısmını kendinize göre değiştirin.

