Arch Linux - LAMP Kurulumu
Tweet Blog'u İndir
Arch Linux için Apache, MySQL, PHP ve PHPMyAdmin kurulumu.
Öncelikle paket yöneticisi yardımı ile apache paketinin kurulumunu gerçekleştirelim.
Gerekli apache ayarlaması yapmak için konfigürasyon dosyasında değişiklik yapacağız. Apache konfigürasyonu /etc/httpd/conf/httpd.conf dosyasında yer alıyor.
Ben profesyonel bir web sunucusunda çalışmadığım, geliştirme ortamında çalıştığım için Apache’nin kullandığı user olarak kendimi belirtiyorum. İsterseniz siz de bu şekilde belirtip daha rahat çalışabilirsiniz.
Eğer 80 portunu başka bir yazılımda kullanıyorsanız dilerseniz Apache’nin portunu değiştirebilirsiniz.
Dışardan sizin web sunucunuza erişim olmamasını istiyorsanız Listen parametresini Listen 127.0.0.1:80 olarak değiştirebilirsiniz.
Varsayılan olarak /srv/http klasörü DocumentRoot olarak tanımlı. Belirttiğiniz klasör web olarak servis edilmekte. Dilerseniz bu klasörü değiştirebilirsiniz. Fakat değiştirdikten sonra <Directory "/srv/http"> kısmını da değiştirmeyi unutmayın. Aksi takdirde 403 Hatası alırsınız.
Ek olarak DocumentRoot klasörü olarak belirtiğiniz klasör ve üst klasörleri executable yani çalıştırılabilir olmalıdır.
Klasörleriniz içerisinde .htaccess ile Apache üzerinde klasör bazlı ayar yapmak istiyorsanız AllowOverride değerini All olarak değiştirebilirsiniz. Ek olarak bunun çalışması için aşağıdaki satırı bulup önündeki yorum satırını kaldırın.
Varsayılan olarak Apache, kullanıcı klasörlerini destekliyor (http://localhost/~eray). Bu klasörü değiştirmek istiyorsanız /etc/httpd/conf/extra/httpd-userdir.conf dosyasından değiştirebilirsiniz.
Yukarda da belirttiğim gibi klasörünüzün ve üst klasörlerin çalıştırılabilir olması gerekiyor. Bunun için çalıştırma izni vermelisiniz.
chmod -R o+x ~/Webserver
Değişikliklerin geçerli olması için servisi yeniden başlatalım.
Daha önceden yazdığım Otomatik Apache Sanal Sunucu adımlarını takip ederek klasör klasör sanal sunucu oluşturabilirsiniz.
Paket yöneticisi yardımı ile php ve php-apache paketlerini sisteme yükleyeceğiz.
Apache tarafında mpm_event modülü yerine mpm_prefork modülünü aktifleştirmemiz gerekiyor. Bu sebeple /etc/httpd/conf/httpd.conf dosyasındaki mpm_event modülünü yorum satırı yapıyoruz.
Ardından mpm_prefork modülünün yorum satırını kaldırıyoruz.
Dilerseniz mpm_prefork yerine de proxy_fcgi kullanabilirsiniz.
PHP’yi aktif etmek için /etc/httpd/conf/httpd.conf içerisindeki LoadModule listesinin sonuna aşağıdakini ekliyoruz.
Aynı şekilde Include listesinin sonuna da aşağıdakini ekliyoruz.
Servisi yeniden başlatıyoruz.
PHP kurulumunu test etmek için aşağıdaki gibi test.php isminde bir dosya oluşturabilirsiniz.
PHP ile ilgili ayarlamaları /etc/php/php.ini dosyası üzerinden yapacağız.
Maksimum Çalıştırma Süresi
Her scriptin saniye olarak belirli bir timeout yani zaman aşımı süresi vardır. Dilerseniz bunu değiştirebilir hatta limitsiz yapabilirsiniz.
; CLI kullanımlarında 0 değeri otomatik olarak verilmektedir. Yani zaman aşımı yoktur
Bir scriptin çalıştırılmasında harcanabilecek maksimum hafıza miktarıdır. Varsayılan olarak 128MB seçili bunu dilerseniz arttırabilirsiniz.
Geliştirme ortamında çalışanlar için hataları görmek önemlidir. Bu sebeple error_reporting değerini belirttiğiniz hata türlerine göre değiştirebilirsiniz.
Ek olarak, hata mesajlarını ekrana yazdırmak için de display_errors değerini kullanabilirsiniz. Geliştirme ortamında bu değeri On yapmanız yararlı olacaktır.
Açılış Hata Mesajları
PHP’nin kendisini çalıştırmaya başladığınızda çıkan sorunlardır. Genellikle konfigürasyonla ilgili hatalar olduğunda çıkar. Bunların bastırılmaması ve ekranda gözükmesi için On değerini verebilirsiniz. Tabi ki sadece geliştirme ortamında kullanmanız gerekiyor.
track_errors değerini aktif hale getirerek script içerisinde $php_errormsg değişkeni ile son hata mesajını alabilirsiniz. Kullandığınız çalışma ortamında gerekli olabilir.
Maksimum POST Büyüklüğü
PHP’nin kabul edeceği maksimum POST veri büyüklüğüdür. Dilerseniz 0 değeri vererek limiti kaldırabilirsiniz.
Maksimum Dosya Büyüklüğü
Yüklenebilecek dosyalar için maksimum dosya boyutudur. Varsayılan olarak 2M yer alıyor.
Maksimum Dosya Adeti
Bir request içerisinde yüklenebilecek maksimum dosya adetidir. Varsayılan olarak 20 yer alıyor.
Geçerli bölgenizi ayarlamak için date.timezone değerini değiştirebilirsiniz. Önündeki yorum satırını kaldırmayı unutmayınız.
Çeşitli php eklentilerini aktif etmek için öncelikle paket yöneticisi yardımı ile eklentiyi yüklemeli ardından php.ini dosyasında yüklediğiniz eklentiyi aktif hale getirmelisiniz. Bunun için basşındaki yorum satırını kaldırabilirsiniz.
Script içerisinde Bzip fonksiyonlarını(bzclose, bzcompress, bzdecompress, bzopen, bzread, bzwrite vs.) kullanmak için aktif edebilirsiniz. Aktif hale getirmek için php.ini dosyasında ilgili satırın başındaki noktalı virgülü kaldırmanız yeterli.
Script içerisinde FTP işlemleri yapmak için bu modülü aktif hale getirebilirsiniz.
Resim işleme ve oluşturma yapıyorsanız bu modülü aktif hale getirebilirsiniz.
Ek olarak paketi kurmayı unutmayın.
pacman -S gd php-gd
Genellikle dil desteği amaçlı kullanılan gettext kütüphanesini aktif edebilirsiniz.
Imap fonksiyonlarını kullanmak için aktif hale getirebilirsiniz.
pacman -S php-imap
Çeşitli kütüphaneler tarafından da kullanılan mcrypt_ fonksiyonlarına erişmek için aktif hale getirebilirsiniz.
Ek olarak paketini de kurun.
pacman -S php-mcrypt
MySQLi fonksiyonlarını kullanmak istiyorsanız aktif hale getirebilirsiniz.
PDO MySQL, ODBC, DBLib, PostgreSQL, SQLite
PDO ile belirtilen veritabanı yönetim sistemlerini kullanmak için eklentiyi aktif hale getirebilirsiniz. Seçtiğiniz veritabanı sistemini de bilgisayarınıza kurmayı unutmayın.
Resim işleme için kullanabileceğiniz bir paket. AUR deposundan indirebilirsiniz.
yaourt -S php-imagick
/etc/php/conf.d/ klasörü içerisine kendisi dosya attığı için otomatik olarak aktif hale geliyor. php.ini üzerinde değişiklik yapmanıza gerek yok.
Kurduğunuz PHP modüllerini test etmek için aşağıdaki komutu kullanabilirsiniz.
Sonuç olarak size eklenen modülleri döndürecektir.
PHP’nin bağımlılık yöneticisi olarak kullanılan Composer‘ı yüklemek için paket yöneticisini kullanabilirsiniz.
pacman -S composer
Kurulumu test etmek için
MySQL (MariaDB) Kurulumu
MariaDB, Arch Linux’un varsayılan MySQL implementasyonudur. Oracle firmasının MySQL’ini kullanmak için AUR’u kullanabilirsiniz fakat MariaDB’yi öneririm.
Paket yöneticisinden mariadb paketini yükleyelim.
MariaDB servisini başlatmadan önce birkaç ayarlama yapacak olan mysql_install_db‘yi çalıştırıyoruz. Kurulum yerini dilerseniz değiştirebilirsiniz fakat /home /root ve /run/user klasörlerini tercih etmeyin. Çünkü ProtectHome=true değeri bulunduğu için bu klasörlere MariaDB tarafından erişim sağlanamıyor. Ek olarak datadir klasör değişimini /etc/mysql/my.cnf içerisinde de yapmalısınız.
Artık servisi başlatabilirsiniz.
Veritabanı katmanında birkaç güvenlik önlemi almak ve root parolasını da değiştirmek için aşağıdaki scripti çalıştırabilirsiniz.
Çalıştırma sırasında sorulan sorular şu şekilde:
Set root password? root parolasını değiştirmek istiyorsanız Y seçeneğini seçin.
Remove anonymous users? Genellikle test amaçlı olarak gizli kullanıcılara izin veriliyor Dilerseniz bunları silebilirsiniz.
Disallow root login remotely? root kullanıcısına localhost haricinde erğişimi kapatmak için Y seçeneğini seçebilirsiniz.
Remove test database and access to it? Test veritabanını ve ona erişimi kaldırmak istiyorsanız Y seçeneğini seçebilirsiniz.
Reload privilege tables now? Değişikliklerin hemen geçerli olmasını istiyorsanız Y seçebilirsiniz.
Dışardan Erişimi İptal Etmek
Varsayılan olarak MySQL dışardan erişime açıktır. Dışardan erişimleri engellemek için /etc/mysql/my.cnf dosyasındaki aşağıdaki satırın başındaki yorum simgesini kaldırmanız yeterli.
Dışardan erişim kapatılsa dahi localhost üzerinden giriş yapabilirsiniz.
UTF-8 yerine UTF8MB4 kullanmanızı tavsiye ederim. Tam anlamıyla Unicode desteği sağlamış olursunuz. Bunun için /etc/mysql/my.cnf içerisine aşağıdaki satırları eklemeniz yeterli.
Web tabanlı olarak MySQL veritabanlarını yönetmek için kullanabilirsiniz.
Öncelikle phpmyadmin paketini sistemimize kuralım.
PHP tarafında mysqli modülünü aktif etmemiz gerekiyor, bunu PHP kısmında anlattık.
Ek olarak bz2 ve zip modüllerini de aktif hale getirerek sıkıştırılmış dosya desteği de ekleyebilirsiniz.
Apache tarafında .../phpmyadmin olarak girildiğinde PHPMyAdmin gözükmesi için birkaç ayarlama yapmamız gerekiyor. Bunun için /etc/httpd/conf/extra/phpmyadmin.conf dosyası oluşturup içerisine aşağıdakileri ekleyelim.
Ardından bunu /etc/httpd/conf/httpd.conf dosyası içerisinde dahil edelim.
PHPMyAdmin Dışardan Erişimi Kapatma
Varsayılan olarak web servis dosyalarımızı görebilen herkes PHPMyAdmin arayüzüne de erişebilmekte. Bunu devredışı bırakmak için /etc/httpd/conf/extra/phpmyadmin.conf dosyasında yer alan Require all granted parametresini Require local olarak değiştirmemiz yeterli.
PHPMyAdmin kısmında veritabanı kullanıcı bilgilerini girmenize gerek kalmadan otomatik olarak giriş yapmak için /etc/webapps/phpmyadmin/config.inc.php dosyasındaki auth_type değerini config olarak değiştirin.
Ardından alt satıra aşağıdaki eklemeleri yapın.
$cfg['Servers'][$i]['password'] = 'mysql_parolasi';
Apache, MySQL, PHP ve PHPMyAdmin ile ilgili karşılaşabileceğiniz sorunlara ait çözümler.
Türkçe Karakter Dönüşümü Sorunu
Laravel, Symfony veya diğer kütüphanelerde olduğu gibi kendi sisteminizde de oluşabilecek bir sorun. PHP karakterin büyük harf, küçük harf dönüşümü için sistem dilini kullanmakta. Bu sebeple Arch Linux sisteminize öncelikle en_US.UTF-8 dilini eklemelisiniz. Bunun için /etc/locale.gen dosyasında yer alan aşağıdaki satırın yorum simgesini(#) kaldırın.
Ardından bu dil dosyalarının oluşturulmasını sağlayın.
Son olarak LC_CTYPE yani PHP’nin dönüşüm için kullandığı dili değiştirmeliyiz. Bunun için de /etc/locale.conf içerisine aşağıdaki satırı ekleyin.
Bu sorunun farkedilmesi ve çözümü ile ilgili yardımlarından dolayı Burak Karahan’a (@mburakkarahan) teşekkür ederim.
LAMP Stack kurulumunu tamamladık. Dilerseniz geliştirme ortamınızı daha da iyi hale getirebilirsiniz. Makalede hata veya eksik varsa özür dilerim, bunları bana iletirseniz gerekli eklemeleri yapacağım. Teşekkürler.
Theme: Jekyll Bulma by Eray Aydın. The source code is licensed MIT. The website content is licensed CC ANS 4.0.