FreeBSD'ye Nginx, MariaDB ve PHP (FEMP) Stack Nasıl Kurulur


Bu eğitim, FreeBSD 11.x'in son sürümünde FBEMP'nin nasıl kurulacağı ve yapılandırılacağı konusunda size rehberlik edecektir. FBEMP, aşağıdaki yazılım koleksiyonunu tanımlayan bir kısaltmadır:

FreeBSD 11.1 Unix benzeri dağıtım, Nginx web sunucusu, MariaDB ilişkisel veritabanı yönetim sistemi (MySQL'in bir topluluk çatalı) ve sunucu tarafında çalışan PHP dinamik programlama dili.

Gereksinimler

  1. FreeBSD 11.x'in kurulumu
  2. FreeBSD Kurulumundan Sonra Yapılacak 10 Şey

Adım 1: Nginx Web Sunucusunu FreeBSD'ye yükleyin

1. FreeBSD'deki FBEMP yığınımız için kuracağımız ilk hizmet, Nginx tarafından temsil edilen web sunucusudur. yazılım.

Nginx web sunucusu, FreeBSD 11.x PORTS'ta daha fazla önceden uyumlu pakete sahiptir. Bağlantı Noktaları depolarından Nginx ikili dosyalarının bir listesini almak için sunucu terminalinizde aşağıdaki komutları verin.

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. Bu özel yapılandırmada, aşağıdaki komutu vererek Nginx'in ana paket sürümünü yükleyeceğiz. pkg paket yönetimi size nginx paketini yüklemeye devam etmek isteyip istemediğinizi soracaktır. Kurulum işlemini başlatmak için evet (komut satırında y) ile cevap verin.

pkg install nginx

3. Nginx web sunucu paketi sisteminize kurulduktan sonra, daemon'u sistem genelinde etkinleştirmek ve sisteminizde hizmeti başlatmak için aşağıdaki komutları uygulayınız.

sysrc nginx_enable="yes"
service nginx start

4. Ardından, sockstat komutunu kullanarak, aşağıdakileri vererek Nginx hizmet ağı soketlerinin 80/TCP bağlantı noktasına bağlanıp bağlanmadığını doğrulayın. emretmek. Sosstat komutunun çıktısı, döndürülen sonuçları yalnızca nginx dizesine indirgemek için grep yardımcı programı aracılığıyla aktarılacaktır.

sockstat -4 | grep nginx

5. Son olarak ağınızdaki bir masaüstü bilgisayarda bir tarayıcı açın ve HTTP protokolü aracılığıyla Nginx varsayılan web sayfasını ziyaret edin. Nginx web sunucusu varsayılan web sayfasını istemek için tarayıcınızın URL'sine makinenizin FQDN'sini veya alan adınızı veya sunucunuzun IP adresini yazın. Aşağıdaki ekran görüntüsünde gösterildiği gibi tarayıcınızda “Nginx'e hoş geldiniz!” mesajı görüntülenmelidir.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. Nginx web içeriği için varsayılan web önyükleme dizini, /usr/local/www/nginx/ mutlak sistem yolunda bulunur. Bu konumda web siteniz için .html veya .php dosyaları gibi web içerik dosyalarını oluşturmalı, kopyalamalı veya kurmalısınız.

Bu konumu değiştirmek için nginx ana yapılandırma dosyasını düzenleyin ve kök yönergesini yeni web kökü yolunuzu yansıtacak şekilde değiştirin.

nano /usr/local/etc/nginx/nginx.conf

Burada, yeni webroot yolunuzu yansıtacak şekilde aşağıdaki satırı arayın ve güncelleyin:

root	/path/to/new/webroot;

Adım 2: PHP'yi FreeBSD'ye yükleyin

7. Apache HTTP sunucusunun aksine, Nginx'in PHP kodunu yerel olarak işleme yeteneği yoktur. Buna karşılık, Nginx web sunucusu PHP isteklerini php-fpm FastCGI arka plan programı gibi bir PHP yorumlayıcısına iletir ve bu yorumlayıcı kodu denetler ve çalıştırır. Ortaya çıkan kod daha sonra Nginx'e geri gönderilir; Nginx, kodu istenen html formatına yeniden birleştirir ve kodu ziyaretçinin web tarayıcısına gönderir.

FreeBSD 11.x Bağlantı noktası depoları, PHP programlama dili için PHP 5.6, PHP 7.0 ve PHP 7.1< gibi birden çok ikili sürüm sunar. yayınlar. Mevcut tüm önceden derlenmiş PHP sürümlerini FreeBSD 11.x'te görüntülemek için aşağıdaki komutları çalıştırın.

pkg search -o php
ls /usr/ports/lang/ | grep php

8. Sisteminizde çalıştırdığınız web uygulamasına en uygun PHP sürümünü kurmayı seçebilirsiniz. Ancak bu kılavuzda PHP'nin en son sürümünü kuracağız.

PHP 7.1 sürümünü ve çeşitli web uygulamaları için gereken bazı önemli PHP modüllerini yüklemek için aşağıdaki komutu çalıştırın.

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. PHP paketlerini sisteminize yükledikten sonra, Nginx için PHP-FPM yapılandırma dosyasını açın ve kullanıcı ve grup değerlerini Nginx çalışma zamanındaki değerle eşleşecek şekilde ayarlayın. www olan kullanıcı. Öncelikle aşağıdaki komutla dosyanın yedeğini alın.

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

Daha sonra dosyayı açın ve aşağıdaki satırları aşağıdaki örnekte gösterildiği gibi güncelleyin.

user = www
group = www

10. Ayrıca aşağıdaki komutu vererek üretim için kullanılan bir PHP yapılandırma dosyası oluşturun. Bu dosyada çalışma zamanında PHP yorumlayıcısına uygulanacak özel değişiklikler yapabilirsiniz.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Örneğin, aşağıdaki örnekte gösterildiği gibi makinenizin fiziksel konumunu güncellemek için PHP yorumlayıcısının date.timezone ayarını değiştirin. PHP zaman dilimi listesini burada bulabilirsiniz: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Aşağıdaki saat dilimini ekleyin (ülkenize göre saat dilimini ayarlayın).

date.timezone = Europe/London

Ayrıca, aşağıdaki değerleri değiştirerek artırılabilecek, yüklenen dosyanın maksimum dosya boyutu gibi diğer PHP değişkenlerini de ayarlayabilirsiniz:

upload_max_filesize = 10M
post_max_size = 10M

11. PHP için özel ayarları yaptıktan sonra, aşağıdaki komutları vererek yeni konfigürasyonları uygulamak için PHP-FPM arka plan programını etkinleştirin ve başlatın.

sysrc php_fpm_enable=yes
service php-fpm start

12. Varsayılan olarak, FreeBSD'deki PHP-FPM arka plan programı 9000/TCP bağlantı noktasındaki yerel ağ soketine bağlanır. PHP-FPM ağ soketlerini görüntülemek için aşağıdaki komutu yürütün.

sockstat -4 -6| grep php-fpm

13. Nginx web sunucusunun PHP scriptlerini 127.0.0.1:9000 soketini dinleyen FastCGI ağ geçidi sunucusuna iletebilmesi için, Nginx ana yapılandırma dosyasını açın ve aşağıdaki örnekte gösterildiği gibi aşağıdaki kod bloğunu ekleyin.

vi /usr/local/etc/nginx/nginx.conf

Nginx için FastCGI kod bloğu:

 location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
        include        fastcgi_params;
        	}

