NginxとPHP-FPMを使用してDebian7/Ubuntu13VPSにKohanaPHPアプリケーションをデプロイする方法
序章
Kohanaは自己完結型のパッケージとして提供され、各コピーが新しいWebアプリケーションの新しいベースを形成するため、展開が非常に簡単になります。
このDigitalOceanの記事では、Kohanaのインストールと開始に関する以前の記事に続いて、Debian 7 /Ubuntu13をホストオペレーティングシステムとして使用してKohanaベースのPHPWebアプリケーションをデプロイするためのVPSを準備する方法を説明します。
注:これは、フレームワークを使用して構築されたアプリケーションのデプロイに焦点を当てた、Kohanaシリーズの3番目の記事です。 最初の部分を見てインストールについて学ぶには、コハナ入門をチェックしてください。 Webアプリケーションを構築するためのフレームワークのモジュールの理解については、 HMVC PHP5 FrameworkKohanaを使用したWebアプリケーションの構築を確認してください。
用語集
1. PHPベースのWebアプリケーションのデプロイ
2. Webサーバー
1. Nginx HTTP Server and Reverse-Proxy 2. Lighttpd 3. Apache
3. PHPプロセッサ
1. mod_php 2. FastCGI 3. PHP-FPM
4. コハナの概要
5. 展開について
6. Kohanaアプリケーション展開のためのシステムの準備
1. Updating the System 2. Installing Nginx 3. Installing MySQL 5 4. Installing PHP (PHP-FPM)
7. システムの構成
1. Configuring PHP 2. Configuring Nginx
8. KohanaWebアプリケーションのデプロイ
1. Uploading the Code Base To The Server 2. Bootstrapping the Deployment (Installation)
PHPベースのWebアプリケーションのデプロイ
PHPベースのWebアプリケーションをデプロイする方法はいくつかあり、さらに多くのサブ構成オプションを使用できます。
主な要因と差別化要因は、Webサーバーの選択です。 最も人気のあるもののいくつかは次のとおりです。
- NginxHTTPサーバーとリバースプロキシ
- Lighttpd (またはlighty)
- Apache
上記のWebサーバーprocessおよびservePHPファイルを使用するために使用できるいくつかの異なるPHPプロセッサーもあります。
- mod_php
- FastCGI
- PHP-FPM
Webサーバー
NginxHTTPサーバーとリバースプロキシ
Nginxは、非常に高性能なWebサーバー/(リバース)プロキシです。 軽量で、操作が比較的簡単で、拡張が簡単なため(アドオン/プラグインを使用)、人気を博しています。 そのアーキテクチャのおかげで、多くのリクエスト(実質的に無制限)を処理できます。これは、アプリケーションやWebサイトの負荷によっては、他の古い代替手段を使用して対処するのが非常に難しい場合があります。 画像、スクリプト、スタイルシートなどの静的ファイルを提供するために選択するのは、'ツールと見なすことができます。
Lighttpd
Lighttpdは、寛容なBSDライセンスの下でライセンスされている非常に高速なWebサーバーです。 ApacheよりもNginxに近い方法で動作および動作します。 リクエストを処理する方法は、メモリとCPUのフットプリントが非常に少なくなっています。
Apache
Apacheは、長い間試行錯誤されてきた、非常に強力なWebサーバーです。 古い人気はないかもしれませんが、Apacheは新しい競合他社にはない多くの機能を提供します。 また、デフォルトの機能を拡張し、Apacheを特定のデプロイメントのニーズに適合させるために使用できる多くのモジュールが付属しています。
PHPプロセッサ
Webサーバーは(ほとんどの場合)PHPスクリプトを処理するようには設定されていません。また、異なるプログラミング言語に基づく他のサーバーも同様です。 これを行うために、それらは外部ライブラリに依存し、それぞれが同じように見えますが、実際には非常に異なる方法で動作します。 Webサーバーが異なれば、それぞれに異なるレベルの統合が提供されます。アプリケーションのデプロイの責任者として、徹底的な調査を行って、サーバーが何をどのように実行するかをよりよく理解することを強くお勧めします。
mod_php
長い間、mod_phpは最も人気のあるApacheモジュールであり、PHPWebアプリケーションをデプロイするための道のりの選択肢でした。 PHPスクリプトを実行するためにApache内にPHPプロセッサを埋め込むことで機能します。
利点:
- 非常に安定しており、十分にテストされています。
- 処理に外部の依存関係は含まれません。
- 非常にパフォーマンスが高い。
php.ini
を1回ロードします。.htaccess
構成をサポートします。
FastCGI
FastCGIは、外部PHPプロセッサのインストールをソケットを介してWebサーバーに接続することで機能します。 これは、 ye oldCGIで同じことを行うためのより高度な方法です。 FastCGIは、プロセッサをWebサーバー process から分離する(そして、それぞれを潜在的な有害なエクスプロイトから分離する)ため、mod_phpを使用するよりも安全であると見なすことができます。
利点:
- 静的コンテンツにPHPプロセッサを使用する必要がなくなります。
- ApacheプロセスごとにPHPプロセッサを使用することによるメモリオーバーヘッドを排除します。
- サーバーとプロセッサを分割することにより、追加のセキュリティレイヤーを導入します。
PHP-FPM
PHP-FPMは、PHPを使用するFastCGIの方法へのアップグレードで構成されています。 これは、特定の新機能とリクエストを処理するまったく新しい方法をもたらします-(特に)より大きなWebサイトの利益のために。
利点:
- アダプティブプロセススポーン。
- 優雅なプロセッサ管理。
- FastCGIと比較してメモリフットプリントが小さい。
- FastCGIよりも構成可能です。
コハナの概要
KohanaはHMVC(Hierarchical Model View Controller)フレームワークであり、迅速に開発、展開、保守が容易な最新のWebアプリケーションを構築するために、必要なほとんどすべてのツールをすぐに使用できます。
「軽い」フレームワークとして、Kohanaは、単一の(アプリケーション)ディレクトリ内の慎重に構造化されたディレクトリに散在するファイルで構成されています。つまり、各kohanaパッケージはWebアプリケーションと見なすことができます(外部依存関係の可能性はありません)。
Kohanaの構築方法は、設計上、このフレームワークを展開に非常に適したものにします。
展開について
この記事では、提供される機能とその人気のために、NginxとPHP-FPMを組み合わせてデプロイします。 ここで選択するデータベースはMySQLです。 ただし、別のものを選択して使用する必要があります(例: MariaDB)。 データベースを移行する必要があることを忘れないでください。詳細については、最後のセクションを参照してください。
Kohanaアプリケーション展開のためのシステムの準備
新しくインスタンス化されたUbuntu13VPSを使用します。 さまざまな理由から、すでにアクティブで動作しているサーバーセットアップで実行する前に、同じことを実行してすべてを試すことを強くお勧めします。
システムの更新
まず、仮想サーバーのデフォルトのアプリケーションツールセットを利用可能な最新のものに更新します。
このタスクを実行するには、以下を実行します。
aptitude update aptitude -y upgrade
Nginxのインストール
パッケージマネージャーaptitude
を使用してNginxをインストールするには、以下を実行します。
aptitude -y install nginx
以下のコマンドを実行してサーバーを起動します。
service nginx start
http://[your droplet's IP adde.]/
にアクセスして、Nginxのインストールをテストできます。 デフォルトのウェルカム画面が表示されます。
MySQL5のインストール
再びaptitude
パッケージマネージャーを使用して、MySQLおよびその他のアプリケーションをインストールします。 以下のコマンドを実行して、MySQLをダウンロードしてインストールします。
覚えておいてください:インストールプロセス中に、ルートパスワードに関するいくつかの質問が表示されます。
aptitude -y install mysql-server mysql-client
mysql_secure_installation
を使用してすべてをブートストラップします。
# Run the following to start the process mysql_secure_installation # Enter the root password you have chosen during installation # Continue with answering the questions, confirming all. # Ex.: # Remove anonymous users? [Y/n] Y # Disallow root login remotely? [Y/n] Y # .. # .
以下のコマンドを実行して再起動し、MySQLインストールのステータスを確認します。
service mysql restart # mysql stop/waiting # mysql start/running, process 25012 service mysql status # mysql start/running, process 25012
PHPのインストール(PHP-FPM)
NginxでPHPページを処理するには、PHP-FPMを使用します。 次のコマンドを実行して、アプリケーションパッケージをダウンロードしてインストールします。
aptitude -y install php5 php5-fpm php5-mysql
これにより、 PHP5commonsもインストールされます。
システムの構成
必要なツールをインストールしたら、最終的な構成の修正を行って、サーバーでPHPWebアプリケーションをデプロイする準備をします。
PHPの構成
デフォルトのPHP構成ファイルphp.ini
を使用し、テキストエディターnano
を使用して編集し、いくつかの小さな変更を加えます。
以下を実行して、nanoを使用してファイルを開きます。
nano /etc/php5/fpm/php.ini
ドキュメントを下にスクロールして、;cgi.fix_pathinfo=1
という行を見つけます。 アプリケーションパスを安全に処理するには、次のように変更します。
# Replace ;cgi.fix_pathinfo=1 with: cgi.fix_pathinfo=0
CTRL + Xを押して保存して終了し、Yで確定します。
Nginxの構成
この記事では単一のWebアプリケーションのデプロイを検討しているため、それに応じて変更と構成の選択が行われます。 Nginxを使用して複数のアプリケーションをホストするには、サーバーブロックのユーザーを作成する必要があります。 それらの詳細については、 Nginx仮想ホスト(サーバーブロック)のセットアップを確認してください。
デフォルトのNginxWebサイト構成を編集してみましょう。 以下を実行して、nanoを使用してファイルを開きます。
nano /etc/nginx/sites-available/default
以下のコンテンツをコピーして貼り付けます。
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; # Set the default application path root # We are using my_app to host the application root /var/www/my_app; index index.php; # Replace the server_name with your own server_name localhost; location / { try_files $uri /index.php?$args; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; } } location ~ /\. { deny all; } location ~ \.php$ { try_files $uri = 404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
CTRL + Xを押して保存して終了し、Yで確定します。
アプリケーション展開ディレクトリ/var/www
を作成して入力します。
mkdir /var/www cd /var/www
構成をテストし、Nginxを再起動して有効になる可能性を確認します。
# Test the configurations nginx -t # Restart the server service nginx restart
KohanaWebアプリケーションのデプロイ
作成した構成に続いて、アプリケーションをデプロイする準備が整いました。 このプロセスは、2つの主要なステップで構成されます。
- サーバーへのコードベースのアップロード
bootstrap.php
を変更して、正しく設定されていることを確認します。
サーバーへのコードベースのアップロード
SFTPまたはFileZillaなどのグラフィカルツールを使用して、リモートファイルを安全に転送および管理できます。
SFTPの操作については、SFTPの使用方法の記事を参照してください。
FileZillaについて学ぶには、このテーマに関する記事FileZillaの使用方法を確認してください。
注: FileZillaを使用する場合は、必ず/var/www
をデフォルトのディレクトリとして設定してください(これにより、時間を節約できます)。
この例では、デフォルト(サンプル)のKohanaアプリケーションを使用します。
コハナをダウンロードして準備します。
# Remember: The following commands assume that your current # working directory is set as /var/www/ wget https://github.com/kohana/kohana/releases/download/v3.3.1/kohana-v3.3.1.zip # You might need to install *unzip* before extracting the files aptitude install -y unzip # Unzip and extract the files unzip kohana-v3.3.1.zip -d my_app # Remove the zip package rm -v kohana-v3.3.1.zip # Enter the application directory cd my_app
展開のブートストラップ(インストール)
以下を実行して、nanoを使用した構成ファイルの編集を開始します。
nano application/bootstrap.php
タイムゾーンを編集します。
# Find date_default_timezone_set and set your timezone date_default_timezone_set('Europe/London');
ロケールを設定します。
# Find setlocale and set your locale setlocale(LC_ALL, 'en_UK.utf-8');
インストールに一致するようにbase_url
を編集して終了します
# Find base_url and set the base application directory # Relative to the base Apache directory (i.e. /var/www/my_app) Kohana::init(array( 'base_url' => '/', ));
必要なすべてのモジュールを有効にしてください。
# Find Kohana::modules and uncomment them Kohana::modules(array( 'auth' => MODPATH.'auth', // Basic authentication 'cache' => MODPATH.'cache', // Caching with multiple backends 'codebench' => MODPATH.'codebench', // Benchmarking tool 'database' => MODPATH.'database', // Database access 'image' => MODPATH.'image', // Image manipulation 'orm' => MODPATH.'orm', // Object Relationship Mapping 'oauth' => MODPATH.'oauth', // OAuth authentication 'pagination' => MODPATH.'pagination', // Paging of results 'unittest' => MODPATH.'unittest', // Unit testing 'userguide' => MODPATH.'userguide', // User guide and API documentation ));
CTRL + Xを押して保存して終了し、Yで確定します。
キャッシュとログディレクトリを書き込み可能に設定します。
sudo chmod -R a+rwx application/cache sudo chmod -R a+rwx application/logs
以上です! これで、KohanaWebアプリケーションを実行する準備が整いました。
覚えておいてください:アプリケーションデータの移行を忘れないでください(例: MySQLサーバーデータベース)を開発マシンまたは別のサーバーからドロップレットに送信します。 これを行う方法については、2台のサーバー間でMySQLデータベースを移行する方法および関連するコメントで詳細を確認してください。