[Nasıl] 14.04 üzerine Nginx,MySQL,PHP-FPM,Phpmyadmin kurulumu - LEMPP

Başlatan heartsmagic, 27 Aralık 2014 - 19:41:04

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

heartsmagic


Nginx, son zamanların parlayan Web sunucusu, dünya üzerinde birçok kişi artık Apache yerine kendisini terich etmeye başladı. Eğer Apache kullanmak için özel bir sebebiniz yoksa ve Apache'den çok daha hızlı ve kaynak cimrisi bir sunucu arıyorsanız Nginx'e şans verebilirsiniz. Birçok alanda Apache'den daha başarılı işler yaptığına sağda solda denk gelmeniz mümkün. Sunucunuzdaki hem isteklere cevap verme süresi hem de kaynak tüketimi belirli bir şekilde iyileşme gösterebilir.  Bu kadar propaganda yeter :)

Anlatım, sıfırdan kurulmuş 14.04 LTS 64bit sunucu sürümü üzerinde yapılmaktadır. Ancak sürümün masaüstü olması da anlatımı değiştirmeyecektir. Sunucu üzerinde anlatımı yapıldığı için dosya düzenlemelerinde nano metin düzenleyicisi kullanılacaktır. Dileyen masüasütünde arayüz desteği olan gedit ile de dosyaları düzenleyebilir. nano görülen yerlerde gedit ile işlem yapmak bunun için yeterlidir.

Her seferinde sudo kullanmamak için sunucu üzerinde root değilsek öncelikle kendisine geçelim ve sistemi güncelleyelim:
sudo -i
apt-get update
apt-get upgrade


== Nginx kurulumu ==

Kurulum için:

apt-get install nginx

Hemen ardından durumu denetliyoruz:
service nginx status
Alıntı Yap* nginx is running

ps seçeneğimizi de aktaralım, en azından nasıl göründüğünü anlamış oluruz:

ps aux | grep nginx

Alıntı Yaproot     11495  0.0  0.2  85872  1340 ?        Ss   11:15   0:00 nginx: master process /usr/sbin/nginx
www-data 11496  0.0  0.3  86216  1748 ?        S    11:15   0:00 nginx: worker process
www-data 11497  0.0  0.3  86216  1748 ?        S    11:15   0:00 nginx: worker process
www-data 11498  0.0  0.3  86216  1748 ?        S    11:15   0:00 nginx: worker process
www-data 11499  0.0  0.3  86216  1748 ?        S    11:15   0:00 nginx: worker process

Kendisini denemek için tarayıcınız üzerinden http://localhost veya sunucu üzerindeyseniz http://ip_adresi bağlantılarını açabilirsiniz. Nginx, sizi şöyle karşılayacaktır:



== MySQL kurulumu ==

Veritabanlarımızı yönetmek için MySQL'i kurabiliriz basit bir şekilde:

apt-get install mysql-server

İşlem esnasında MySQL'e ait root kullanıcısı için (sistemdeki root kullanıcısından farklı olarak) bize parola soracaktır. Dikkatlice iki defa girerek onaylayabiliriz.
Kurulum başarıyla bittikten sonra şu komutları yürütelim:

mysql_install_db
mysql_secure_installation


İlk komut MySQL için veritabanı dosya yapısını oluşturuken, ikinci komutla güvenliğe dair bazı işlemler yapılmaktadır. İkinci komuttan sonra sizden MySQL için kurulum adımında atamış olduğunuz parolayı soracaktır. Doğru şekilde girdikten sonra değiştirmek isteyip istemediğinizi sorduğunda cevap olarak "n" diyebilirsiniz.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
... skipping.


Bir sonraki adımda ise veritabanında hazır bulunan anonim kullanıcıyı kaldırmak isteyip istemediğimizi soracaktır. Kaldırabiliriz, bunun için de "y" dememiz yeterli.

Remove anonymous users? [Y/n] y
... Success!


Sonraki soru root kullanıcısının girişini sadece yerel makineye (localhost) sınırlamayla alakaldır. Eğer uzaktan root kullanıcısı ile veritabanına bağlanmayı planlamıyorsanız bu soruya da "y" diyebilirsiniz.

Disallow root login remotely? [Y/n] y
... Success!


Ardından hazır bulunan "test" isimli veritabanını silmek isteyip istemediğimiz sorulacaktır, silebiliriz:

Remove test database and access to it? [Y/n] y
- Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
... Failed!  Not critical, keep moving...
- Removing privileges on test database...
... Success!


