Apache+PHP+MySQLっていう環境が必要だったのでAWSで構築しました。忘れないように備忘録として書いておきます。
- 1.AWSの前準備についてとインスタンスの立ち上げ
- 2.Apacheのインストール
- 3.PHPのインストール
- 4.MySQLのインストール
- 5.phpMyAdminのインストール
- 6.ftpを使えるようにする vsftpdのインストール
- 7.参考サイト
AWSの前準備についてとインスタンスの立ち上げ
インストールする前にAWSで必要なキーペアとセキュリティグループを作成しておきます。やり方は以前の記事高速にWordPressを動作させる網元を使うべくAWSにブログを移転しました。その手順を備忘録として残します。の導入手順を読んでいただければと思います。
上記が終わったら下記へ続きます。すでにこの環境がある場合は飛ばしてもらって構いません。
サービスメニューよりEC2を選択
InstancesからLaunch Instance
Launch Instance
OSはどれでも構わないですが、僕はいつもAmazonが提供しているものを利用しています。スターマーク付きのものは無料枠内で利用出来ます。
特に設定は変えずそのままContinue
さらにContinue
Continue
Device等を確認しContinue
Key,Valueに入れるものがあれば入れてContinue
作成したKeyPairsを選択しContinue
作成したセキュリティグループを選択しContinue
内容を確認してContinue
そのままcloseを選択
Stateが黄色い状態だと立ち上げ中なので、緑色になるまで待ちます。緑色なら起動中。赤だと停止中と言う意味です。
Stateが緑になったら、インスタンスを選択して下側に出てくる詳細を見てみます。Instanceの番号やその下にURLが表示されています。
インスタンスが立ち上がったらSSHでサーバーにログインし、パッケージをインストールしていきます。SSHでログインするにはMacなら標準で搭載のターミナル、WindowsならTeraTermのようなフリーソフトを利用します。
まずはサーバーへ接続しましょう
ssh -i (鍵のパス) ec2-user@(Public DNS)
鍵のパスは、KeyPairsを作成した際に保存した***.pemというファイルです。それが保存されている場所を指定します。
ec2-userはユーザーIDで、AWSにてSSH接続する際は大体このIDで接続します。
Public DNSはインスタンスを立ち上げた際に割り当てられる言わばURLに当たります。
もし接続した際に下記のようなエラーが出た場合は鍵のパーミッションを変更しないと行けません。
chmod 600 (鍵のパス)
接続できたらsuを利用してroot権限になります
ターミナル上で su と入力
パスワードを求められるのでrootに設定しているパスワードを入力します。(デフォルトでは何も設定されてません。)
※root権限は全ての権限を持っているので、どの領域でも触ることが出来てしまいます。気をつけて使うようにしてください。本記事ではあくまで使い方の解説を行なっていますので、よりセキュアにするために権限を追加するなどして、より安全に扱うようにしましょう。
Apacheのインストール
サーバーへ繋がったらまずApacheをインストールします。(記事執筆時点でバージョン2.2.24)
yum install httpd
インストールしたらApaheを起動します。
/etc/init.d/httpd start
サーバー起動時にApacheが自動的に起動するように設定するには
chkconfig httpd on
再起動するには
service httpd restart
PHPのインストール
続いてPHPをインストールします。(記事執筆時点でバージョン5.3.20)
yum install php
php.iniの設定を変更します。項目が物凄く多いのですが、どういった内容が書かれているかPHP Manualよりそれぞれの内容を調べました。
engine = On ApacheでPHPスクリプト言語エンジンを有効にするかどうか。 short_open_tag = Off <?phpを <? 表記で動くようにするかどか asp_tags = Off ASP形式のタグ<% %>を許可するかどうか。 precision = 14 浮動小数点数に関して表示される最大桁数を指定。 y2k_compliance = On 2000年問題対応を強制する。 output_buffering = 4096 出力バッファリング zlib.output_compression = Off 透過的なページ圧縮を行うかどうか。(これをonにする場合output_handler を空にする必要があります) implicit_flush = Off デフォルトは FALSE です。これを TRUE に変更すると、PHP が 各出力ブロックの後で自動的に出力レイヤをフラッシュするよう 指定します。 unserialize_callback_func = unserialize() が未定義のクラスを使おうとしたときに、ここで指定したコールバックをコールします。 指定したコールバック関数が定義されていない場合や そのコールバック関数が未定義のクラスの定義に失敗したときに警告が発生します。 serialize_precision = 100 浮動小数点数をシリアライズするときに格納する桁数を指定します。 allow_call_time_pass_reference = Off 関数のコール時に引数が参照で渡された場合に、警告するかどうかを設定します。 推奨される方法は、関数宣言時に参照渡しとするべき引数を指定することです。 将来のバージョンでの動作を保障するために、 このオプションを off とし、 スクリプトがこの状態で正しく動作することを確認することが推奨されます (この機能を使用する度に警告が発生します)。 safe_mode = Off セーフモード safe_mode_gid = Off デフォルトでは、セーフモードはオープンしようとするファイルの UIDの比較チェックを行います。GIDの比較にすることでこのチェックを 緩やかなものにしたい場合、safe_mode_gidをオンにしてください。 ファイルにアクセスする際にUID (FALSE)を使用するか GID (TRUE)を使用するか制御できます。 safe_mode_include_dir = このディレクトリ(そのサブディレクトリも含む)の配下のファイルが インクルードされる場合、UID/GID のチェックはバイパスされます。(ディレクトリは include_pathの配下であるか あるいはフルパスで記述される必要があります) safe_mode_exec_dir = PHPがセーフモードで動作する場合、 system()や その他のプログラム実行関数を、 このディレクトリ以外で起動することは拒否されます。 Windowsを含む全ての環境において ディレクトリのセパレータとして/を使用する必要があります。 safe_mode_allowed_env_vars = PHP_ ある種の環境変数の設定はセキュリティ上の潜在的な欠陥となりえます。 このディレクティブにはプレフィックスをカンマで区切って書くことができます。 セーフモードでは、ここに書かれたプレフィックスで始まる環境変数だけを ユーザーが変更できるようになります。デフォルトでは、ユーザーは PHP_ で始まる名前の環境変数 (PHP_FOO=BAR など) だけをセットすることができます。 safe_mode_protected_env_vars = LD_LIBRARY_PATH putenv()を使ってエンドユーザーが変更するのを 防ぎたい環境変数をカンマ区切りで記述します。ここで設定された環境変数は もしもsafe_mode_allowed_env_varsでは許可されているものであっても 保護されます。 disable_functions = このディレクティブを使うと、特定の関数を セキュリティ の観点から無効にすることができます。 関数名の一覧をカンマ区切りで指定します。disable_functions は セーフモード の影響を受けません。 disable_classes = このディレクティブを使うと、特定のクラスを セキュリティ の観点から無効にすることができます。 クラス名の一覧をカンマ区切りで指定します。disable_classes は セーフモード の影響を受けません。 このディレクティブは php.ini で設定しなければなりません。 たとえばこれを httpd.conf で設定することはできません。 zend.enable_gc = On 循環参照コレクタを有効あるいは無効にします。 expose_php = off PHP がサーバーにインストールされていることを全世界に晒し、PHP のバージョンも HTTP ヘッダに含めます (X-Powered-By: PHP/5.3.7 など)。PHP 5.5.0 より前のバージョンでは PHP のロゴの guid も公開されるので、PHP を有効にしたサイトの URL にそれを追加すると guids are also exposed, thus appending them to the URL of a PHP enabled site (例: » http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42) ロゴが表示されるようになります。この設定は phpinfo() の出力にも影響し、無効にすると PHP のロゴやクレジット情報が表示されなくなっていました。 max_execution_time = 30 スクリプトがパーサにより強制終了されるまでに許容される最大の 時間を秒単位で指定します。この命令は、いい加減に書かれた スクリプトがサーバーの負荷を上げることを防止するのに役立ちます。 デフォルトでは、30 に設定されています。 PHP を コマンドライン から実行する場合のデフォルト設定は 0 です。 max_input_time = 60 スクリプトが POST、GET などの入力を パースする最大の時間を、秒単位で指定します。 これは、サーバーがすべてのデータを受け取ってからスクリプトの実行を開始するまでの時間です max_input_vars = 1000 入力変数 を最大で何個まで受け付けるかを指定します (この制限は、スーパーグローバル $_GET、$_POST そして $_COOKIE にそれぞれ個別に適用されます)。 このディレクティブを使うと、ハッシュの衝突を悪用したサービス不能攻撃を受ける可能性を軽減できます。 このディレクティブで設定した数を超える入力変数があった場合は E_WARNING が発生し、 それ以降の入力変数はリクエストから削除されます。 多次元配列の場合、この制限は個々の次元ごとにしか適用されません。 memory_limit = 128M スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。 error_reporting = E_ALL & ~E_DEPRECATED error_reporting() 関数は、 error_reporting ディレクティブを 実行時に設定します。PHP には多くのエラーレベルがあり、 この関数によりスクリプトの持続時間(実行時間)のレベルが設定されます。 オプションの level を指定しなかった場合は、 error_reporting() は単に現在のエラーレベルを返します。 display_errors = Off エラーをHTML出力の一部として画面に出力するかどうかを定義します。 display_startup_errors = Off display_errorsをonにした場合でも、PHPの起動シーケンスにおいて発 生したエラーは表示されません。デバッグ時を除き、 display_startup_errorsをoffにしておくことが強く推奨されます。 log_errors = On エラーメッセージを、サーバーのエラーログまたはerror_logに記録するかどうかを指定 します。このオプションはサーバーに依存します。 log_errors_max_len = 1024 log_errorsの最大長をバイト単位で設定します。 error_log には、 この設定で情報が追加されます。デフォルトは 1024 で、0 を指定すると 最大長の制限は全く適用されなくなります。 この長さはエラーログへの記録や エラーの表示、そして $php_errormsg に適用されます。 ignore_repeated_errors = Off 繰り返されるメッセージを記録しません。エラーの繰り返しは、 ignore_repeated_sourceが trueに設定されるまで同じファイルの同じ行で発生します。 ignore_repeated_source = Off メッセージの繰り返しを無視する場合にメッセージのソースを無視しま す。この設定をOnにすると、異なるファイルまたはソース行からの同じ エラーメッセージの繰り返しを記録しなくなります。 report_memleaks = On このパラメータを On (デフォルト) にすると、Zend メモリマネージャーが検出した メモリリークの報告を表示します。この報告は、Posix プラットフォームでは標準エラー出力に送られます。 Windows では、デバッガに OutputDebugString() を使って送られ、 » DbgView のようなツールで見ることができます。 このパラメータが使えるのはデバッグビルドだけであり、かつ error_reporting で E_WARNING を有効にしている場合のみです。 track_errors = Off 有効にした場合、直近のエラーメッセージが、 $php_errormsg 変数に常に代入されます。 html_errors = Off エラーメッセージのHTMLタグをオフにします。htmlエラー用の新しい形 式では、ユーザーがエラーまたはエラーを発生した関数を説明するページ に導くようクリック可能なメッセージを出力します。これらのリファレ ンスは、docref_root およ び docref_extの設定に依存 します。 variables_order = "GPCS" EGPCS (Environment (環境変数)、 Get、Post、 Cookie (クッキー)、そして Server) 変数のパースの順番を設定します。例えば variables_order を "SP" に設定すると、PHP は superglobals $_SERVER および $_POST を作成しますが、 $_ENV、$_GET および $_COOKIE は作成しません。"" に設定すると、一切 superglobals を設定しません。 非推奨のディレクティブ register_globals が on になっていると、 variables_order の設定は、 ENV、 GET、POST、 COOKIE および SERVER の各変数がグローバルスコープに取り込まれる順番も左右します。 つまり、たとえば variables_order が "EGPCS" で register_globals が有効になっていたとすると、 $_GET['action'] と $_POST['action'] が両方設定された場合の $action の値は $_POST['action'] の内容になります。 これは、この例におけるディレクティブの設定で P が G より後になっているからです。 request_order = "GP" このディレクティブは、PHP が GET 変数や POST 変数そしてクッキー変数を _REQUEST 配列に登録する際の順序を表します。 登録は左から右の順に行い、後から登録した値が古い値を上書きします。 このディレクティブが設定されていない場合は、variables_order を使用して $_REQUEST を設定します。 デフォルトの配布状態の php.ini ファイルには、クッキーの 'C' が含まれていないことに注意しましょう。 セキュリティを考慮したためです。 register_globals = Off EGPCS(Environment, GET, POST, Cookie, Server)変数を グローバル変数として登録するかどうかを指定します。 register_long_arrays = Off HP が、$HTTP_*_VARS のような古い長い 定義済みの変数 を登録するかどうかを指定します。 On (デフォルト) とした場合、$HTTP_GET_VARS のような 定義済みの長い PHP 変数が定義されます。 これらの変数を使用していない場合には、性能面からこのオプションを off とすることが推奨されています。 かわりに $_GET のようなスーパーグローバル変数を使用してください。 このディレクティブは PHP 5.0.0 で利用可能となりました。 register_argc_argv = Off PHPが変数argvとargcを宣言するかどうかを指定します (これらにはGETの情報が格納されます)。 auto_globals_jit = On 有効にした場合、SERVER および ENV 変数はスクリプトの開始時ではなく、 最初に使用された時 (Just In Time) に作成されるようになります。 これらの変数がスクリプトの中で使用されない場合、 このディレクティブを使用することで性能が向上します。 post_max_size = 8M POSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。 configureスクリプトでメモリ制限を有効とした場合、memory_limitも ファイルアップロードに影響します。一般的に memory_limit は、 post_max_sizeよりも大きく する必要があります。 integerを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。 POSTデータの大きさが、post_max_sizeより大きい場合、 $_POST と $_FILES superglobals は空になります。この事象は、いくつかの方法で検出することができます。 例えば、$_GET 変数をデータを <form action="edit.php?processed=1">のように 処理するスクリプトに渡し、 $_GET['processed'] が設定されているかどうかを 確認する方法があります。 magic_quotes_gpc = Off (この機能は PHP 5.3.0 で 非推奨となり、 PHP 5.4.0 で削除されました。) GPC(Get/Post/Cookie) 処理に関する magic_quotes の設定を行います。 magic_quotes_runtime = Off (この機能は PHP 5.3.0 で 非推奨となり、 PHP 5.4.0 で削除されました。) magic_quotes_runtime が有効の場合、 データベースおよびテクストファイルを含む外部ソースから データを返す全ての関数のクオートは、バックスラッシュで エスケープされます magic_quotes_sybase = Off (この機能は PHP 5.3.0 で 非推奨となり、 PHP 5.4.0 で削除されました。) magic_quotes_sybaseがonの場合、 magic_quotes_gpc またはmagic_quotes_runtime が有効の時にシングルクオートはバックスラッシュではなく シングルクオートでエスケープされます。 auto_prepend_file = メインファイルの前に自動的に付加されるファイルの名前を指定します。 このファイルは、 require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。 特別な値 none を指 定すると、ファイルを前に追加する機能は無効となります。 auto_append_file = メインファイルの後に自動的に追加されるファイルの名前を指定します。 このファイルは、 require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。 none を値として 指定するとこの自動付加機能はオフとなります。 default_mimetype = "text/html" doc_root = サーバーにおけるPHPの"ルートディレクトリ"です。この値は空で無 い場合のみ使用されます。PHPが セーフモード で設定されている場合には、 このディレクトリの外側にあるファイルは使用されません。 PHPがFORCE_REDIRECTを指定してコンパイルされていない場合、 (IIS以外の)WebサーバーのもとでCGIとしてPHPを実行する際には、 doc_rootを指定するべきです。 user_dir = PHPファイル用にユーザーのホームディレクトリ として使用する基本ディレクトリの名前。例えば、 public_html となります。 enable_dl = Off 動的にロード可能な拡張モジュールを置くディレクトリを 指定します。 file_uploads = On HTTP ファイルアップロード を有効とするかどうか。 upload_max_filesize = 2M アップロードされるファイルの最大サイズ。 max_file_uploads = 20 同時にアップロードできるファイルの最大数。 PHP 5.3.4 以降、何もファイルを指定せずに送信されたアップロードフィールドは ファイル数に数えられなくなりました。 allow_url_fopen = On このオプションにより、URL対応のfopenラッパーが使用可能となり、 ファイルのようにURLオブジェクトをアクセスできるようになります。 デフォルトのラッパーが、ftpまたはhttpプロトコルを用いて リモートファイルに アクセスするために提供されています。zlibのようないくつかの拡張モジュールが ラッパーを追加することがあります。 allow_url_include = Off このオプションを指定すると include, include_once, require, require_once で URL 対応の fopen ラッパーが使用できるようになります。 この設定を使用するには、allow_url_fopen が on でないといけません。 default_socket_timeout = 60 ソケットベースのストリームのデフォルトの有効時間(単位は秒)を定義します。 define_syslog_variables = Off define_syslog_variables — syslog に関係する全ての定数を初期化する SMTP = localhost SMTPサーバーのホスト指定 smtp_port = 25 SMTPサーバーのポート指定 sendmail_path = /usr/sbin/sendmail -t -i sendmailのパス情報 mail.add_x_header = On X-PHP-Originating-Script を追加します。 それはスクリプトの UID を含み、その後にファイル名が続きます。 sql.safe_mode = Off オンにすると、デフォルト値が指定されているデータベース接続関数は、 引数で指定された値よりもデフォルト値を優先して使用します。 デフォルト値については、関連するデータベースのドキュメントを参照ください。 odbc.allow_persistent = On 持続的 ODBC 接続を許可するかどうか。 odbc.check_persistent = On 再利用する前に接続が有効であることを確認します。 odbc.max_persistent = -1 プロセス毎の持続的 ODBC 接続の最大数。 odbc.max_links = -1 プロセス毎の持続的接続を含む ODBC 接続の最大数。 odbc.defaultlrl = 4096 LONG フィールドの処理。変数に返されるバイト数を指定します。 odbc.defaultbinmode = 1 バイナリデータの処理モード。 mysql.allow_persistent = On MySQL への 持続的接続 を可能にするかどうか。 mysql.max_persistent = -1 プロセス毎の持続的 MySQL 接続の最大数。 mysql.max_links = -1 持続的接続を含むプロセス毎の MySQL 接続の最大数。 mysql.default_port = 他のポートが指定されない場合、データベースサーバー接続時に使用される デフォルトの TCP ポート番号。デフォルトが指定されない場合は、 環境変数 MYSQL_TCP_PORT・ /etc/services の mysql-tcpエントリ・コンパイル時の MYSQL_PORT 定数の順番でポートが取得されます。 Win32 では、MYSQL_PORT 定数のみが使用されます。 mysql.default_socket = 他にソケット名が指定されない場合、ローカルなデータベースサーバーに 接続する時のデフォルトのソケット名。 mysql.default_host = 他のサーバー名が指定されない場合に、データベースサーバーへの接続時に 使用されるデフォルトのサーバー名。 SQL セーフモード では適用されません。 mysql.default_user = 他のユーザー名が指定されない場合に、データベースサーバーへの接続時に 使用されるデフォルトのユーザー名。 SQL セーフモード では適用されません。 mysql.default_password = 他のパスワードが指定されない場合に、データベースサーバーへの接続時に 使用されるデフォルトのパスワード。 SQL セーフモード では適用されません。 mysql.connect_timeout = 60 接続の有効時間(単位:秒)。Linux では、この有効時間はサーバーからの 最初の応答の待ち時間としても使用されます。 mysql.trace_mode = Off トレースモード。mysql.trace_mode が有効の場合、 テーブル/インデックスのスキャン時の警告・結果セットの未開放・SQL エラー などが画面に表示されます(PHP 4.3.0 以降で使用可能です)。 mysqli.max_links = -1 プロセス毎の MySQL 接続の最大数。 mysqli.default_port = 3306 他のポートが指定されない場合、データベースサーバー接続時に使用される デフォルトの TCP ポート番号。デフォルトが指定されない場合は、 環境変数 MYSQL_TCP_PORT・ /etc/services の mysql-tcpエントリ・コンパイル時の MYSQL_PORT 定数の順番でポートが取得されます。 Win32 では、MYSQL_PORT 定数のみが使用されます。 mysqli.default_socket = 他にソケット名が指定されない場合、ローカルな データベースサーバーに接続する時のデフォルトのソケット名。 mysqli.default_host = 他のサーバー名が指定されない場合に、データベースサーバーへの接続時に 使用されるデフォルトのサーバー名。 safe mode では適用されません。 mysqli.default_user = 他のユーザー名が指定されない場合に、データベースサーバーへの接続時に 使用されるデフォルトのユーザー名。 safe mode では適用されません。 mysqli.default_pw = 記述なし mysqli.reconnect = Off 接続が失われたときに自動的に再接続するかどうか。 pgsql.allow_persistent = On 持続的な Postgres 接続を可能にするかどうか。 pgsql.auto_reset_persistent = Off pg_pconnect() で作成した持続的接続の障害を 検出する。少々のオーバーヘッドを要します。 pgsql.max_persistent = -1 プロセス毎の持続的 Postgres 接続の最大数。 pgsql.max_links = -1 持続的接続を含むプロセス毎の Postgres 接続の最大数。 pgsql.ignore_notice = 0 PostgreSQL バックエンドの通知メッセージを無視するかどうか。 pgsql.log_notice = 0 PostgreSQL バックエンドの通知メッセージをログに記録するかしないか。 ログに記録するには、PHP ディレクティブ pgsql.ignore_notice を off にする必要があります。 sybct.allow_persistent = On 持続的なSybase-CT接続を使用可能にするかどうか。 デフォルトは、onです。 sybct.max_persistent = -1 プロセス毎の持続的なSybase接続の最大数。-1は制限無しを意味します。 sybct.max_links = -1 プロセス毎の持続的接続を含むSybase-CT接続の最大数。 ー1は制限無しを意味します。 sybct.min_server_severity = 10 sybct.min_server_severity以上の重要度を有するサーバーメッセージ は警告を出力します。この値は、スクリプト内で sybase_min_server_severity()をコールすること により設定することも可能です。デフォルトは10で、 重要度がこの値以上の情報が出力されます。 sybct.min_client_severity = 10 sybct.min_client_severity以上の重要度を有する クライアントライブラリメッセージが警告として出力されます。 この値は、スクリプトで sybase_min_client_severity()をコールすること により設定することも可能です。デフォルトは10で、 出力を結果的に無効にしています。 bcmath.scale = 0 全ての bcmath 関数に関する 10 進桁数。 bcscale() も参照してください。 session.save_handler = files session.save_handler は、 セッションに関連するデータの保存および取得時に使用するハンドラを定義します。 デフォルトは、files です。各拡張モジュールで、 独自の save_handler を使用できることに注意しましょう。 インストール環境単位で登録されているハンドラを取得するには phpinfo() を使用します。 session_set_save_handler() も参照してください。 session.save_path = "/var/lib/php/session" session.save_path は、保存ハンドラに渡される 引数を定義します。デフォルトのファイルハンドラを選択した場合、 ファイルが作成される場所のパスになります。 session_save_path() も参照ください。 session.use_cookies = 1 session.use_cookiesによりクライアント側にセッ ションIDを保存する際にクッキーを使用するかどうかを指定します。デ フォルトは1 (有効)です。 session.use_only_cookies = 1 session.use_only_cookies は、 このモジュールがクライアント側へのセッション ID の保存に Cookie のみ を使用することを指定します。 この設定を有効にすることにより、セッション ID を URL に埋め込む攻撃を防ぐことができます。この設定は、 PHP 4.3.0 で追加されました。 PHP 5.3.0 以降で、デフォルトは 1 (有効) となります。 session.name = PHPSESSID session.name はセッション名を指定し、 クッキー名として使用されます。 アルファベット文字のみで指定する必要があります。 デフォルトは、PHPSESSID です。 session_name()も参照してください。 session.auto_start = 0 session.name はセッション名を指定し、 クッキー名として使用されます。 アルファベット文字のみで指定する必要があります。 デフォルトは、PHPSESSID です。 session_name()も参照してください。 session.cookie_lifetime = 0 session.name はセッション名を指定し、 クッキー名として使用されます。 アルファベット文字のみで指定する必要があります。 デフォルトは、PHPSESSID です。 session_name()も参照してください。 session.cookie_path = / session.cookie_path によりセッションクッキーで設定するパスを指定します。 デフォルトは/です。 session_get_cookie_params()および session_set_cookie_params()も参照してください。 session.cookie_domain = session.cookie_domain によりセッションクッキーで指定するドメインを指定します。 デフォルトでは指定されません。 この場合は、クッキーの仕様によって、クッキーを作成したサーバーの ホスト名が指定されます。 session_get_cookie_params() および session_set_cookie_params() も参照ください。 session.cookie_httponly = クッキーに対して、HTTP を通してのみアクセスできるようにします。 つまり、JavaScript のようなスクリプト言語からはアクセスできなくなるということです。 この設定を使用すると、XSS 攻撃によって ID を盗まれる危険性を減らせます (が、すべてのブラウザがこの設定をサポートしているというわけではありません)。 session.serialize_handler = php session.serialize_handler は、シリアル化または シリアル化データを復元するために使用されるハンドラの名前を定義します。 現在、( php あるいは php_binary という名前の) PHP 内部フォーマットおよび (wddx という名前の) WDDX がサポートされています。WDDX は、PHP がWDDX サポート を有効にしてコンパイルされている場合のみ使用可能です。デフォルトは、 php です。 session.gc_probability = 1 session.gc_probabilityと session.gc_divisorの組み合わせでgc (ガーベッジコレクション)ルーチンの始動を制御します。 デフォルトは、1 です。 詳細はsession.gc_divisor をご覧ください session.gc_divisor = 1000 session.gc_divisorと session.gc_probabilityの組み合わせで すべてのセッションの初期化過程でgc(ガーベッジコネクション)プロセス も始動する確率を制御します。確率は gc_probability/gc_divisor で計算されます。例えば、1/100は各リクエスト毎に1%の確率でGCプロセスが 始動します。 session.gc_divisorのデフォルトは100です。 session.gc_maxlifetime = 1440 session.gc_maxlifetime は、データが 'ごみ' とみなされ、消去されるまでの秒数を指定します。 ガベージコレクション (ごみの収集) は、 セッションの開始時に行われます (session.gc_probability と session.gc_divisor に依存します)。 session.bug_compat_42 = Off PHP バージョンが 4.2.3 とそれ以前には、たとえ register_globals が無効の場合でもグローバルスコープでセッション変数の初期化を 許してしまうドキュメント化されていない特徴/バグがあります。 この機能を使用している場合で session.bug_compat_warn も有効にしている場合、 PHP 4.3.0 とそれ以降のバージョンでは警告が発されます。 この特徴/バグは、 このディレクティブを無効にすることで無効にすることが可能です。 session.bug_compat_warn = Off PHP バージョンが 4.2.3 とそれ以前には、たとえ register_globals が無効の場合でもグローバルスコープでセッション変数の初期化を 許してしまうドキュメント化されていない特徴/バグがあります。 この機能を session.bug_compat_42 と session.bug_compat_warn を有効にして使用している場合、 PHP 4.3.0 とそれ以降のバージョンでは警告が発されます。 session.referer_check = session.referer_check には、HTTP Referer に おいて確認を行う文字列を指定します。Refererがクライアントにより 送信されており、かつ、指定した文字列が見付からない場合、埋め込 まれたセッションIDは無効となります。デフォルトは空の文字列です。 session.entropy_length = 0 session.entropy_length は、前記のファイルから 読みこむバイト数を指定します。デフォルトは、0 (無効)です。 session.entropy_file = session.entropy_file は、 セッションIDを作成する際の別のエントロピーソースとして使用する 外部リソースへのパスを指定します。 例としては、多くの UNIX で利用可能な /dev/random または /dev/urandom があげられます。 この機能は、Windows では PHP 5.3.3 以降で対応します。 session.entropy_length にゼロ以外の値を設定すると、 PHP は Windows Random API をエントロピーソースとして使います。 session.cache_limiter = nocache session.cache_limiter により、セッションページにおけるキャッシュ制御の方法を指定します。 nocache、private、 private_no_expire あるいは public のいずれかとなります。デフォルトは nocache です。 これらの値の意味については session_cache_limiter() のドキュメントも参照ください。 session.cache_expire = 180 session.cache_expireによりキャッシュされた セッションページの有効期間を分単位で指定します。 このオプションは、nocacheリミッタに関しては効果がありません。 デフォルトは、180です。 session_cache_expire()も参照してください。 session.use_trans_sid = 0 session.use_trans_sidは、透過的なセッション IDの付加をするかどうかを指定します。 デフォルトは、0(無効)です。 session.hash_function = 0 session.use_trans_sidは、透過的なセッション IDの付加をするかどうかを指定します。 デフォルトは、0(無効)です。 session.hash_bits_per_character = 5 session.hash_bits_per_character により バイナリのハッシュデータを何らかの可読なデータに変換する際、 それぞれの文字に何ビットストアさせるかを定義することが可能です。 指定可能な値は、'4' (0-9, a-f)、'5' (0-9, a-v) そして '6' (0-9, a-z, A-Z, "-", ",") です。 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" url_rewriter.tagsは、透過的なセッションIDの 付加機能が有効となった場合に、セッションIDを含めるために書き換 えられるHTMLタグを指定します。デフォルトは、 a=href,area=href,frame=src,input=src,form=fakeentry,fieldset= です。 mssql.allow_persistent = On 記述なし mssql.max_persistent = -1 記述なし mssql.max_links = -1 記述なし mssql.min_error_severity = 10 記述なし mssql.min_message_severity = 10 記述なし mssql.compatability_mode = Off 記述なし mssql.secure_connection = Off 記述なし tidy.clean_output = Off Tidy による出力の修正のオン/オフを切り替える soap.wsdl_cache_enabled=1 WSDLキャッシュ機能有効または無効にします。 soap.wsdl_cache_dir="/tmp" SOAP 拡張モジュールがキャッシュファイルを置くディレクトリの名前を設定します。 soap.wsdl_cache_ttl=86400 キャッシュされたファイルが元のファイルの代わりに使用される秒数 (有効期間)を設定します。
どこをどう変更するかなどは下記サイト等が参考になるかと思います。古めの記事だったりもするので、何をどう変えるか調べて行くのが一番良いですね
- PHPのセキュリティーについてお勉強・・・php.iniの設定を見直しました:dari88’s diary
- PHP5.3 php.iniの必須設定サンプル:ほめおの日記
- php.iniファイルの確認と修正:adminweb.jp
MySQLのインストール
次にMySQLをインストールします。(記事執筆時点でバージョン5.5.30)
yum install mysql-server
MySQLの起動
etc/rc.d/init.d/mysqld start
phpMyAdminのインストール
MySQLを使うときはphpMyAdminを使っているのでインストールします。
yum install phpMyAdmin
インストールが完了したらphpmyadminにアクセスできるようにします。
vim /etc/httpd/conf.d/phpmyadmin.conf
allow fromという記述に127.0.0.1という記述があり、現状ローカルからのアクセスのみを可能としています。ここにご自身のipアドレスを追加すればip制限を掛けることが出来、allを追加すれば外部からどこでもアクセスできるようになります。
Directoryの定義の下に「Alias /phpmyadmin /usr/share/phpmyadmin」と記述するとURLの後ろにphpmyadminと記述すればブラウザからアクセスできるようになります。
よりセキュアにするためにも、使わないときはこれらの設定を元に戻し、外部から接続できないようにしておくのが良いかと思います。
<Directory "/usr/share/phpmyadmin"> Order Deny,Allow Deny from all Allow from 127.0.0.1 all </Directory> Alias /phpMyAdmin /usr/share/phpmyadmin
設定を変えたらApacheを再起動します。
service httpd restart
ftpを使えるようにする vsftpdのインストール
ftpを使えるようにします。sftpのほうがセキュアなんですが今回はftpが必要だったのでインストールしました。(記事執筆時点でバージョン2.2.24)
yum install vsftpd
vsftpdの起動
yum install vsftpd
ftp用ユーザーの追加
useradd ftpuser ←ユーザを作成 passwd **** ←作成したユーザのパスワードを設定 cd /var/www/html/ ←ディレクトリチェンジ mkdir public ←アップロード用ディレクトリの作成(public) chown -R ftpuser:ftpuser public ←作成したディレクトリのオーナー情報変更 chmod 755 public ←パーミッション変更 service httpd restart ←Apache再起動
vsftpdの設定
vim /etc/vsftpd/vsftpd.conf
初期設定は下記のとおりです
anonymous_enable=YES 匿名ユーザーのアクセス許可 local_enable=YES ローカルユーザーのユーザーのアクセス許可 write_enable=YES ファイルシステムを変更するFTPコマンドを許可する local_umask=022 ファイル作成時のデフォルトパーミッション設定 dirmessage_enable=YES ユーザが新しいディレクトリに初めて移動したとき、メッセージを表示する xferlog_enable=YES ファイルのアップロードとダウンロードをログファイルに記録する。 connect_from_port_20=YES 特定のサーバポートを使用した、PORTスタイルのデータコネクション(いわゆるアクティブFTP)を有効にする。 xferlog_std_format=YES xferlog_std_formatオプションが有効のとき、xferlog_fileオプション(デフォルトは/var/log/xferlog)で指定したファイルに wu-ftpd スタイルでログを記録する。 listen=YES vsftpdをスタンドアロンモードで起動する。 inetdやxinetdから起動する場合は、無効にする。 pam_service_name=vsftpd vsftpdが使用するPAMサービス名を指定する。 userlist_enable=YES serlist_fileオプション(デフォルトは/etc/vsftpd.user_listファイル)で指定したファイルに含まれるユーザリストを元に、ログインの許可 / 拒否が決定される。 tcp_wrappers=YES vsftpdがtcp_wrapperをサポートするようコンパイルされていれば、サーバへの接続はtcp_wrapperによって制御される。 [php] <p>下記のように修正します。</p> [php title="vsftpdの設定"] anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=NO xferlog_std_format=YES ascii_upload_enable=YESascii_download_enable=YES use_localtime=YES force_dot_files=YES pasv_enable=YES pasv_min_port=60000 pasv_max_port=61000 pasv_address=54.249.226.26 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list ls_recurse_enable=YES listen=YES 1pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list tcp_wrappers
より詳しくは下記のサイトが参考になります。
設定が終わったら再起動します。
service vsftpd start
サーバー起動時にvsftpdを自動起動させる
chkconfig vsftpd on
参考サイト
今回の記事を書くにあたり下記サイトを参考にさせて頂きました。
- [AWS]AWSでインスタンスの作成 + Apache, PHP, MySQLのインストール:ikemonn’s blog
- phpMyAdminのインストールと初期設定:UNIX Life
- FTPサーバ(vsftp)の設定:UNIX Life
- FTPサーバー構築(vsftpd)
- vsftpdの設定(vsftpd.conf)
Comments
keywords1
This is a reply!...Thank you for your topic!...
Shahroze Nawaz
You have done pretty well but the steps are too long. You can use Cloudways to launch PHP LAMP or LEMP Stacks with just 5 clicks even with any php framework and cms. There are lot's of perks available like free SSL, DNS management, Server settings, Transfer, Clone etc.
YAT
Shahroze Nawaz> I did not know Cloudway. Thank you for teaching me. I will give it a try. And thank you for reading this blog.