今回は、Debian 7 を使って、LAMP(Nginx+MySQL+PHP)インストール、Wordpressを動かすまでを行ってみたいと思います。
また、各ディストリビューションは、以下の記事で同じように記載していますので、そちらを参照してください。
CentOS編は、CentOS 7 でLAMP(Nginx+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Nginx編) です。
Ubuntu編は、Ubuntu 14 でLAMP(Nginx+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Nginx編) です。
では、早速、簡単に解説してみます。
- 目次
- 履歴
2015年3月6日 初版
LAMP(Nginx+MySQL+PHP)をインストールする
ここでは、ウェブサーバー(Nginx), データベース(MySQL) ,スクリプト(php) をインストールします。 LAMPのPは、Perlもありますが、依存関係でインストールはされますが、(WordPress自体には、Perlは必要ないので)ここでは明示的にPerlはインストールしません。
phpをインストールする。
- phpをインストールする
# php をインストールします。 # --php-cgi php-fpm のいずれかをFastCGIとして使用します。 $ apt-get -y install php5 php5-cli php5-gd php5-fpm php5-mysql ... # php がインストールできたか、バージョンをチェックしてみます。 $ php5 --version PHP 5.4.36-0+deb7u3 (cli) (built: Jan 9 2015 09:05:14) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
- php-fpmを設定する
ここでは、Nginxとともにphpを動かしますので、php-fpm を使います。
php-cgiでも可能ですが、ここではより簡単な設定で対応可能な php-fpm を使います。
php-fpmの設定(/etc/php5/fpm/pool.d/www.conf を編集)を行っておきます。
/etc/php5/fpm/pool.d/www.conf
[www] ... # 使用するポートを設定します。 listen = 127.0.0.1:9000 ... # listenのオーナーユーザとグループを指定します。 # -- ここでは Nginx のユーザに合わせています。 listen.owner = nginx listen.group = nginx ... # 許可するクライアントのIPアドレスを指定します。 # -- ここではlocalhostだけです。 listen.allowed_clients = 127.0.0.1 ... # php-fpmのサービス実行ユーザ、グループを指定します。 # -- ここでは Nginx のユーザに合わせています。 user = nginx group = nginx ... # php-fpmのサービスのプロセス数を定量とするように設定しておきます。 # -- dynamic を指定すると変動させることができます。 ;pm = dynamic pm = static ... # php-fpmの最大子プロセス数を設定します。 # -- ここでは、3としています。 ;pm.max_children = 50 pm.max_children = 3 ... # php-fpmが受け付ける最大要求数を設定します。 # ここで設定した要求数を処理したら子プロセスを再起動します。 # -- ここでは、500としています。 pm.max_requests = 500
- php-fpmデーモンを起動する
設定を終えたら、php-fpm を起動します。
先に指定した ユーザ、グループが存在しない場合は、作成しておきます。
# ユーザ、グループが存在するか確認します。 # 以下のコマンドで何も出力されないようなら、存在しないでしょう。 $ cat /etc/passwd|grep nginx # グループを追加します。 $ addgroup nginx グループ 'nginx' (GID 1001) を追加しています... 完了。 # ユーザを追加します。 $ useradd -s /usr/sbin/nologin -g nginx -d /var/www -c nginx nginx
# php5-fpm を再起動します。 $ service php5-fpm restart ...
mysqlをインストールする。
- mysql をインストールする
Debian 7 では、残念ながら、MariaDBはデフォルトでパッケージが提供されていません。
ここでは、デフォルトパッケージを使いたいので、そのまま、MySQLをインストールしてみます。 (Debian 7 でMariaDBをインストールしたい方は、Debian(Wheezly 7)で MySQLからMariaDB へ移行してみる を参照してください。)
# mysql-server をインストールします。 $ apt-get -y install mysql-server ... # 以下のように途中でTUIの画面でパスワードの設定を促されます。 # ここで設定したパスワードは、データベース管理者(root)のパスワードですので、忘れないようにしましょう。 # パスワードを入力し、<了解> を押下します。 # ( TAB で <了解> へ移動できます ) lqqqqqqqqqqqqqqqqqqqu mysql-server-5.5 を設定しています tqqqqqqqqqqqqqqqqqqqk x 強制ではありませんが、MySQL を管理する "root" ユーザのパスワードを設定す x x ることを強くお勧めします。 x x x x この値を空のままにしておいた場合は、パスワードは変更されません。 x x x x MySQL の "root" ユーザに対する新しいパスワード: x x x x *********________________________________________________________________ x x x x <了解> x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj # パスワード確認画面です。先と同じパスワードを入力し、<了解> を押下します。 # ( TAB で <了解> へ移動できます ) lqqqqqqu mysql-server-5.5 を設定しています tqqqqqqqk x x x x x MySQL の "root" ユーザに対する新しいパスワード: x x x x *********_______________________________________ x x x x <了解> x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj ... # インストールを終えたら、バージョンを確認してみましょう。 $ mysql --version mysql Ver 14.14 Distrib 5.5.41, for debian-linux-gnu (i686) using readline 6.2
- mysql デーモンを起動する
インストールした時点で、既に、MySQLとしてデーモンが起動されています。
$ ps aux|grep mysql root 11915 0.0 0.0 1936 596 ? S 16:16 0:00 /bin/sh /usr/bin/mysqld_safe mysql 12242 0.3 3.4 324844 35232 ? Sl 16:16 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 root 12243 0.0 0.0 2912 676 ? S 16:16 0:00 logger -t mysqld -p daemon.error root 12436 0.0 0.0 3124 820 pts/1 S+ 16:17 0:00 grep mysql
デーモンの起動・停止・状態確認は、serviceコマンドで行います。
# デーモンの起動 $ service mysql start ... # デーモンの状態確認 $ service mysql status [info] /usr/bin/mysqladmin Ver 8.42 Distrib 5.5.41, for debian-linux-gnu on i686 Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 5.5.41-0+wheezy1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 2 min 3 sec Threads: 1 Questions: 583 Slow queries: 0 Opens: 445 Flush tables: 2 Open tables: 41 Queries per second avg: 4.739.
- Wordperssで使用するデータベースを作成する
ここで、最低限 mysql の以下の項目の設定を行います。
- 新規のデータベースを作成
- 新規ユーザの作成
ここでは、SQLをテキストファイルにまとめて、一気に流してしまいます。
以下は、そのSQLファイルのイメージです。
/* hoge というユーザを新規に作成します。のパスワードも設定します。 */ insert into user set user="hoge", password=password("hogehoge"), host="localhost"; /* wddb というwordpress用にデータベースを作成します。 */ create database wddb; /* wddb というデータベースに hogeというユーザが常にアクセスできるようにします。 */ grant all on wddb.* to hoge; /* 最新に更新 */ FLUSH PRIVILEGES;
続けて、そのSQLファイル ( ここでのファイル名を 例として wordpress.sql とします ) を mysqlコマンドを使って一気に流してみます。
# SQLファイルを実行します。この時、rootのパスワードを問い合わせるように -p オプションを指定しておきます。 $ mysql -uroot -p -Dmysql < wordpress.sql Enter password: # 新規データベースへ新規ユーザでログインできるか確認します。 $ mysql -uhoge -phogehoge -Dwddb Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 46 Server version: 5.5.41-0+wheezy1 (Debian) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye
このようにログインできればOKです。
Nginxをインストールする。
- Nginxをインストールする
Nginxは、Debian 7 では、デフォルトでパッケージが提供されていますので、そのまま、apt でインストールできます。
では、早速、インストールしてみます。
# nginx をインストールする $ apt-get -y install nginx ... # インストールを終えたら、バージョンを確認してみる $ nginx -v nginx version: nginx/1.2.1
- Nginxの設定を行う
Nginx の設定ファイルにて、必要最小限の設定を行います。
Wordpressを動かすために編集が必要な Nginx の設定ファイルは、以下のとおりです。- /etc/nginx/nginx.conf :
Nginxの基本設定ファイルです。
デフォルトの設定ファイルがあるので、それを編集して使用します。以下は、主な設定内容です。ここで記述していること以外は、デフォルトのままでもWordpressは動作します。
# Nginxデーモンを起動するユーザ、グループ名を設定します。 user nginx nginx; ... events { # Nginxデーモンで使用可能な最大接続数を設定します。 worker_connections 1024; } ... http { ... # デフォルトのログ出力ファイル access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ... # sever 共有設定ファイルをすべて読み込みます。 include /etc/nginx/conf.d/*.conf; # (仮想)sever 設定ファイルをすべて読み込みます。 include /etc/nginx/sites-enabled/*; }
access_log および error_log のディレクトリの所有者を nginx に変更します。
$ chown -R nginx: /var/log/nginx $ chmod +r+w /var/log/nginx
- /etc/nginx/fastcgi_params :
NginxのFastCGIのデフォルトパラメータ設定ファイルです。デフォルトの設定ファイルがあるので、それをそのまま使用します。
fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS $https if_not_empty; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;
- /etc/nginx/sites-available/example.conf :
Nginxの仮想ホスト(www.example.com用)設定ファイルです。新規に作成します。
server { # サーバーのデフォルトTCPポートです。 listen 80; # サーバー名を設定します。 server_name www.example.com; # ドキュメントルートディレクトリを設定します。 root /var/www/html; # index file タイプの優先順を設定します。 index index.php index.html index.htm; # ログファイル名を設定します。 access_log /var/log/nginx/www.example.com/access.log; error_log /var/log/nginx/www.example.com/error.log; # WordPress用のリダイレクト設定 # ファイルが存在しないURIの場合は、index.phpへ転送させる。 try_files $uri $uri/ /index.php?q= # PHP FPM との接続を行うため 拡張子phpに対して処理します。 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
ここで指定した root ディレクトリが存在しない場合は作成しておきます。
$ mkdir -p /var/www/html
また、ファイルの編集を終えたら、/etc/nginx/sites-enabled/ にシンボリックリンクを作成します。
これを作成しないと読み込んでくれませんので注意しましょう。
$ ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf
- /etc/nginx/nginx.conf :
- Nginxデーモンを起動する
既にApacheがインストールされ、起動している場合は、まず、Apacheを停止します。
# Apacheを停止します。 $ service stop apache2 # 再起動してもapacheが自動起動しないように無効にします。 # 現在の状態を確認する $ sysv-rc-conf --list apache2 apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 再起動してもhttpdapache自動起動しないように無効にします。 $ sysv-rc-conf apache2 off # 再度、状態を確認する $ sysv-rc-conf --list apache2 apache2 0:off 1:off 2:off 3:off 4:off 5:off 6:off
特別、Apacheをインストールしておく必要性がない限り、アンインストールした方が良いです。 無題にディスク容量を使用しますし、無駄なプロセス資源も使ってしまうので、アンインストールをおすすめします。$ apt-get -y purge apache2 ...
ここまで設定を終えたら、ログファイルの出力先ディレクトリを作成し、Nginxデーモンを起動します。
# ログ出力先ディレクトリを作成します。 $ mkdir -p /var/log/nginx/www.example.com # ログ出力先ディレクトリの所有者をnginxとします。 $ chown nginx: /var/log/nginx/www.example.com $ chmod +r+w /var/log/nginx/www.example.com # 既に起動している場合は、一旦、ウェブサーバー(nginx) を停止します。 $ service nginx stop # ウェブサーバー(nginx) を起動します。 $ service nginx start # ウェブサーバー(nginx) のデーモン(サービス)が起動しているか確認します。 $ service nginx status * nginx is running # ↑ このようにウェブサーバー(nginx) のデーモン(サービス)が起動していることが確認できます。 # 次に、ウェブサーバー(nginx)デーモンの登録状態を確認します。 $ sysv-rc-conf --list nginx ginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off # ↑ デフォルトで on 状態なので、何もする必要ないはずです。 # もし、全て off 状態の場合は、以下のように on 設定します。 $ sysv-rc-conf nginx on # ウェブサーバー(nginx) の動作確認用のファイルを作成します。 $ cd /var/www/html [html]$ sh -c "echo '<?php echo phpinfo(); ?>' > index.php" [html]$
上記で作成したindex.php へアクセスしてみてください。(ここでの例では、http://www.example.com/index.php へアクセスすることになります。 )
ここでアクセスするためのドメインについては、DNSの設定を行っておきます。
先のhttpd.confのServerNameで設定したドメインに関してDNSレコードに設定しておく必要があります。
DNSレコードを設定することで、普通に、http://www.exmapl.com/index.php でアクセスできるようにしておきます。
この画面が見えればOK。
見えない場合、 接続に失敗した場合は、ドメインが正しくIPアドレスをさしているか確認します。 接続がタイムアウトとなる場合は、iptables で接続を拒否している可能性があります。 iptables で http プロトコルを有効にしてみます。# iptables が動作しているか確認します。 $ iptables --list Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere DROP all -- 10.0.0.0/8 anywhere DROP all -- 172.16.0.0/12 anywhere ACCEPT icmp -- anywhere anywhere icmp echo-request ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere # ↑ このように http がaccept 状態になっていない場合は、以下のように該ポートを有効にします。 # iptables でhttpを有効にします。 $ iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 再度、確認してみます。 $ iptables --list Chain INPUT (policy DROP) target prot opt source destination ... ACCEPT tcp -- anywhere anywhere tcp dpt:http ... # ↑ このように http がaccept 状態になっていればOKです。
上記の手順どおりであれば、アクセスできるようになるでしょう。
WordPress をインストールする
最後に WordPress をインストールして動かしてみましょう。
- 最新版のWordpressをダウンロードし、展開します。
最新のWordpressをダウンロードします。
# 最新のWordpressをダウンロードします。 # -- 最新版のファイル名は、必ず、Wordpressのサイトで確認しましょう。 $ wget https://ja.wordpress.org/wordpress-4.1-ja.zip ...
wget コマンドがなければ、yum install wget
でインストールしましょう。
続けて、zipファイルを解凍します。
$ mv wordpress-4.1-ja.zip /var/www/html/. $ cd /var/www/html/ [html]$ unzip -q wordpress-4.1-ja.zip [html]$ mv wordpress/* . [html]$ rm -fR wordpress
wordpress配下の全ファイル・ディレクトリをphpの実行ユーザに変更すると、Wordpressインストール時は楽です。ただ、セキュリティ面からすると、非常に問題も多いです。$ cd /var/www/ [www]$ chown -R nginx: html
そのため、インストールまでは、phpの実行ユーザにしておき、インストール後に戻すことにします。
- ウェブブラウザからアクセスします。
ここでは、www.example.com というサーバー名でアクセスできるものとして設定していますので、
http://www.example.com でアクセスします。
初期状態では、Wordpressの設定用ファイル ( wp-config.php ) がない場合は、作成しますよ・・もし、作成に失敗してもテキストエディタで書き込めば大丈夫ですよ・・・というメッセージが表示されます。
さあ、始めましょう! をクリックして、次へ進みます。
- データベース情報を設定し、Wordpressで必要なテーブルを作成します。
- データベース名 :
先に作成したデータベース名を入力します。
ここでは、wddb とします。
- ユーザ名 :
先に作成したデータベースのユーザ名を入力します。
ここでは、hoge とします。
- パスワード :
先に作成したデータベースへアクセスできるユーザのパスワードを入力します。 ここでは、hogehoge とします。
- データベースのホスト名 :
ここでは、同じホスト内なのでlocalhostとします。
- テーブル接頭辞 :
同じデータベースに複数のWordpressをインストールする場合は、ユニークな文字列を設定します。
同じデータベースに1つしかWordpressをインストールしない場合は、そのままで可。
※ここで設定するテーブル接頭辞は、このWordpressの識別子のようなものです。
ここでは、wp_ とします。
送信 をクリックして、データベースにWordpressで使用するテーブルを作成します。
ここで、設定ファイル ( wp-config.php )が存在しない場合は、自動的に作成しようとします。そこで作成できなかった場合、以下のような画面が表示されます。
この場合、手動で 設定ファイル ( wp-config.php ) を作成するか、Wordpress のインストール先に書き込み権を与えると先に進むことができます。
Wordpress のインストール先に書き込み権を与える場合、簡単なのは、所有者をnginx へ変更してしまうことです。以下は、その例です。
これで、/var/www/htmlの配下全ての所有者および所有グループを nginx に変更できます。$ chown -R nginx: /var/www/html
所有者を変更しても書き込みができない場合は、SELinuxが有効になっていないか確認すると良いでしょう。# 現在の SELinux の状態を確認する。 $ getenforce Enforcing # ↑ Enforcing:有効、Permissive:無効 # 一時的に SELinux を無効にする。 $ setenforce 0 # 現在の SELinux の状態を再確認する。 $ getenforce Permissive # ↑ Enforcing:有効、Permissive:無効
データベースへの接続が可能な場合は、上記のように表示されます。
続けて、インストール実行 をクリックして、データベースに基本的なデータを設定します。
- データベース名 :
- WordPressで必要なテーブルの作成が完了したら、次にWordpressの情報を設定します。
- サイトのタイトル :
WordPressで管理するサイト名を入力します。
(ここでは、あくまで例として「ワードプレスをインストールしてみた」としました。)
- ユーザ名 :
WordPressの管理ユーザ名 (デフォルト : admin )
(セキュリティ上、admin以外を使うことをおすすめしますが、ここでは、簡単を重視するため、デフォルトのadminを使います。)
- パスワード :
WordPressの管理ユーザのパスワード
(セキュリティ上、強い パスワード(英数字をからめた8文字以上)のパスワードを設定しましょう。)
- メールアドレス :
WordPressの管理ユーザのメールアドレス
(このアドレスは、パスワードを忘れてしまった時などにも用いられますから、良く使うメールアドレスで必ず着信できるメールアドレスにしましょう。)
- このサイトがGoogleやTechnoratiなどの検索エンジンに表示されるのを許可する。 :
WordPressで記事を投稿したときに検索エンジンに通知するか否かを指定します。
(通常は、チェックします。テスト(試す)のみなら、ここのチェックは不要です。)
WordPressをインストール をクリックして、Wordpressをインストールします。
- サイトのタイトル :
- WordPressが正常にインストールできたら、以下の画面が表示されます。
これでインストールは完了したので、ログイン ボタンをクリックすると、下記のログイン画面が表示されます。
簡単な動作確認のために、ログインしてみるのも良いですし、
画面下のリンクが、ウェブサイトへのリンクとなっていますので、そこをクリックし、サイト表示させて動作を確認するのも良いと思います。
ここでは、後者を使って動作を確認してみます。以下のようにウェブサイトのトップページが表示されればOKです。
最後に、セキュリティ上、php実行者がファイルの書き換えなどできないようにしたい場合は、所有者を変更します。ここでは、hoge というユーザにしましたが、変更したいユーザを指定してください。$ cd /var/www/ [www]$ chown -R hoge: html
ここで変更してしまうと、Wordpressの自動更新やWordpressでのファイルアップロード機能などが使えなくなる場合がありますので、臨機応変、適用してください。
Debian 7 は、デフォルトパッケージに Nginx が提供されているものの まだ、MariaDB は、公式には提供されておらず、MySQLがそのままデフォルトパッケージとなっています。(次期バージョンでは、MariaDB がデフォルトパッケージとして提供されるらしいです。)
ここまでに UbuntuおよびDebian の記事を色々と書いてきましたので、それらを通読されている方には、なんでもない記事ですが、ただ、なかなか、そこまで読めないと思いますので、この記事で Debian でのWordpressサイト構築にお役に立てたらうれしく思います。
正直、Debianの公式パッケージは、バージョンが古いので、扱いづらい点もありますが、 phpも5.4、MySQLも 5.5 となり、必要な機能は、ほぼ、揃っているのかなぁと思いますので、そこまで、最新バージョンにこだわる必要もなくなりつつあります。
やっぱり、サーバーとしては CentOS が、デスクトップとしては Ubuntu が 人気を博しているLinuxディストリビューションですが、 Debianは、安定したディストリビューションの一つでありますし、かなり軽いディストリビューションでもあります。
格安VPSの1,000円サーバー(さくらのVPS や ConoHa VPS 、お名前.com VPS(KVM))を使う場合、 かなり、おすすめな組み合わせなのではないかと思います。
個人的には、いつも、このパターンで組むことが多いです。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
- Ubuntu 14 でLAMP(Nginx+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Nginx編)
- Debian(Wheezly 7)で MySQLからMariaDB へ移行してみる
- CentOS 7 でLAMP(Apache+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Apache編)
- CentOS 7 でLAMP(Nginx+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Nginx編)
- Ubuntu Server にLAMPをインストールし、WordPressを使ってみる
コメントを投稿 :