Demek ki 14.04 paketinde bu veritabanı gelmiyormuş :), sorun değil kendisi de güzelce devam etti ve yetkileri temizledi. Son soru ise ayrıcalık tablolarının yeniden yüklenerek yapılan değişikliklerin kayde geçmesi hakkında, haliyle onaylıyoruz:

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...


Ve ardından işlem tamamlanıyor. Hemen servisi denetleyerek duruma bakalım:

service mysql status
Alıntı Yapmysql start/running, process 12918

ps ile:

ps aux | grep mysql
Alıntı Yapmysql    12918  0.2  8.8 623912 44396 ?        Ssl  11:25   0:00 /usr/sbin/mysqld

== Php-fpm kurulumu ==

Nginx, diğer web sunucularından farklı olarak doğal Php süreçleme desteği sağlamaz, bu nedenle kendisiyle beraber php-fpm kullanılmaktadır.

apt-get install php5-fpm php5-mysql

Kurulumdan sonra php işleyicisini güvenliği arttırmak için biraz değiştireceğiz.

nano /etc/php5/fpm/php.ini

ile açtığımız dosyada aşağıdaki satırı buluyoruz:

;cgi.fix_pathinfo=1

ve şu şekilde değiştiriyoruz:

cgi.fix_pathinfo=0

Lütfen dikkat, başındaki noktalı virgülü kaldırıp, değerini de 0 olarak değiştirdik. Değişiklikten sonra Php işleyicisini yeniden başlatmalıyız:

service php5-fpm restart

Bu adımdan sonra Php-fpm'yi kullanabilmesi için ilgili değişiklikleri yapıyoruz. Düzenleyceğimiz dosyayı temiz temiz işlemek için önce kendisini yedekleyelim ve ardından boş olarak tekrar oluşturalım:

mv /etc/nginx/sites-available/default ~/nginx_default.yedek
nano /etc/nginx/sites-available/default


İlk komut esas dosyayı işlem yaptığınız kullanıcının ev dizinine taşıyacaktır. Biz root ile çalıştığımız için /root dizinine yedeklenecek dosya. Ardından nano ile yeni bir tane oluşturuyoruz. Doğrudan içini şu şekilde işliyoruz:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}


Buradaki server_name localhost; kısmındaki localhost ifadesini eğer gerçek bir sunucu üzerinde çalışacaksanız sunucu ismi veya ip adresiyle değiştirebilirsiniz.

Dosyayı sites-enabled altına bağlıyoruz:

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled

Değişiklikten sonra Nginx'i yeniden dosyasını okutuyoruz:

service nginx reload

İşlerin düzgün bitip bitmediğini anlamak için bir info.php dosyası oluşturup deneyelim.

nano /usr/share/nginx/html/info.php

ile dosyayı açıp içine şunu işliyoruz:

<?php
phpinfo
();
?>


Bu aşamadan sonra tarayıcınız üzerinden http://localhost/info.php adresine gittiğinizde şu görüntüyle karşılaşmanız gerekmekte:



Bu bağlantının devamında diğer yapılandırma ayarlarımızı da görebiliriz. İşimiz bittikten sonra dosyayı silebiliriz:

rm -f /usr/share/nginx/html/info.php


Artık elimizde web hizmeti olarak iş görebilecek bir yapı var. Dileyenler Phpmyadmin kurulumuna bakabilirler.


== Phpmyadmin kurulumu ==

Kurulum için şu komutu yürütüyoruz:

apt-get install phpmyadmin

Kurulum esnasında otomatik yapılandırma için bir web sunucusu seçmemiz isteniyor, hiçbir sunucuyu işaretlemeden TAB tuşu işe işleme devam ederek "Ok" bölümüne gidebiliriz:



İkinci soru ise "Configure database for phpmyadmin with dbconfig-common?" sorusudur. Cevap zaten "Yes" üzerinde olmalıdır, değilse kendisini seçip onaylıyoruz. Eski anlatımımızda buna "No" dedirtiyorduk, genellikle gereksiz olduğu için yapılıyormuş bu. Son anlatımlarda "Yes" diyerek yola devam etmenin bir sorun oluşturmadığını gördüğüm için bu şekilde devam edelim.
Bir sonraki adımda sorulan parola MySQL için kurulumda atamış olduğumuz root parolasıdır.
Sonrasında ise bize Phpmyadmin için parola sorulacaktır, iki kere girerek işlemi tamamlayabiliriz. Eğer bir sıkıntı olmazsa kurulumun tamamlanmış olması gerekir.

Kurulumun ardından Phpmyadmin'in çalışması için Nginx'in kök dizinine bir sembolik bağ atıyoruz:

