今回は、CentOS,ScientificLinuxでLAMP(Apache+MySQL+PHP)インストールからWordPressを動かすまで(Apache編) の CentOS バージョン 7 対応です。
Debian(Wheezly 7)で MySQLからMariaDB へ移行してみる でも書きましたが、CentOS 7 からは、MySQL→MariaDB へ変更となりました。
また、デーモンの起動方法なども旧バージョンから変更がありましたので、ここでは、記事を別にしました。
早速、CentOS 7 に LAMP(Apache+MariaDB(MySQL)+PHP)をインストールし、Wordpressを動かすまでを、簡単に解説してみます。
- 目次
- 履歴
2014年8月1日 初版
LAMP(Apache+MariaDB(MySQL)+PHP)をインストールする
ここでは、ウェブサーバー(apache), データベース(MariaDB(MySQL)) ,スクリプト(php) をインストールします。 LAMPのPは、Perlもありますが、依存関係でインストールはされますが、(WordPress自体には、Perlは必要ないので)ここでは明示的にPerlはインストールしません。
phpをインストールする。
|
Apache では、phpのモジュール版で動作させますので、cgiやfpmはインストールしません。
mariadb(mysql)をインストールする。
- mariadb をインストールする
CentOS 7 からは、MySQLでなく 互換の MariaDB をインストールすることになります。
# mariadb mariadb-server をインストールします。 $ yum -y install mariadb mariadb-server ... $ mysql --version mysql Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
MySQLのディストリビューションが、Distrib 5.5.37-MariaDB となっていることに注意してください。
MariaDB は、MySQLと互換性があるので、コマンドもそのままMySQLのコマンドと同じように利用できます。
以降に出てくるコマンドもMySQLのそれと全く同じです。
- mariadb デーモンを起動する
デーモンの起動は、今まで、以下のように行っていました。
$ /etc/init.d/mysqld start ... # あるいは、 $ service mysqld start ...
しかし、CentOS 7 からは、systemctl を使うようになりました。
まずは、インストールしたMariaDBの状態を確認しておきます。
# mariadbデーモンが起動しているか確認します。 $ systemctl list-units |grep mariadb # ↑ 何も出力されないので、起動していない状態だとわかります。 # 次に、mariadbデーモンの登録状態を確認します。 $ systemctl list-unit-files |grep mariadb mariadb.service disabled # ↑ disabledなので、再起動してもmariadbデーモンのは起動しません。
現状は、動いておらず、disabled(無効)扱いなので、まずは、デーモンを起動します。
# mariadb のデーモン(サービス)を起動します。 $ systemctl start mariadb.service # mariadb のデーモン(サービス)が起動しているか確認します。 $ systemctl list-units |grep mariadb mariadb.service \ loaded active running MariaDB database server # ↑ このようにmariadb のデーモン(サービス)が起動していることが確認できます。 # 次に、mariadbデーモンの登録状態を確認します。 $ systemctl list-unit-files |grep mariadb mariadb.service disabled # ↑ disabledなので、再起動してもmariadbデーモンのは起動しません。 # 次に、mariadbデーモンがブート時に自動起動するように設定しておきます。 $ systemctl enable mariadb.service ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service' # 再度、mariadbデーモンの登録状態を確認します。 $ systemctl list-unit-files |grep mariadb mariadb.service enabled # ↑ enabledなので、再起動してもmariadbデーモンは起動されます。
デーモンがシステムの再起動時に起動するように設定するには、以前のバージョンでは、chkconfigで行っていました。
CentOS 7 では、systemctl enable|disabled で設定します。
また、上記の出力のようにsystemctl enable|disabledでは、/etc/systemd/system/multi-user.target.wants/ 配下にサービスの設定ファイルのリンクファイルの作成|削除を行っています。
- Wordperssで使用するデータベースを作成する
ここで、最低限 mysql の以下の項目の設定を行います。
- 管理者パスワード設定
- 新規のデータベースを作成
- 新規ユーザの作成
ここでは、SQLをテキストファイルにまとめて、一気に流してしまいます。
以下は、そのSQLファイルのイメージです。
/* rootのパスワードを設定します。 */ set password for root@localhost=password('roothoge'); /* 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ファイルを実行します。 $ mysql -uroot -Dmysql < wordpress.sql # 管理者でログインできるか確認します。 $ mysql -uroot -proothoge Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 5.5.37-MariaDB MariaDB Server Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> exit Bye # 続けて新規データベースへ新規ユーザでログインできるか確認します。 $ mysql -uhoge -phogehoge -Dwddb Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 5.5.37-MariaDB MariaDB Server Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [wddb]> exit Bye
このようにログインできればOKです。
Apacheをインストールする。
- Apacheをインストールする
$ yum -y install httpd ...
上記のインストール手順から php のインストール時に依存関係があるので、既にインストール済になっていると思います。
上記のように出力されれば、既にインストール済です。$ rpm -qa|grep http httpd-tools-2.4.6-18.el7.centos.x86_64 httpd-2.4.6-18.el7.centos.x86_64
- Apacheの設定を行う
# ここでは、必要最小限のサーバー名だけ設定しておきます。 $ vi /etc/httpd/conf/httpd.conf ... # サーバー名だけ指定しておく。 ServerName www.example.com:80 ...
- Apacheデーモンを起動する
CentOS 7 からは、MariaDB と同じように、
デーモンの起動・停止、有効・無効は、systemctl を使うようになりました。 以前のバージョンまでのように service や /etc/init.d/.. ではないことに注意してください。
# ウェブサーバー(httpd) を起動します。 $ systemctl start httpd.service # ウェブサーバー(httpd) のデーモン(サービス)が起動しているか確認します。 $ systemctl list-units |grep httpd httpd.service \ loaded active running The Apache HTTP Server # ↑ このようにウェブサーバー(httpd) のデーモン(サービス)が起動していることが確認できます。 # 次に、ウェブサーバー(httpd)デーモンの登録状態を確認します。 $ systemctl list-unit-files |grep httpd httpd.service disabled # ↑ disabledなので、再起動してもウェブサーバー(httpd)デーモンのは起動しません。 # 次に、ウェブサーバー(httpd)デーモンがブート時に自動起動するように設定しておきます。 $ systemctl enable httpd.service ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service' # 再度、ウェブサーバー(httpd)デーモンの登録状態を確認します。 $ systemctl list-unit-files |grep httpd httpd.service enabled # ↑ enabledなので、再起動してもウェブサーバー(httpd)デーモンは起動されます。 # ウェブサーバー(httpd) の動作確認ようのファイルを作成します。 $ cd /var/www/html [html]$ 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アドレスをさしているか確認します。 接続がタイムアウトとなる場合は、firewall-cmd で接続を拒否している可能性があります。 firewall-cmd で http プロトコルを有効にしてみます。# firewall-cmd が動作しているか確認します。 $ firewall-cmd --state running # ↑ firewall-cmd が動作しています。 # firewall-cmd で有効にしているプロトコルを確認します。 $ firewall-cmd --list-services dhcpv6-client ssh # ↑ http が含まれていません。 # firewall-cmd でhttpを有効にします。 $ firewall-cmd --add-service=http success # firewall-cmd で有効にしているプロトコルを再確認します。 $ firewall-cmd --list-services dhcpv6-client http ssh
CentOS 7 からは、ファイアウォールに iptables でなく、 firewall-cmd をデフォルトで使用するようになっています。上記の手順どおりであれば、アクセスできるようになるでしょう。
WordPress をインストールする
最後に WordPress をインストールして動かしてみましょう。
- 最新版のWordpressをダウンロードし、展開します。
最新のWordpressをダウンロードします。
# 最新のWordpressをダウンロードします。 # -- 最新版のファイル名は、必ず、Wordpressのサイトで確認しましょう。 $ wget http://ja.wordpress.org/wordpress-3.9.1-ja.zip ...
wget コマンドがなければ、yum install wget
でインストールしましょう。
続けて、zipファイルを解凍します。
$ mv wordpress-3.9.1-ja.zip /var/www/html/. $ cd /var/www/html/ [html]$ unzip -q wordpress-3.9.1-ja.zip [html]$ mv wordpress/* . [html]$ rm -fR wordpress
- ウェブブラウザからアクセスします。
ここでは、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 のインストール先に書き込み権を与える場合、簡単なのは、所有者をapache へ変更してしまうことです。以下は、その例です。
これで、/var/www/htmlの配下全ての所有者および所有グループを apache に変更できます。$ chown -R apache: /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でのファイルアップロード機能などが使えなくなる場合がありますので、臨機応変、適用してください。
また、ここに書いているのは、あくまで必要最小限としての記載ですので、ユーザによっては、もっと、細かい設定を行いたいと思うかもしれません。 その際は、このサイトでも個々の詳細な設定記事がありますので、そちらを参照してください。
格安のVPSでも CentOS 7 への対応が始まっています。
さくらのVPS や ConoHa VPS 、お名前.com VPS(KVM) は、既に対応済です。
これから、CentOS 7 がしばらくVPSのスタンダードになりそうですので、ここでのWordpressの設定例から、少しでもCentOS 7 に慣れられたらよろしいかと思います。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
- CentOS 7 でLAMP(Nginx+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Nginx編)
- さくらのVPSを使うときに最初にやっておきたいこと(CentOS 7編)
- CentOS,ScientificLinuxでLAMP(Apache+MySQL+PHP)インストールからWordPressを動かすまで(Apache編)
- Ubuntu 14 でLAMP(Nginx+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Nginx編)
- Debian(Wheezly 7)で MySQLからMariaDB へ移行してみる
2015年12月9日, 9:54 AM
職場でブログサーバを立ち上げる際に非常に参考になりました。
wordpressよりCent7の方が??の連続でしたが、旧Verと差もわかるよう
記載されていたので、助かりました。
ありがとうございました。
2015年12月9日, 12:52 PM
aim さん
コメントありがとうございます、管理人です。
ご参考になったのであれば幸いです。またご意見などもありましたら、お願いいたしておきます。
2015年12月16日, 8:08 PM
お世話になっております。
wordpress.sqlファイルを作成し
$ mysql -uroot -Dmysql < wordpress.sql
を実行するとエラがでます。
-Dmysqlはどういう意味でしょうか?
2015年12月17日, 3:52 AM
foobar さん
コメントありがとうございます、管理人です。
> -Dmysqlはどういう意味でしょうか?
すみません、mysqlコマンドの昔のなごりで、-D オプションでデータベース名(mysql)を指定しています。
(今では、オプションなしでデータベース名をそのまま指定できます。)
この指定を行っているのは、
> 3.Wordperssで使用するデータベースを作成する
なので、ユーザ情報データベースの作成など管理情報を設定しています。
そのため、mysqlデータベースを設定する必要があります。
2015年12月17日, 11:09 AM
ご返答有難うございます。
そうすると、上記の例だと$ mysql -uroot wddb < wordpress.sqlとかになるのでしょうか?
2015年12月17日, 12:08 PM
foobar さん
コメントありがとうございます、管理人です。
すみません、ご質問の意味がよくわかりません。
mysqlという管理用のデータベースが必ずあります。管理用のデータベースが wddb ?? ・・・って、Muuuuu…
もしも、mysqlの管理データベースが何かわからない・・・となると、Googleさんで、mysql ユーザ登録 sql などで検索されると何かヒントが出てくるかもしれません。勝手な推測ですみません。