6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant + CentOS + Nginx + MySQL + WordPress

Last updated at Posted at 2016-10-28

題名のとおりです。
ansibleのplaybookを作る前に、どんな手順だっけと思ってまとめました。

ゴール

Vagrant で CentOSを作って、Nginx + MySQL環境にWordPressを構築する

下記構成でwordpressを動作させる

対象 ソフトウェア
OS CentOS
Webサーバー nginx
Database MySQL
Other PHP

やらないこと

  • セキュリティ関連の設定

本来必要なことですが、セキュリティの設定を除き手順の明瞭性を上げたいと思います。

環境・前提条件

  • vagrant
  • virtualbox

手順

仮想環境の用意

$mkdir vagrant_wordpress
$cd vagrant_wordpress
$vagrant init boxname
$vi Vagrantfile << vagrantファイルを編集する(privateネットを利用可能にする)
$vagrant up

メモ

sshがつながらないので下記をしておくこと

vagrant ssh
chmod 600 .ssh/authorized_keys

webサーバー

リポジトリの追加

リポジトリ追加しておきます

sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

インストール

$ sudo yum install -y nginx
$sudo service nginx start
$sudo chkconfig nginx on

インストールして、Nginxを起動します。
合わせてサーバー再起動時にNginxが起動するようにchkconfigで設定をします。

簡単な動作テスト

Vagrantfileに記述されているIPアドレスにアクセスしてみる。
ホストOS側のブラウザで、nginxのトップページが出ればOK。

書き換える

wordpressを、/var/www/wp/wordpressに配置する予定です。

$sudo vi /etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/default.conf
# ...
location / {
        root   /var/www/html/wp/wordpress; # DocumentRootを変更
        index  index.html index.htm index.php;
    }
# ...              

書き換えたら再起動

iptables

$sudo service iptables stop
$sudo chkconfig iptables off

ifconfigで調べたipにローカルからアクセスする。

mysql

インストール

$sudo yum -y install mysql mysql-server

メモ

  • mysqlはmysqlのクライアント
  • mysql-serverはmysqlのデーモン。サービス名はmysqld

mysqlの起動

  • OSに自動起動するよういにしておく。
sudo service mysqld start
sudo chkconfig mysqld on

初期設定

下記をします。

  1. mysqlにログインするユーザのパスワード設定
  2. wp用のDBを作成
mysql -u root

@mysql
update mysql.user set password=password('new_password_for_root') where user = 'root';
flush privileges;
exit

flush privileges;で設定変更を反映させています。
もし、うまく行かなければmysqlクライアントを終了したあとで、mysqldを再起動させればOKです。

sudo service mysqld restart

再度mysqlを実行して、passwordを聞かれればOKです。

$mysql -u root -p
Enter password:

wordpress用のDBを作成する


mysql -u root -p 
Enter password: '先程設定したパスワード'

mysql> create database wordpress; 
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on wp.* to wp@localhost identified by 'wordpress_user_password';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

PHP

環境やPHPのversonによって必要なパッケージが異なるようですが、下記を入れます。

sudo yum -y install php php-mysql php-fpm

PHPはほとんど使ったことがないのですが、ライブラリがたくさんあるのですね…

パッケージ 解説
php-mysql PHPからMySQLに接続するためのライブラリ
php php本体
php-fpm FastCGI Process Manager。PHPのFastCGI実装
php-mbstring PHPの日本語環境の設定

確認

versionが確認できればOK

$php --version
PHP 5.3.3 (cli) (built: Aug 11 2016 20:33:53)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

設定変更

したほうが良い気がするけど、とりあえずまずはしない。

php-fpm設定

いるかいらんかよくわからんが…

$sudo vi /etc/php-fpm.d/www.conf
www.conf
user = apache # apache を nginx へ変更
group = apache # apache を nginx へ変更

設定を変更したら起動します。

$ sudo service php-fpm start
Starting php-fpm: [  OK  ]

ついでに起動時に実行されるようにしておく。

$sudo chkconfig php-fpm on

wordpress

取得

$cd /var/www/html
$sudo mkdir wp
$cd wp
$sudo wget https://ja.wordpress.org/wordpress-4.6-ja.tar.gz 

解凍

$sudo tar xvzf  wordpress-4.6-ja.tar.gz
  • /var/www/html/wp/wordpress となっていればOK

各種設定

word権限の変更

$cd /var/www/html
$chown -R nginx:nginx wp/wordpress

nginxとphp-fpmの連携

$sudo touch /etc/nginx/conf.d/wordpress.conf
$sudo vi /etc/nginx/conf.d/wordpress.conf
/etc/nginx/conf.d/wordpress.conf
server {
        listen 80;
        server_name 195.168.59.16;
        index index.php ;
        root /var/www/html/wp/wordpress ;
        location ~* /wp-config.php {
             deny all;
        }
        location ~ \.php$ {
             root           /var/www/html/wp/wordpress ;
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
        }
    }

/etc/nginx/nginx.confinclude /etc/nginx/conf.d/*.conf;の設定がされているので作成したwordpressの設定は自動的に読み込まれます。

動作確認

まとめ

セキュリティの設定はしていませんが、とりあえずwordpressの構築ができました。
上記も慣れてくれば5分〜10分程度でも完了できるようになりますが、こういった手順はレシピにまとめたいですね。
というわけで、今後は上記をansibleのplaybookにまとめて見たいと思います。

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?