16.10/16.04'te Nginx, MariaDB 10, PHP 7 (LEMP Yığını) Nasıl Kurulur


LEMP yığını, dinamik web uygulamalarını dağıtmak için kullanılan bir grup paketi (Linux OS, Nginx web sunucusu, MySQL\MariaDB veritabanı ve PHP sunucu tarafı dinamik programlama dili) temsil eden bir kısaltmadır ve internet sayfaları.

Bu eğitim, Nginx için MariaDB 10, PHP 7 ve HTTP 2.0 Desteği ile bir LEMP yığınının nasıl kurulacağı konusunda size rehberlik edecektir. Ubuntu 16.10 ve Ubuntu 16.04 sunucu/masaüstü sürümlerinde Strong>.

Gereksinimler

  1. Ubuntu 16.04 Sunucu Sürümü Kurulumu [talimatlar Ubuntu 16.10'da da çalışır]

Adım 1: Nginx Web Sunucusunu Kurun

1. Nginx, web sayfalarını internetteki ziyaretçilere görüntülemek için kullanılan modern ve kaynakları verimli kullanan bir web sunucusudur. Apt komut satırını kullanarak Nginx web sunucusunu Ubuntu resmi depolarından yükleyerek başlayacağız.

sudo apt-get install nginx

2. Ardından, Nginx'in başlatılıp başlatılmadığını ve 80 bağlantı noktasına bağlanıp bağlanmadığını doğrulamak için netstat ve systemctl komutlarını verin.

netstat -tlpn

sudo systemctl status nginx.service

Sunucunun başlatıldığı onayını aldıktan sonra bir tarayıcı açabilir ve Nginx varsayılan web sayfasını ziyaret etmek için HTTP protokolünü kullanarak sunucunuzun IP adresine veya DNS kaydına gidebilirsiniz.

http://IP-Address

Adım 2: Nginx HTTP/2.0 Protokolünü Etkinleştirin

3. Ubuntu 16.04'teki Nginx ikili dosyalarının en son sürümünde varsayılan olarak oluşturulan HTTP/2.0 protokolü yalnızca SSL ile birlikte çalışır ve web SSL web sayfalarının yüklenmesinde büyük bir hız artışı vaat ediyor.

Ubuntu 16.04'te Nginx'te protokolü etkinleştirmek için öncelikle Nginx'in mevcut site yapılandırma dosyalarına gidin ve aşağıdaki komutu vererek varsayılan yapılandırma dosyasını yedekleyin.

cd /etc/nginx/sites-available/
sudo mv default default.backup

4. Ardından, bir metin düzenleyici kullanarak aşağıdaki talimatları içeren yeni bir varsayılan sayfa oluşturun:

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

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

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

Yukarıdaki yapılandırma pasajı, http2 parametresini tüm SSL dinleme yönergelerine ekleyerek HTTP/2.0 kullanımını etkinleştirir.

Ayrıca, sunucu yönergesindeki alıntının son kısmı, SSL olmayan tüm trafiği SSL/TLS varsayılan ana bilgisayarına yönlendirmek için kullanılır. Ayrıca sunucu_adı yönergesini kendi IP adresiniz veya DNS kaydınızla (tercihen FQDN) eşleşecek şekilde değiştirin.

5. Nginx varsayılan yapılandırma dosyasını yukarıdaki ayarlarla düzenlemeyi bitirdikten sonra, aşağıdaki komutları yürüterek SSL sertifika dosyasını ve anahtarını oluşturun ve listeleyin.

Sertifikayı kendi özel ayarlarınızla doldurun ve Ortak Ad ayarının DNS FQDN kaydınız veya web sayfasına erişim için kullanılacak sunucu IP adresinizle eşleşmesine dikkat edin.

sudo mkdir /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
ls /etc/nginx/ssl/

6. Ayrıca, aşağıdaki komutu vererek, yukarıdaki yapılandırma dosyasında ssl_dhparam talimat satırında değiştirilen güçlü bir DH şifresi oluşturun:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Diffie-Hellman anahtarı oluşturulduktan sonra, Nginx yapılandırma dosyasının doğru şekilde yazıldığını ve Nginx web sunucusu tarafından uygulanabildiğini doğrulayın ve değişiklikleri yansıtmak için arka plan programını yeniden başlatın. aşağıdaki komutları çalıştırıyoruz.

sudo nginx -t
sudo systemctl restart nginx.service

8. Nginx'in HTTP/2.0 protokolünü kullanıp kullanmadığını test etmek için aşağıdaki komutu verin. h2 reklamı yapılan protokolün varlığı, Nginx'in HTTP/2.0 protokolünü kullanacak şekilde başarıyla yapılandırıldığını doğrular. Tüm modern ve güncel tarayıcılar varsayılan olarak bu protokolü desteklemelidir.

openssl s_client -connect localhost:443 -nextprotoneg ''

Adım 3: PHP 7 Interpreter'ı yükleyin

Nginx, Ubuntu resmi depolarından php-fpm ikili paketini yükleyerek elde edilen FastCGI süreç yöneticisinin yardımıyla dinamik web içeriği oluşturmak için PHP dinamik işleme dili yorumlayıcısıyla birlikte kullanılabilir.

9. PHP7.0'ı ve PHP'nin Nginx web sunucusuyla iletişim kurmasını sağlayacak ek paketleri almak için sunucu konsolunuzda aşağıdaki komutu çalıştırın:

sudo apt install php7.0 php7.0-fpm 

10. PHP7.0 yorumlayıcısı makinenize başarıyla yüklendikten sonra, aşağıdaki komutu vererek php7.0-fpm arka plan programını başlatın ve kontrol edin. emretmek:

sudo systemctl start php7.0-fpm
sudo systemctl status php7.0-fpm

11. Nginx'in mevcut yapılandırma dosyası, dinamik içerik sunuculuğu yapmak için zaten PHP FastCGI süreç yöneticisini kullanacak şekilde yapılandırılmıştır.

Nginx'in PHP yorumlayıcısını kullanmasını sağlayan sunucu bloğu aşağıdaki alıntıda sunulmuştur, dolayısıyla varsayılan Nginx yapılandırma dosyasında başka değişiklik yapılmasına gerek yoktur.

location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Aşağıda, orijinal bir Nginx varsayılan yapılandırma dosyası durumunda hangi talimatların yorumunu kaldırmanız ve değiştirmeniz gerektiğini gösteren bir ekran görüntüsü bulunmaktadır.

12. Nginx web sunucusunun PHP FastCGI süreç yöneticisi ile ilişkisini test etmek için aşağıdaki komutu vererek bir PHP info.php test yapılandırma dosyası oluşturun ve bu yapılandırma dosyasını ziyaret ederek ayarları doğrulayın. aşağıdaki adresi kullanarak: http://IP_veya etki alanı/info.php.

sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

Ayrıca aşağıdaki ekran görüntüsünde gösterildiği gibi PHP Değişkenleri bloğunda $_SERVER['SERVER_PROTOCOL'] satırını bularak sunucu tarafından HTTP/2.0 protokolünün tanıtılıp tanıtılmadığını kontrol edin.

13. Ekstra PHP7.0 modülleri yüklemek için apt search php7.0 komutunu kullanarak bir PHP modülü bulun ve yükleyin.

Ayrıca, WordPress veya başka bir CMS kurmayı planlıyorsanız kullanışlı olabilecek aşağıdaki PHP modüllerini de yüklemeyi deneyin.

sudo apt install php7.0-mcrypt php7.0-mbstring

14. PHP ekstra modüllerini kaydetmek için aşağıdaki komutu vererek PHP-FPM arka plan programını yeniden başlatmanız yeterlidir.

sudo systemctl restart php7.0-fpm.service

Adım 4: MariaDB Veritabanını Kurun

15. Son olarak, LEMP yığınımızı tamamlamak için web sitesi verilerini depolayacak ve yönetecek MariaDB veritabanı bileşenine ihtiyacımız var.

Aşağıdaki komutu çalıştırarak MariaDB veritabanı yönetim sistemini kurun ve veritabanına erişmek amacıyla MySQL modülünü kullanmak için PHP-FPM hizmetini yeniden başlatın.

sudo apt install mariadb-server mariadb-client php7.0-mysql
sudo systemctl restart php7.0-fpm.service

16. MariaDB kurulumunu güvenli hale getirmek için, sizden bir root şifresi belirlemenizi, anonim kullanıcıları kaldırmanızı, root oturum açma işlemini uzaktan devre dışı bırakmanızı ve test veritabanını kaldırmanızı isteyecek olan, Ubuntu depolarındaki ikili paket tarafından sağlanan güvenlik komut dosyasını çalıştırın.

Aşağıdaki komutu vererek scripti çalıştırın ve tüm soruları yes ile yanıtlayın. Aşağıdaki ekran görüntüsünü kılavuz olarak kullanın.

sudo mysql_secure_installation

17. MariaDB'yi sıradan kullanıcıların sistem sudo ayrıcalıkları olmadan veritabanına erişebileceği şekilde yapılandırmak için, kök ayrıcalıklarıyla MySQL komut satırı arayüzüne gidin ve MySQL yorumlayıcısında aşağıdaki komutları çalıştırın:

sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

Son olarak, MariaDB veritabanına giriş yapın ve aşağıdaki komutu çalıştırarak root ayrıcalıkları olmadan isteğe bağlı bir komut çalıştırın:

mysql -u root -p -e 'show databases'

Hepsi bu! Artık Ubuntu 16.10 ve Ubuntu 16.04 sunucularında yapılandırılmış, veritabanlarıyla etkileşim kurabilen karmaşık dinamik web uygulamalarını dağıtmanıza olanak tanıyan bir LEMP yığınınız var.