ln -s /usr/share/phpmyadmin /usr/share/nginx/html

Sembolik bağ doğru şekilde yapıldıysa şu komuttan sonra phpmyadmin'in doğru yeri gösterdiği anlaşılabilir:
ls -l /usr/share/nginx/html
lrwxrwxrwx 1 root root   21 Dec 27 12:25 phpmyadmin -> /usr/share/phpmyadmin/

Her şey doğru gittiyse tarayıcınızdan http://localhost/phpmyadmin dediğinizde sizi giriş sayfasının karşılaması gerekmekte. root kullanıcısı ve atamış olduğunuz parola ile giriş yapabilirsiniz.

Giriş yaptıktan sonra dikkatinizi çekebilir, sayfanın altında "The mcrypt extension is missing. Please check your PHP configuration." yazıyordur. php5-mycrypt paketi Phpmyadmin ile beraber yüklenmesine rağmen kendisini etkineleştirmediğimiz için mızmızlanmakta. Şu şekilde çözebiliriz:

php5enmod mcrypt
service php5-fpm restart


Yeniden giriş yaptığınızda uyarının kaybolduğunu göreceksiniz.

Artık elinizde LEMPP denilerek ifade edilen bileşenler bütünü mevcut olup web sunucusu olarak hizmet alabilirsiniz.
Anlatım şu konularda genişletilebilir:

1. Nginx kök dizin değişimi, daha güzeli olan sanal konak anlatımı.
2. Phpmyadmin gibi bileşenlerin parola arkasına alımı.
3. Log yönetimi


[eklenti yönetici tarafından silindi]
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.

ersinkandemir

Ellerinize sağlık, LAMP konusuna Nginx yazmak üzereydim. :) Bir de ricam olacak. PostgreSQL Nginx'e daha çok yakışıyor sanki. :)
Where there's a shell, there's a way.



heartsmagic

Evet, Postgre ile de çok güzel olur sistem söylediğin gibi. Ancak enerjim tükendi bugün, onu da başka zamana not almış olayım :)
Gerçi ondan önce şu genişletmeyi söylediğim konuları geçmem daha iyi olabilir. Vakit oldukça artık :)
Teşekkürler bu arada.
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.

McOrco

Bir firmadan vps satınaldım
firma 80 portundan vpsime ulaşabilmem için reverse proxy kullanmaya zorluyor
bize bir adet ipv4 ipyi bile çok gördüklerinden ipv6 bir ip vermişler

alanadi.com ve www.alanadi.com için A NAME kayıtları yapıldı
ve yönlendi sorunsuz olarak firmanın default indexine yönleniyor
domain

webe çıkabilmek için verdikleri proxy scriptini kurup
reverse proxy ile web sunucusu olarak kullanmamız gerekiyor
ama bu sureci ubuntuda başaramadım

önceden benzer bir süreç yaşayan arkadaşlarımızın tecrübelerini bekliyorum

fakat ben ssh ustunden lemp kurulumu gerçekleştirdigim
winscp ile sorunsuz dosya transferide yaptıgım bu sunucuyu
webe açma konusunda başarılı olamadım

centos ile lemp kurulumu makalesini uyguladım
sıfır sorun ıle sunucu çalıştı şuan hala çalışıyor

ubuntuda ne yolunda gitmiyor neyi yanlış yapmış olabilirim
reverse proxy nedeni ile anlatımda ne değişir?


[eklenti yönetici tarafından silindi]

plazma

apache yerine nginx, mysql yerinede mariadb galiba geçiş var son donemlerde, oracle ın mysql i almasından sonra kapalı kaynak koda düşmesinden dolayı böyle bir göç oluştu gibilerinde birşeyler okudum ama ne kadar doğru tartışılır.

heartsmagic

@McOrco, görüntüde olan şey senin kurduğun Nginx'e ait değil gibi? EPEL diyorsa işin içinde Fedora ya da Centos vardır. Diğer başlıkta da dile getirmişsin sorunu, bence mesele o sama sistemden kaynaklanıyor.
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.

plazma

@heartsmagic mysql yerine mariadb kullandınız mı hiç yada kullanan kullanıcılardan hiç yorum duydunuz mu, mysql den daha hızlı olduğu yönünde dedikodular var ama spekilasyon mu acaba yoksa manipülemi etmek istiyorlar gerçek mi değil mi yorumlar tartışılır. mysql kullanıyoruz ama merak etmiyorda değilim sunucularda öyle bir göç geçişte göremedim doğrusu

McOrco

