LAMP
Konu başlıkları |
Giriş
Bu doküman Arch Linux üzerinde Apache web sunucusunu nasıl kurup kullanabileceğiniz anlatmak amacıyla yazılmıştır. Ayrıca, PHP, MySQL ve kurup bunları Apache'ye entegre etmeyi de anlatmaktadır. Bu kombinasyon LAMP (Linux Apache MySQL PHP) olarak adlandırılmaktadır.
Kurulum
# pacman -S apache php php-apache mysql
Bu komut ile Apache, PHP ve MySQL'i birlikte kurabilirsiniz. Eğer isterseniz, bunları aşağıdaki yönergeleri takip ederek ayrı ayrı da kurabilirsiniz.
Yapılandırma
Apache
Güvenlik nedeniyle Apache doğrudan veya bir betik yardımıyla başlatılır başlatılmaz /etc/httpd/conf/httpd.conf dosyası içindeki UID/GID izinlerine geçer.
- http kullanıcısının sistemde mevcut olup olmadığını aşağıdaki komut çıktısında http ibaresini arayarak denetleyin:
# grep http /etc/passwd
- Mevcut değilse http sistem kullanıcısını oluşturun:
# useradd -d /srv/http -r -s /bin/false -U http
- Bu,
/srv/http/ev dizinine sahip, bir sistem hesabı olarak (-r), sahte bir kabuk ile (-s/bin/false) bir kullanıcı oluşturur ve aynı kullanıcı adına sahip bir grup oluşturur(-U).
-
/etc/hostsdosyasına şu satırları ekleyin (eğer dosya yoksa oluşturun):
127.0.0.1 localhost.localdomain localhost
- Farklı bir makine adı kullanmak istiyorsanız, şu şekilde ekleyebilirsiniz:
127.0.0.1 localhost.localdomain localhost makineadım
- <
/etc/rc.confdosyasını düzenleyin: Eğer yukarıdaki gibi makine adı eklemişseniz değiştirmenize gerek yoktur; yoksa, "localhost" kullanın:
# # Networking # HOSTNAME="localhost"
- Makine adınının
/etc/hostsdosyasında yer aldığından emin olun yoksa apache başlamaz. Bundan farklı olara/etc/httpd/conf/httpd.confdosyasını kök olarak düzenleyerek ve şu satırı devredışı bırakabilirsiniz:
LoadModule unique_id_module modules/mod_unique_id.so
Yani şu şekilde görünmesini sağlayın:
#LoadModule unique_id_module modules/mod_unique_id.so
- Yapılandırmayı kişiselleştirin. Arzunuza göre en azından
httpd.confveextra/httpd-default.confdosyalarını düzenleyin. Güvenlik nedeniyleextra/httpd-default.confdosyasında ServerTokens Full değerini ServerTokens Prod olarak ve ServerSignature On değerini ServerSignature Off olarak değiştirebilirsiniz.
- Sunucuyu çalıştırmak için şu komutu verin:
# rc.d start httpd
- Yukarıdaki komuttan sonra Apache'nin çalışması beklenmektedir. Tarayıcınız ile http://localhost/ sayfasını ziyaret edin. Apache'nin test sayfası gösterilecektir. Tarayıcınızda bir 403 hatası alıyorsanız
/etc/httpd/conf/httpd.confdosyasında aşağıdaki satırı devre dışı bırakın:
Include conf/extra/httpd-userdir.conf yani # Include conf/extra/httpd-userdir.conf
- Apache'yi başlangıçta otomatik çalıştırmak için
/etc/rc.confdosyasını httpd artsürecini ekleyin:
DAEMONS=(... httpd ...)
Kullanıcı dizinleri
- Kullanıcı dizinlerini kullanmak istiyorsanız (mesela
~/public_html, yani dolayısıyla http://localhost/~kullanıcı),/etc/httpd/conf/extra/httpd-userdir.conf) dosyasında şu satırı devre dışı bırakın:
Include conf/extra/httpd-userdir.conf
- Apache'nin ev dizinlerini görebilmesi için gerekli izinleri ayarlamanız gerekmektedir. Ev dizininiz ve
~/public_html/dizinleri diğerleri tarafından çalıştırılabilir olmalıdır. Aşağıdaki chmod ayarları yeterli olacaktır:
$ chmod o+x ~ $ chmod o+x ~/public_html
- Ev dizininizi apache ile paylaştırmak için daha güvenli bir yol ise http kullanıcısını ev dizininizin ait olduğu gruba üye yapmaktır. Örneğin ev dizininiz ve tüm alt dizinleri piter grubuna dahilse tek yapmanız gereken aşağıdaki komutu yürütmektir:
$ usermod -aG piter http
Elbette ki ~/, ~/public_html, ve ~/public_html altındaki tüm alt dizinlerde grup üyelerine (örneğimizde piter grubu), okuma ve çalıştırma izinlerini de sağlamalısınız. Gereksinimlerinize göre değiştirmeniz gerekecek olan aşağıdaki komut bu işi yapmaktadır:
$ chmod g+xr-w /home/kullanıcı adı $ chmod -R g+xr-w /home/kullanıcı adı/public_html
Daha sonra apache' yi yeniden başlatın:
# rc.d restart httpd
SSL
Kendiliğinden imzalı sertifika oluşturun (anahtar boyutunu ve geçerlilik süresini değiştirebilirsiniz)
# cd /etc/httpd/conf # openssl genrsa -des3 -out server.key 1024 # openssl req -new -key server.key -out server.csr # cp server.key server.key.org # openssl rsa -in server.key.org -out server.key # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
/etc/httpd/conf/httpd.conf dosyasında şu satırı etkinleştirin
Include conf/extra/httpd-ssl.conf
Daha sonra apache' yi yeniden başlatın:
# rc.d restart httpd
Sanal Makineler
Birden fazla makineniz olsun istiyorsanız /etc/httpd/conf/httpd.conf dosyasına
# Virtual hosts Include conf/extra/httpd-vhosts.conf
satırlarını ekleyin.
Aşağıdaki örneğe göre /etc/httpd/conf/extra/httpd-vhosts.conf dosyasında makineleri ayarlayın.:
NameVirtualHost *:80 #Bu ilk sanal makine şunları etkinleştirir: http://127.0.0.1, veya: http://localhost, #halen /srv/http/*index.html sayfasına gitmeniz gerekir(yoksa bir "sayfa bulunamadı" -404- hatası alırsınız). #the reason for this: once you tell httpd.conf to include extra/httpd-vhosts.conf, #ALL vhosts are handled in httpd-vhosts.conf(including the default one), # E.G. the default virtualhost in httpd.conf is not used and must be included here, #otherwise, only domainname1.dom & domainname2.dom will be accessible #from your web browser and NOT http://127.0.0.1, or: http://localhost, etc. # <VirtualHost *:80> DocumentRoot "/srv/http" ServerAdmin root@localhost ErrorLog "/var/log/httpd/127.0.0.1-error_log" CustomLog "/var/log/httpd/127.0.0.1-access_log" common <Directory /srv/http/> DirectoryIndex index.htm index.html AddHandler cgi-script .cgi .pl Options ExecCGI Indexes FollowSymLinks MultiViews +Includes AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin your@domainname1.dom DocumentRoot "/home/username/yoursites/domainname1.dom/www" ServerName domainname1.dom ServerAlias domainname1.dom <Directory /home/username/yoursites/domainname1.dom/www/> DirectoryIndex index.htm index.html AddHandler cgi-script .cgi .pl Options ExecCGI Indexes FollowSymLinks MultiViews +Includes AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin your@domainname2.dom DocumentRoot "/home/username/yoursites/domainname2.dom/www" ServerName domainname2.dom ServerAlias domainname2.dom <Directory /home/username/yoursites/domainname2.dom/www/> DirectoryIndex index.htm index.html AddHandler cgi-script .cgi .pl Options ExecCGI Indexes FollowSymLinks MultiViews +Includes AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
Sanal makinelerinizi /etc/hosts dosyasına ekleyin:
127.0.0.1 domainname1.dom 127.0.0.1 domainname2.dom
Daha sonra apache' yi yeniden başlatın:
# rc.d restart httpd
Sanal makinelerinizi kişisel dizininizde oluşturmak isterseniz, Apache' nin 'Userdir' değeri ile çakışma yaşayabilirsiniz. Bundan kaçınmak için aşağıdaki satırları devre dışı bırakın:
# User home directories #Include conf/extra/httpd-userdir.conf
Önceden anlatıldığı gibi gerekli izinleri ayarlayın:
# chmod 0775 /home/kullanıcı adı/
Çok fazla sayıda sanal makine oluşturuyorsanız, bunları kolayca etkinleştirmek veya devre dışı bırakmak için her bir makine için bir yapılandırma dosyası oluşturarak tek bir dizin altında (mesela /etc/httpd/conf/vhosts) toplayın.
Öncelikle dizini oluşturun:
# mkdir /etc/httpd/conf/vhosts
Daha sonra tek tek yapılandırma dosyalarını bu dizin altında oluşturun:
# nano /etc/httpd/conf/vhosts/domainname1.dom # nano /etc/httpd/conf/vhosts/domainname2.dom
Son adımda tek tek bu yapılandırma dosyalarının /etc/httpd/conf/httpd.conf dosyasında yer almasını sağlayın:
#Enabled Vhosts: Include conf/vhosts/domainname1.dom #Include conf/vhosts/domainname1.dom
Bu makineleri artık /etc/httpd/conf/httpd.conf dosyasında devre dışı bırakabilir veya etkinleştirebilirsiniz.
Gelişmiş Seçenekler
/etc/httpd/conf/httpd.conf dosyasındaki şu seçenekler ilginizi çekebilir:
# Listen 80
Apache'nin hangi portu kullanacağını belirtir. Eğer bir router arkasında iseniz, bu portu yönlendirmeniz gerekmektedir.
# ServerAdmin sample@sample.com
Hata sayfalarında vs. görüntülenecek yönetici e-posta adresi.
# DocumentRoot "/srv/http"
Bu seçenek web sayfalarınızı koyacağınız dizini ifade eder. İstediğiniz gibi değiştirebilirsiniz. Fakat,
<Directory "/srv/http">
değerini, DocumentRoot ile aynı yapmayı unutmamalısınız.
PHP
PHP kurulduğu gibi çalışacak biçimde ayarlanmıştır.
-
/etc/httpd/conf/httpd.confdosyasına şu satırları ekleyin:
LoadModule php5_module modules/libphp5.so Include conf/extra/php5_module.conf
Not: "Include" satırı "LoadModule" satırının hemen altına eklenmemelidir. "Includes" bölümüne eklenmelidir.
- Eğer .phtml dosya uzantısı kullanıyorsanız, /etc/httpd/conf/extra/php5_module.conf dosyasında şu şekilde bir düzenleme yapabilirsiniz:
DirectoryIndex index.php index.phtml index.html
- Eğer GD modülünü kullanmak istiyorsanız,
/etc/php/php.inidosyasında:
;extension=gd.so
satırını
extension=gd.so
şeklinde değiştirin.
Hangi modülleri etkinleştirdiğinize dikkat etmelisiniz. Eğer php'nin isteğe bağlı modüllerini kurmamışsanız, çalışmama gibi sorunlarla karşılaşabilirsiniz.
- Eğer
DocumentRootayarını/home/dışı bir dizin olarak belirlemişseniz,/etc/php/php.inidosyasındaopen_basedirparametresinde tanımlamanız gerekmektedir:
open_basedir = /home/:/tmp/:/usr/share/pear/:/path/to/documentroot
tavsiye - Şu şekilde bir ayar yapabilirsiniz: open_basedir = /home/:/tmp/:/usr/share/pear/:/srv/http
- Değişikliklerin gerçekleştirilmesi için Apache'yi tekrar başlatmanız gerekmektedir:
# /etc/rc.d/httpd restart
- PHP'yi şu şekilde test edebilirsiniz:
<html> <head> <title>PHP Test Page</title> </head> <body> This is Arch Linux, running PHP. <?php phpinfo(); ?> </body> </html>
Bu dosyayı test.php olarak kaydedip /srv/http/ altına veya ~/public_html altına koyabilirsiniz.
- Test etmek için: http://localhost/test.php veya http://localhost/~kullanıcı/test.php adreslerini deneyebilirsiniz.
Eğer sorun yaşarsanız, /etc/httpd/conf/httpd.conf dosyasında aşağıdaki düzenlemeleri gerçekleştirebilirsiniz.
- httpd.conf dosyasını açın
# nano /etc/httpd/conf/httpd.conf
-
<IfModule mime_module>altına ekleyin
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
- Apache'yi tekrar başlatın
# /etc/rc.d/httpd restart
Yukarıdaki gibi testi tekrar uygulayın.
MySQL
- MySQL'i MySQL sayfasında anlatıldığı gibi yapılandırın.
-
/etc/php/php.inidosyasında şu satırın başındaki ; işaretini kaldırın:
;extension=mysqli.so ;extension=mysql.so
-
mysqlveritabanında düzenleme yaparak kullanıcı ekleyebilir ve izinlerini düzenleyebilirsiniz. Bu değişikliklerin geçerli olması için mysql servisini tekrar başlatmanız gereklidir.
- Çalıştırmak için:
# rc.d start mysqld
- Ayrıca Apache' nin de çalıştırılması gerekebilir:
# rc.d restart httpd
- MySQL'in çalışması beklenmektedir.Kök parolasını ayarlayın ve şu komutları çalıştırarak deneyin:
# mysqladmin -u root password password # mysql -u root -p
- MySQL'i açılışta çalıştırmak için
/etc/rc.confdosyasında şu şekilde düzenleme yapabilirsiniz:
DAEMONS=(... mysqld ...)
- Ayrıca,
/etc/my.cnfdosyasında,skip-networkingsatırını devredışı bırakabilirsiniz:
#skip-networking
Diğer Kaynaklar
- MySQL - Arch için MySQL kılavuzu
- http://www.apache.org/
- http://www.php.net/
- http://www.mysql.com/