14. Sunucunuzun güncel PHP bilgilerini görüntülemek için aşağıdaki komutu vererek Nginx webboot yolunda bir info.php dosyası oluşturun.

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. Ardından, PHP FastCGI ayarlarını uygulamak için Nginx arka plan programını test edip yeniden başlatın ve bir tarayıcıda info.php sayfasını ziyaret edin.

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

Aşağıdaki bağlantılardaki IP adresini veya alan adını uygun şekilde değiştirin. PHP bilgi sayfası bilgileri aşağıdaki ekran görüntüsünde gösterildiği gibi görüntülemelidir.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

Adım 3: MariaDB'yi FreeBSD'ye yükleyin

16. Veritabanındaki FEMP yığınınızda eksik olan son bileşen. MariaDB/MySQL, dinamik web sitelerinin dağıtımı için kullanılan Nginx web sunucusuyla en çok ilişkilendirilen açık kaynaklı RDBMS yazılımlarından biridir.

Aslında MariaDB/MySQL dünyada en çok kullanılan ilişkisel veritabanlarından biridir. FreeBSD Bağlantı Noktaları'nda arama yaparak MariaDB/MySQL'in birden fazla sürümünü bulabilirsiniz.

Bu kılavuzda, MySQL veritabanının topluluk çatalı olan MariaDB veritabanını kuracağız. MariaDB'nin mevcut sürümlerini aramak için terminalde aşağıdaki komutları verin.

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

17. MariaDB veritabanı sunucusunun en son sürümünü yüklemek için aşağıdaki komutu yürütün. Ayrıca MySQL'e bağlanmak için PHP betiklerinin kullandığı PHP ilişkisel veritabanı sürücü modülünü de yüklemelisiniz.

pkg install mariadb102-server php71-mysqli

18. Veritabanı kurulduktan sonra MySQL arka plan programını etkinleştirin ve aşağıdaki komutları çalıştırarak veritabanı hizmetini başlatın.

sysrc mysql_enable="YES" 
service mysql-server start

19. Ayrıca, MySQL sürücü uzantısını yüklemek için PHP-FPM arka plan programını yeniden başlattığınızdan emin olun.

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

21. MariaDB veritabanı bağlantısını konsoldan test etmek için aşağıdaki komutu yürütün.

mysql -u root -p -e "show status like ‘Connections’"

22. Varsayılan olarak 0.0.0.0:3306/TCP soketinde gelen ağ bağlantılarını dinleyen MariaDB'nin güvenliğini daha da artırmak için, hizmeti zorlamak üzere aşağıdaki komutu verin. geri döngü arayüzüne bağlanmak ve uzaktan erişime tamamen izin vermemek için. Daha sonra yeni yapılandırmayı uygulamak için MySQL hizmetini yeniden başlatın.

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

Aşağıdaki örnekte gösterildiği gibi netstat komutunu çalıştırarak localhost bağlamasının başarıyla uygulanıp uygulanmadığını doğrulayın.

netstat -an -p tcp

Bu kadar! FreeBSD'ye Nginx web sunucusunu, MariaDB ilişkisel veritabanını ve PHP sunucu tarafı programlama dilini başarıyla yüklediniz. Artık ziyaretçilerinize web içeriği sunmak için dinamik web sayfaları oluşturmaya başlayabilirsiniz.