diğer başlıkta bahsi geçen reverse proxy gerektiren sorunu giderdim
ve sayenizde sunucuyu web ile buluşturdum :)

bunu defalarca yeniden temiz os kurup denediğimden
bazen ekteki resimdeki sorun ile karşılaşıyorum ve bu olduğunda
defaatle temiz kurulu sunucu ile denesemde
bu adımda takılıyorum




[eklenti yönetici tarafından silindi]

heartsmagic

Bunu ayrı bir başlığa taşıyalım bence, aynı iletiyi oraya da geçebilirsin. Ancak, bizlere ayrıntı gerekecek ne yazık ki. Şöyle ki, her ne kadar sunucu meseleleri dağıtıma göre anlatıldığı şekilde yapılabiliyor olsa da, son zamanlarda sunucuların sağlanma şekli nedeniyle değişiklikler gösterebiliyor. Hatta sorunlar da yaşanabiliyor. Örneğin bu firma nasıl bir sanallaştırma ortamı sağlıyor? OpenVZ ile mi veriyor sunucuları? Bu ayrıntıyı da yeni başlıkta aktarırsan güzel olur.

Tabi, eğer mevcut kurulan sunucu üzerinden gideceksek mysql'in durumuna da bakmamız lazım.
dpkg -l | grep mysql
ile kurulmuş mu kurulmamış mı diye bakmalıyız.
service mysql status
ps aux | grep mysql

ile çalışıyor mu çalışmıyor mu bunu anlamalıyız.

OpenVZ konusunu şu nedenle sordum:
http://askubuntu.com/questions/337934/unable-to-set-password-for-the-mysql-root-user-on-a-openvz-vps

Olmadı sen cevapları buraya aktar, biz başlığı ayırırız yine. Tabi bu gece cevap vermem mümkün değil, benden başka biri verebilirse ne âlâ :)
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.

McOrco

evet linkteki sorunun tamamı ile aynısı
konu hakkında başlık açtım


sorunlar çözüme kavuştu
mucizevi bir şekilde sunucu 70mb civarında ram harcıyor sadece :)


serdarkokcu

ben centos bır sunucuya sahibim domain
http://rooter.softether.net/index.html/
apache kurdum ve web sıtesı olusturucaktım öylesıne bi ama sorun suki yaptıgım ayarlardan bır kısmı yanlış olsa gerek
http://rooter.softether.net/index.html/ direk buraya yönlendiriyor beni bundan dolayı notfounded hatası alıyorum
http://rooter.softether.net/index.html yazdıgımda ise sorun çözülüyor index sayfam geliyor direk oraya yönlendirmesini nasıl sağlayabilirim ?

neynefes


serdarkokcu

hocam daha dün sildim ondan dolayı sadece rooter yazmıstım istersen açıyım tekrar ama işte direk index.html/ e yönlendiriryor :S

<html>
<body>
<h1>rooter</h1>
</body>
</html>

heartsmagic

Sorun tam olarak nedir anlayamadım. Site çalışıyor, Apache cevap veriyor görünmekte. Neyi açmaya çalışıyorsun sen?

Not: Konuyu böleriz sen gördükten sonra, burası pek uygun olmuyor şu durumda.
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.

serdarkokcu

apache conf ayarını yaparken yanlışlıkla index.html yerine index.html/ koyduğumdan dolayı ilk olarak yönlendirdigi sayfa index.html/ directory olarak görüyordu conf ayarından düzelttikten sonra sorun kalmadı teşekkürler

Barun

Hocam kusura bzkmayin sonraki dediğimde diğer sayfaya geçecek saniyordum meğer konu değişiyormus

gokhanyildiz

Merhabalar,

Suanda apache2 sunucusunda PHP 7.0.17, MySQL 5.7.17 phpMyAdmin 4.6.6 versiyonlari kurulu ve uzerinde aktif olarak calisan ve kullanilan yazilimlarim mevcut. Apache sunucusunda son zamanlarda sorunlar yasamaya basladim. Ozellikle son bir haftadir sabah saatlerinde apache calisir durumda goruldugu halde calismiyor. Servisi yeniden baslattigimda sorun kalmiyor. Loglara baktim herhangi bir hata gorunmuyor. Artik canima tak etti ve nginx kurmanin zamani geldi sanirim dedim. Lakin yazilimlari herhangi bir aksaklik yasamadan nginx uzerine tasimak istiyorum. Apache configurasyonu uzerinde 3 adet port acmistim ve 3 port uzerinden ayri yazilim calistiriyorum. (Tum yazilimlari Laravel Framework kullanarak gelistirdim). Simdi benim bu durumda ne gibi bir adim izlemem gerekiyor? Tum script ve veritabaninin yedegini alip herseyi kaldirip bu makaleye gore yeniden kurulum mu yapacagim yoksa sadece apache2 yi kaldirip nginx kurup port ayarlarini yeniden tanimlamam yeterli olacak mi? 

plazma

[mention=622261]@gokhanyildiz[/mention] cron job ekleyebilirsiniz apache için rada yeniden başlatır sevisleri ilk önerim bu, ngix e göç edeceksenizde tam kapsamlı bir yedek aldıkdan sonra yapılandırma vs notlarınıda alın önce yerelde yada var ise test/başka sunucusu  yedeği test edin ondan sonra göç işlemini başlatın sunucuzun türü yapısını bilmiyorum göç için bir kaç bağlantı ekleyeyim

https://www.digitalocean.com/community/tutorials/how-to-migrate-from-an-apache-web-server-to-nginx-on-an-ubuntu-vps
http://blog.simplytestable.com/switching-from-apache-to-nginx/
https://www.eigenmagic.com/2016/04/29/moving-to-nginx-from-apache/
http://tyhoffman.com/blog/2012/04/remove-apache2-install-nginx/
http://nginx.org/en/docs/#introduction

gokhanyildiz

[mention=622266]@plazma[/mention]

Supermicro uzerinde Ubuntu 16.04 Desktop uzerine lamp kurulumu yaptim. Php 7 ve mysql 5.7 surumlerine yukseltme yaptim. Bunlarin disinda php sqlsrv driver, elasticsearch ve redis kullaniyorum ve apache uzerinde birkac php modunu acma disinda 80 portunun yanina 81,83 ve 84 portlarini kullaniyorum. Baska da ekstra bir ayar mevcut degil.

gokhanyildiz

apache2 yi kaldirim nginx i kurdum. Yedeklerimi almistim fakat gerek yokmus. var/www dizinini nginx e tanitinca otomatik calismaya basladi. Lakin 2 sorun mevcut.

1.si php infoya baktigimda php.ini dosyasinin yolu /etc/php/7.0/fpm/php.ini olarak gorunuyor. Icini actigimda aktif gorunen extensionlarin tamami burada pasif durumda. Apache2 kullanirken sqlsrv extensionlari aktifti. Burada aktiflestirmek icin nereye tanimlama yapmam gerekiyor?

2.si artik ip/phpmyadmin seklinde giris yapamiyorum. Bunun icin ne yapmam gerekiyor?


(2. sorunumu /var/www dizindeyken sudo ln -s /usr/share/phpmyadmin komutuyla hallettim)

xmen

Selam arkadaslar foruma yeni uye oldum linuxle ara ara heveslenip baslamisligim var ama server surumu ile ilk defa ilgileniyorum 14.04 LTS 64bit sunucu sürümünu yukledim uzerinde php7 gomulu geliyormus fakat ben bunu kaldirip php5 yuklemek istiyorum ama beceremedim yardimlarinizi bekliyorum sididen tesekkurler.

remziyapar

[mention=623409]@xmen[/mention] Foruma hoşgeldin.

Hocam yeni başladıysann eğer şunu sorayım. Neden linux server kurdun ki. Sonuçta burda yapacağın kurulumları desktop versiyonunda da yapabilirsin. Hem desktop deneyimide yaşarsın. Gerçi sunucuyada bir desktop kurabilirsin. Neyse php gömülü gelmiyor yanlışım varsa düzelt beni. php 7 tavsiye ediliyor diye okumuştum ingilizce bir dökümanda. Belkide yanlış tercüme ettim ben. Ama garanti olsun diye şu komutun çıktısına bir bakalım.

php -v




xmen

Oncelikle cevabiniz ve ilginiz icin tesekkurler.Daha once Linux mint kullandim hicde zorlanmadim windowsa geri donmemin sebebi benim icin olmazsa olmaz adobe programlarini calistiramam di tek sebeb bu.Deskop surumunde ayni isleri yapacagimi bilmiyordum ogrenmis oldum.Yani bilmedigim icin server versiyon kurdum.php7 nin gomulu geldigini bende bilmyordum baska bir blogda arastirma yaparken ogrendim php5 kurmaya calisirken surekli hata aliyordum.Sebebi php7 nin yuklu olmasiymis.Ama bunu nasil kaldiracagimi bir turlu bulamadim.

remziyapar

[mention=623412]@xmen[/mention]

sudo apt-get install ppa-purge
sudo apt-get purge php7.*

xmen