Centos Nginx + Php-fpm + mysql kurulumu (Sadece 10 saniye) – Panelsiz web sunucusu
Centos sunucularda Panel kullanmadan webserver kuralim. Bu webserver nginx + php + mysql ile bizlere dinamik siteler olusturma imkani versin. Dunyanin heryerindende bu websitesine ulasilsin. O zaman makalemi dikkatlice takip edin, cunku daha once hic bu kadar basit anlatmamistim.
Anlatimim yeni kurulmus Centos 6 x64 (minimal) isletim sistemleri uzerinden olacaktir. Kullandigim sunucunun ozellikleri (vps): 1 CPU (intel), 15gb SSD hdd, 750 mb ram..
UYARI: Centos 6 versiyonunda denendi. Centos 5 versiyonunda php-fpm kurulmadigindan uygun degildir..
Anlatim konulari
- Nginx proxy web sunucusunu kuracagiz
- Sitemizi ekleyecegiz ve online duruma getirecegiz (calisir duruma)
- Calisir durumda bir web sunucumuz ve bir websitemiz olacak (html)
- Php calistirmak icin php-fpm kuracagiz.
- php dosyalarini calisir duruma getirmek icin nginx site konfigurasyonu yapacagiz
- Sitemizdeki php dosyalar calisir duruma gelecek, dunya bize hayran kalacak
- Nginx icin url rewrite olayini inceleyecegiz ve calisir ornek yapacagiz. (http://site.com/index/kuaza)
- Mysql server kurup calisir duruma getirecegiz.
- PDO ve mysql-pdo butunlesmesi icin gerekli bilesenleri kuracagiz.
Bu makalemde sizlere bir surpriz yaparak iki anlatima yer verecegim. Ilk anlatimda 3 adimda butun bilesenleri kurup, websitenizi ekleyeceksiniz. Diger anlatimda da detaylara yer vererek biraz daha uzun aciklamalar yapacagim. iki anlatimda ayni yola cikiyor arkadaslar, ilk anlatim 15 saniye surmekte ve acemiler icin onermekteyim. Sirf ilk anlatim icin 2 gundur bash script hazirliyorum, umarim herkesin isini gorecektir.
Yapilan degisiklikler ve guncellemeler
1
2
|
## v1.2
– Wget ve nano kurulumu eklendi.
|
1. Yontem – Bash scripti ile kurulum ve site ekleme
Bu yontem icin iki dosya hazirladim. Kullanimi cok basit, bunlar:
- Gerekli programlarin kurulumunu yapacak dosya (nginx, php-fpm, mysql, pdo)
- Yeni site ekleyeceginiz zaman kullanacagimiz dosya.
1. dosyayi sadece kurulum icin kullanacagiz, 2. dosyayida site eklemek icin kullanacagiz. Ilk olarak ssh panelimizi acalim ve bu dosyalari islem yapacagimiz dizine cekelim.
* Programlari kuralim (nginx, php-fpm, mysql)
1
2
|
cd /root
wget http://kuaza.com/dosyalar/nginx/kuaza_programlari_kur.sh http://kuaza.com/dosyalar/nginx/kuaza_site_ekle.sh http://kuaza.com/dosyalar/nginx/kuaza_veritabani_ekle.sh
|
Sonrasinda ihtiyacimiz olan programlari kuralim, ssh terminaline asagidaki kodu yazarak enter yapin:
1
|
sh kuaza_programlari_kur.sh
|
Bu islemden sonra ihtiyacimiz olan: Nginx, Php-fpm, Mysql, Pdo (php-mysql, php-pdo) programlari kurulmus olacak. Cok basit oldu dimi birde site ekleme olayina bakin
* Yeni site ekleme
Asagidaki sekilde yeni site ekleyebilirsiniz. Parametreleri alt kisimda verecegim:
1
|
sh kuaza_site_ekle.sh yeni–site.com
|
Bundan sonra size bir kac soru soracak, sorulara gereken evet|hayir cevabini verdikten sonra site ekleme isini bitirin. Yeni site ekleyeceginiz zaman bu islemi tekrar etmeniz yeterli olacaktir. Uygulamada bir kac parametre mevcut, bunlari default ayarlar yerine degistirebilirsiniz.
Site dosyalari icin default olarak public_html klasoru olusturarak acar. bunu degistirmek isteyebilirsiniz.
Default site dosyalari dizini bu sekilde olusturulur:/home/yeni-site.com/public_html
public_html klasorunun ismini degistirmek isterseniz, site eklerken asagidaki sekilde yapmaniz gerekli:
1
|
sh kuaza_site_ekle.sh yeni–site.com site_dosyalari
|
goreceginiz gibi site_dosyalari kismi bizim sitemiz icin gerekeli olan (index.php v.s) dosyalarinin bulundugu klasor oldu. Site dosyalarinizi bu klasore yukleyeceksiniz: /home/yeni-site.com/site_dosyalari
Uygulamada ornek site dosyalari yuklemek istermisiniz diye sordugunda evet derseniz site dizin icerisinde: index.php, index.html, 404.html, phpinfo.php dosyalari olusturacak ve calisir duruma getirecek.
Sonraki 3. parametre /home dizinini degistirmeye yariyor. 4. parametre ise nginx site konfigurasyon dosyalarinin oldugu klasoru degistirmeye yariyor. Bu kisimlari default ayarlarinda birakmanizi tavsiye ederim, tecrubeli kisilerin konuya hakim arkadaslari icin ekledim.
Ornek parametreler: default ayarlar
1
|
sh kuaza_site_ekle.sh yeni–site.com public_html /home /etc/nginx/conf.d
|
Sitenizi tarayicida acin, ve artik yayinda
Yukaridaki islemin basitligini anlatmak icin kucuk bir video ile kurulum ve site ekleme islemini anlatacagim. Konu hakkiinda acemi arkadaslar icin ornek niteliginde olacaktir.
Kolayca Mysql veritabani olusturma ve kullanici ekleme *20/03/2015*
Panelsiz websunucusu kullanan arkadaslarin ki benimde devamli kullanacagim bir uygulama daha ekleyrek dokumani ve uygulamayi bir adim gelistirmek istedim. ssh panelinden kolayca veritabani eklemek cok kolay. Sadece asagidaki kod ile mysql veritabaninda veritabani olusturabilir, kullanici ve sifre ekleyebilirsiniz.
1
|
sh kuaza_veritabani_ekle.sh VERI_TABANI_ISMI KULLANICI_ADI SIFRE
|
Yukaridaki kodu her defasinda ekleyeceginiz veritabani ve kullanici adi/sifre duzenleyerek uygularsaniz veritabani aninda olusturulacak, kullanima hazir hale gelecektir.
Bu ozelligi basligin yanindaki tarihte ekledim makaleye, ilk kisimdaki °programlari kuralim° basliginda yer alan kodu tekrar calistirarak veritabani olusturma dosyamizida indirmeniz gereklidir.
Veritabani ekleme kismini manuel yapmak isterseniz, burdaki:SSH ile Mysql database oluşturma, kullanıcı oluşturma, database silme konusunu takip edebilirsiniz.
2. Yontem – Detayli anlatim
Oncelikle sistemimize EPEL deposunu ekleyelim, cunku normal depolarda nginx bulunmuyor sanirim. Epel deposunu yum listemize eklemek icin buradaki konuyu takip edin.
Sonrasinda asagidaki kodu ssh terminal ekranindan yazarak enter yapin:
1
|
yum –y install nginx php–fpm mysql mysql–server php–mysql php–pdo
|
Bu islemden sonra gerekli olan programlari kurduk: Nginx php-fpm, mysql pdo ve mysql baglantisi icin php-mysql
Sonrasinda asagidaki islemleri yaparak uygulamarimizi baslatalim:
1
2
3
|
service nginx restart
service php–fpm restart
service mysqld restart
|
Yeni kullanici, site ekleyelim:
1
2
3
4
|
useradd yeni–site.com
chmod 0711 /home/yeni–site.com
mkdir –p /home/yeni–site.com/public_html
chown –R yeni–site.com:yeni–site.com /home/yeni–site.com/public_html
|
Kullanicimiz yani domainimiz eklenmis oldu. Yukaridaki islemleri sirasi ile uyguladiginizda site dosyalari icin kullanilacak klasorumuzude olusturmus olacagiz. Ayrica kullanici ve grup izinlerini, chmod ayarlarini yapacagiz. Boylece dosya izinleri ile ilgili sorun yasamamis olacagiz.
Nginx site konfigurasyon dosyasi olusturalim.
Nginx programina siteyi tanitmamiz gerekli, aksi durumda sitemize erisim olmayacak, nginx uyari sayfasi cikacaktir.
Oncelikle ssh terminalinden nano yardimi ile bir dosya acalim, site-ismi.com kismini sitenize gore duzenlemeyi unutmayin (yukardaki ile ayni olacak)
1
|
nano /etc/nginx/conf.d/yeni–site.com.conf
|
Sonrasinda icerisine asagidaki kodlari kendinize duzenledikten sonra yapistirin:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#
# $site_ismi icin nginx konfigurasyon dosyasi
# kuaza.com
#
server {
listen 80;
server_name yeni–site.com;
#charset koi8-r;
#access_log logs/host.access.log main;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /home/yeni–site.com/public_html;
index index.php index.html index.htm;
try_files $uri @kuaza_rewrite;
}
#Statik dosyalari direk nginx ile isleyelim..
#baska dosyalarda ekleme ihtiyaci duyarsaniz asagidaki listeye dahil edebilirsiniz.
location ~*.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ {
# 1 Aylik cache suresi veririz.
expires 1M;
root /home/yeni–site.com/public_html;
}
# url rewrite ozelligi kismi
# kuaza.com
location @kuaza_rewrite {
#rewrite ^/$ /index.php last;
rewrite ^/index/([a–z0–9_–]*)/?$ /index.php?kuaza=\$1 last;
}
error_page 404 /404.html;
location = /404.html {
root /home/yeni–site.com/public_html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/yeni–site.com/public_html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /home/yeni–site.com/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/yeni–site.com/public_html$fastcgi_script_name;
include fastcgi_params;
}
}
|
Bu islemden sonra ctrl + x – y – enter yaptiginizda ayarlari kaydedip dosyadan cikacaktir (duzenlemeden)..
Sonrasinda nginx e restart atarak siteyi ekledigimizi ve yeni ayarlari kabul etmesini rica edecegiz
1
|
service nginx restart
|
Bu islemlerin sonunda sitenizin aciliyor olmasi gerekli, ancak sitenizin ana dizinine bir kac dosya yukleyip oyle deneyin, cunku site dosyalari klasoru suanda bos
Guvenlik duvari icin 80. portu acalim
Bazi durumlarda 80. port acik olmayabilir ve iptables guvenlik yazilimida buraya gelen istekleri engelleyebilir. Bu sebeple asagidaki kodu ssh terminalinde yazarak enter yapin:
1
|
iptables –A INPUT –p tcp —dport 80 –j ACCEPT
|
Ayarlari kaydedip, yeniden baslatalim:
1
2
|
service iptables save
service iptables restart
|
Kurdugumuz programlarin, sunucu acilirsa yada yeniden baslatilirsa otomatik olarak acilmasi icin asagidakileri yayaplim, onemlidir, ne olur ne olmaz:
1
2
3
|
chkconfig mysqld on
chkconfig nginx on
chkconfig php–fpm on
|
php-rpm programimizda da bir kac duzenleme yapmamiz gerekli. Asagidaki dosyayi acalim:
1
|
nano /etc/php–fpm.d/www.conf
|
Icerisinde bulun, her sayiri ayri ayri duzenleyecegiz:
1
2
|
user = apache
group = apache
|
apache yazan yerleri nginx olarak degistirin ve kaydedin. Sonrasinda php ye restart atalim:
1
|
service php–fpm restart
|
Bu Anlatiminda sonuna geldim arkadaslar, ilk yontemde kullandigim bash shell scriptini gelistirebilirim, ilerki zamanlarda oneri ve goruslerinize gore eklemelerde yapabilirim..
Anlamadiginiz yerde sorarsaniz geri donus olacaktir. Kolay gelsin..
http://kuaza.com/linux-arena/centos-nginx-php-fpm-mysql-kurulumu-sadece-10-saniye-panelsiz-web-sunucusu