Nginxは、お気に入りのWebサーバーとしてApacheを急速に追い抜いています。 RailsやPythonなどの言語で構築されたウェブアプリの場合、それは事実上どこにでもありますが、PHPの世界で追いつくのは少し遅いです。その理由の一部は、PHPとApacheがいかに簡単に連携できるかということです。ただし、PHPとNginxはほぼ同じくらい簡単に連携でき、PHP 7のリリースでは、2つを組み合わせるとかなり迅速なオプションになる可能性があります。
パッケージ
まず最初に。 Ubuntuを更新し、NginxおよびPHPパッケージを入手します。
# sudo apt-get update && sudo apt-get -y upgrade # sudo apt-get -y install nginx php7.0 php7.0-fpm
インストールが完了すると、パッケージがすべて配置され、実際に実行されているはずです。これが事実であることを確認するために、NginxとPHP-FPMサービスの両方がSystemdで実行されていることを確認できます。
# sudo systemctl status nginx # sudo systemctl status php7.0-fpm
Systemdが両方のサービスが実行されていることを確認した場合、サーバーは実際に稼働しているはずです。localhost
に移動すると、デフォルトのNginxウェルカムページが表示されます。 ブラウザで。
構成
もちろん、それは実際に何かをホストする準備ができているわけではありません。 Nginxを実際のコンテンツに向け、セキュリティを向上させるために必要な構成がいくつかあります。 Nginx構成ファイルのルートディレクトリは、/etc/nginx
にあります。 。ありがたいことに、Ubuntuには、構成プロセスをはるかに簡単にするデフォルトがすでにあります。
Nginx.conf
Nginxの主な構成ファイルはnginx.conf
です。 。選択したテキストエディタで開きます。ルート権限が必要になるため、Vimのようなテキストベースのエディターがおそらく最適です。デフォルトの構成はほとんど問題ありません。システムの速度とセキュリティを向上させるためにできることは明らかにありますが、そのほとんどはこの基本的なチュートリアルの範囲を超えています。パフォーマンスを向上させたい場合は、コメント付きのGzipオプションが圧縮に役立ち、処理速度を上げることができます。セキュリティ面では、次の3行を追加すると、悪意のあるアクティビティを防ぐのに役立ちます。
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
サイト構成
行が追加されたら、保存して終了します。 Nginxルートには、sites-available
という2つのフォルダーがあります。 およびsites-enabled
。 sites-available
サイト構成を格納します。 sites-enabled
sites-available
の構成ファイルへのシンボリックリンクが含まれています 。このように、サイトの有効化と無効化は、シンボリックリンクの作成と削除と同じくらい簡単です。
テキストエディタを使用して、/etc/nginx/sites-available/yoursite
にファイルを作成します 。このファイルには、新しいPHP7Webサイトのサイト固有の構成が含まれています。次の例には、各行の機能に関するコメントの内訳が含まれています。これはかなり基本的な構成ですが、作業は完了します。
server { #Nginx should listen on port 80 for requests to yoursite.com listen 80; server_name yoursite.com; #Create access and error logs in /var/log/nginx access_log /var/log/nginx/yoursite.access_log main; error_log /var/log/nginx/yoursite.error_log info; #Nginx should look in /var/www/yoursite for your website root /var/www/yoursite/; #The homepage of your website is a file called index.php index index.php; #Specifies that Nginx is looking for .php files location ~ \.php$ { #If a file isn’t found, 404 try_files $uri =404; #Include Nginx’s fastcgi configuration include /etc/nginx/fastcgi.conf; #Look for the FastCGI Process Manager at this location fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }
そのファイルを作成したら、それを保存してsites-enabled
に移動します ディレクトリ。そこから、作成したファイルに戻るシンボリックリンクを作成します。
# cd /etc/nginx/sites-enabled # sudo ln -s /etc/nginx/sites-available/yoursite
PHP.iniセキュリティ
セキュリティは動く目標であり、起こりうるすべての脅威に先んじることは不可能ですが、新しいサーバーのインストールを可能な限りロックダウンすることは常に良い考えです。 php.ini
に加えることができるいくつかの簡単な調整があります PHPを保護するのに役立つ構成ファイル。テキストエディタで、/etc/php/7.0/fpm/php.ini
を開きます。 。これは巨大なファイルです。繰り返しになりますが、Vimまたは検索機能を備えたものがおそらく最適です。
最初にdisable_functions
を見つけます phpinfo,system,mail,exec
を追加します すでに存在する関数の文字列の最後まで。次に、file_uploads
を見つけます Off
に設定します 。次に、sql.safe_mode
を見つけます On
に切り替えます 。最後に、allow_url_fopen
を見つけます Off
に設定します 。ファイルを閉じる前に、最後にもう1行追加します。
register_globals = Off
それがすべて終わったら、保存して閉じます。サーバーを再起動すると、準備が整います。
# sudo systemctl restart php7.0-fpm # sudo systemctl restart nginx
次のステップ
現状では、UbuntuサーバーはほとんどのPHPWebサイトを実行できるはずです。 /var/www/yoursite
に配置されたPHPファイル サーバーによって実行されます。 index.php
を検索します 最初にファイルを作成すると、Webサイトはそこから分岐できます。もちろん、PHPとNginxを構成して速度、セキュリティ、およびほぼすべての特殊なケースの状況に対応するために実行できることは他にもたくさんありますが、今では強力な出発点があります。