Merhabalar bugün sizlere Centos 7 Nginx üzerinde farklı php versiyonları çalıştırma işlemleri hakkında sizlere bilgi aktarmaya çalışacağım.
Kurgu
Kurgudaki amacım,
-> 2 adet farklı laravel sürümü projem var, bunlardan biri php 7.2 ile çalışıyorken diğer Laravel sürümüm ise php5.6 ile çalışmaktadır. Buradaki amacım tek nginx sunucusu üzerinde birden fazla php versiyonu ile projelerimi çalıştırmak istiyorum.
Kurulum kısımlarına geçelim;
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
subscription-manager repos --enable=rhel-7-server-optional-rpms
subscription-manager hatası alırsanız yapacağınız kurulum ise;
wget -O /etc/yum.repos.d/epel-rhsm.repo http://repos.fedorapeople.org/repos/candlepin/subscription-manager/epel-subscription-manager.repo
yum install subscription-manager -y
subscription-manager register --username <username> --password <password> --auto-attach
kısa bir ara verdim, sebebi centos subscription-manager paketi hata veriyordu, sebebine bakmak istedim. Sonuç siteye erişim alamıyormuşuz ssl sorunu ile beraber bu kısmı es geçiyorum ama subscription-manager paketini yüklemek isterseniz yukarıdaki adımları izleyebilirsiniz.
Nginx ve PHP Kurulumları
yum install nginx
Bu kısımda bir veritabanı MariaDB veya MySQL ihtiyacınız olursa kullanacağınız komut ise; Yeni bir repo oluşturmak ile başlayacağız.
nano /etc/yum.repos.d/mariadb.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
yukarıdaki işlemi tamamlayıp kaydettikten sonra yapacağımız işlem ise;
yum install MariaDB-client MariaDB-server
Mysql kurulum sonrasında yapacağımız işlem ise mysql root şifremizi belirlemek olacaktır.
mysql_secure_installation
mysql_secure_installation komutu ile bir root şifresi belirleme işlemini başlattık, yeni şifremi test olarak belirleyelim.
şimdi sunucumuzu kurduk, nginx ve MariaDB yükledik erişim alabiliyormuyuz kontrol edelim.
Şimdi php 7.2 kurulumlarına geçebiliriz.
# yum-config-manager --enable remi-php72 # yum install php php-common php-fpm # yum install php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo php-zip
bu kısımda dilersek ilk laravel kurulumunu yapabiliriz veya php5.6 sürümünüde kurduktan sonra da laravel kurulumlarına geçebiliriz. Benim tercihim burada php 5.6 sürümünüde kurduktan sonra laravel kurulumlarını sağlamak.
php 5.6 kurulumlarına geçebiliriz.
# yum install php56 php56-php-common php56-php-fpm # yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo
Şimdi php ayarlarını sağlayalım..
# nano /etc/php-fpm.d/www.conf # listen = 127.0.0.1:9000 => php 7.2 bu port üzerinde çalışmaktadır. listen.owner = nobody listen.group = nobody listen.mode = 0660 kullanıcı grupları okuma yazma kısımları. Ben bu kısımları nginx olarak belirliyorum.
şimdi php5.6 olarak ikinci php servisimizi ayarlamasını yapalım
# nano /opt/remi/php56/root/etc/php-fpm.d/www.conf ( bu arada 7.2 kısmında user ve group kısmını editlemeyi unuttum onuda arada düzelttim. )
$$ Şimdi bu kısma kadar neler yaptık
-> nginx kurduk
-> mariadb kurduk ve root password setledik
-> php 7.1 | php 7.2 | php 5.6 kurulumlarını sağladık
şimdi burada yapacağımız işlem servislerini başlatma ayarlarını yapacağız. Bu kısımda getenforce yaparak çıkıyı kontrol ediniz, çıktıda Enforcing alırsanız setenforce 0 yapmanız geremektedir.
# listen = 127.0.0.1:9001 => php 5.6 bu port üzerinde çalışacaktır.
Bu kısma kadar istediğimiz birçok şeyi halettik. Laravel kurulumlarına geçmeden önce virtual host kurulumu yapacağız, daha sonra laravel kurulumlarına geçeceğiz.
## nano /etc/nginx/conf.d/test1.conf => php7.2 $$ nano /etc/nginx/conf.d/test2.conf => php5.6
## conf dosyaları server { listen 80; server_name test1.com www.test1.com; root /var/www/html/test1.com/; index index.php index.html index.htm; access_log /var/log/nginx/test1.com/example1_access_log; error_log /var/log/nginx/test1.com/example1_error_log error; location / { try_files $uri $uri/ /index.php?$query_string; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root /var/www/html/test1.com/; fastcgi_pass 127.0.0.1:9000; #set port for php-fpm to listen on fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include /etc/nginx/fastcgi_params; } } ## test 2 server { listen 80; server_name test2.com www.test2.com; root /var/www/html/test2.com/; index index.php index.html index.htm; access_log /var/log/nginx/test2.com/example1_access_log; error_log /var/log/nginx/test2.com/example1_error_log error; location / { try_files $uri $uri/ /index.php?$query_string; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9001 location ~ \.php$ { root /var/www/html/test1.com/; fastcgi_pass 127.0.0.1:9001; #set port for php-fpm to listen on fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include /etc/nginx/fastcgi_params; } }
conf dosyalarını kontrol edelim hata varmı diye..
nginx -t
# mkdir /var/log/nginx/test1.com/ # mkdir /var/log/nginx/test2.com/
Arkasından dosyaları oluşturalım
# touch /var/log/nginx/test1.com/example1_access_log # touch /var/log/nginx/test2.com/example1_access_log
sonra nginx servisimizi tekrar kontrol ederek servisleri start edelim..
service nginx restart
Şimdi hosts dosyamıza test1.com ve test2.com domainlerini yönlendirme yaparak test edelim..
192.168.2.45 test1.com test2.com www.test1.com www.test2.com
Şimdi sıra geldi laravel kurulumlarına bu kısımda test1.com adresimize laravel 5.8 test2.com laravel 5.1 / 5.2 sürümünü kurulumu yapacağız.
laravel 5.8 = composer create-project --prefer-dist laravel/laravel test1.com "5.8.*"
laravel 5.2 = composer create-project --prefer-dist laravel/laravel test2.com/ "5.2.*"
chown -R nginx:nginx test1.com/
chown -R nginx:nginx test2.com/
Laravel kurulumu ve dosya izinleri sonrasında yapacağımız işlem ise;
NOT : nano /etc/nginx/conf.d/test1.conf düzenleye girelim. NOT : nano /etc/nginx/conf.d/test2.conf düzenleye girelim.
## conf dosyaları server { listen 80; server_name test1.com www.test1.com; root /var/www/html/test1.com/public; index index.php index.html index.htm; access_log /var/log/nginx/test1.com/example1_access_log; error_log /var/log/nginx/test1.com/example1_error_log error; location / { try_files $uri $uri/ /index.php?$query_string; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root /var/www/html/test1.com/public; fastcgi_pass 127.0.0.1:9000; #set port for php-fpm to listen on fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include /etc/nginx/fastcgi_params; } } ## test 2 server { listen 80; server_name test2.com www.test2.com; root /var/www/html/test2.com/public; index index.php index.html index.htm; access_log /var/log/nginx/test2.com/example1_access_log; error_log /var/log/nginx/test2.com/example1_error_log error; location / { try_files $uri $uri/ /index.php?$query_string; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9001 location ~ \.php$ { root /var/www/html/test1.com/public; fastcgi_pass 127.0.0.1:9001; #set port for php-fpm to listen on fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include /etc/nginx/fastcgi_params; } }
laravel düzgün çalışması için root yolu public dizini olacak şekilde güncellenmesi gerekmektedir.
Video sonrasında aklınıza takılanları yazarsanız mümkün mertebe cevaplamaya çalışacağım.
Not ! Centos firewall aktif olan sunucularda kurulum sonrası hata alabilirsiniz, bunun için çalıştıracağınız komut:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload