LoginSignup
8
6

More than 5 years have passed since last update.

非エンジニアでも自力でローカルでWordpress環境を構築したい

Last updated at Posted at 2017-10-11

はじめに

非エンジニア(デザイナー)でもWordpressをローカルで制作したいので常時SSLでPHP7なWordpress環境を構築してみる。単にWordpressを動かすのならVCCWScotch Boxみたいな素晴らしいものもあるけど、今回は勉強も兼ねて出来るだけ自作してみようと思う。

自分の環境

Windows10
VirtualBox バージョン 5.1.28 r117968 (Qt5.6.2)

$ vagrant -v
Vagrant 2.0.0

必要なもの

これは必須なので各自PCにインストール
- Vagrant
- VirtualBox

Vagrantについて

今回はサーバーのセットアップについて詳しくまとめたいので、Vagrantについては下記を参考に
https://qiita.com/kidach1/items/e63c1607705178aa257c

コマンドライン/ターミナル

WindowsのPowershellでもいいし、Macのターミナルでも良い。
でもConEmuiTermなんかだともっと捗るかと思う。

STEP.1 Vagrantの準備と立ち上げまで

まずは作業用フォルダを作成して移動

mkdir sample
cd sample

boxを追加

boxは公式のVagrant CloudからCentOS6.4を選択。
本当はCentOS7xを利用したかったが、どうも公式のboxはGuest Additionsがなかったり、Private keyのエラーが出たりと、中々安定しなかったので、枯れたCentOS6を選択。この辺りは今後の課題としたい。
ちなみにboxのダウンロードはそこそこ時間がかかるのでコーヒーでも飲んで待とう。

$ vagrant box add puppetlabs/centos-6.6-64-puppet

Vagrantfileの作成

デフォルトのVagrantfileを作成

$ vagrant init

Vagrantfileの編集

Vagrantfileに先程DLしたboxの情報など記入する

Vagrantfile
#15行目にboxを記入
config.vm.box = "puppetlabs/centos-6.6-64-puppet"

#35行目のコメントアウトを外す。192.168.33.10でアクセス出来るようにする。
config.vm.network "private_network", ip: "192.168.33.10"

#46行目にサーバーのドキュメントルートと同期するフォルダやオプションを記入
config.vm.synced_folder "public", "/var/www/", create: true, owner: 'vagrant', group: 'vagrant', mount_options: ['dmode=777,fmode=666']

#52-58のコメントアウトを外し有効メモリを1Gに設定。vb.gui = trueはデバッグ用にVMが自動で立ち上がるので今回はfalseに。
config.vm.provider "virtualbox" do |vb|
  # Display the VirtualBox GUI when booting the machine
  vb.gui = false

  # Customize the amount of memory on the VM:
  vb.memory = "1024"
end

CentOS6.4の起動

$ vagrant up

ここまでで一旦vagrantが立ち上がり、CentOS6.4が起動するところまで出来た

STEP.2 サーバーのインストールと設定

ここからApacheやPHPをインストールをしていく

ルートフォルダを作る

Vagrantfileで設定したドキュメントルートと同期するフォルダを作る。
ここが最終的にhttps://192.168.33.10のルートになる。

$ mkdir public

ここからSSHで設定していく

$ vagrant ssh
[vagrant@localhost ~]$ 
# rootでログイン
[root@localhost vagrant]$ sudo su

# selinuxを無効化する
[root@localhost vagrant]$ sed -i -e "s/SELINUXTYPE=targeted/SELINUXTYPE=disabled/" /etc/selinux/config
[root@localhost vagrant]$ setenforce 0

# iptablesを無効にする
[root@localhost vagrant]$ /sbin/service iptables stop
[root@localhost vagrant]$ /sbin/chkconfig iptables off

#Apacheをインストールして開始
[root@localhost vagrant]$ yum -y install httpd
[root@localhost vagrant]$ /etc/init.d/httpd start

この時点でhttp://192.168.33.10にアクセスするとApacheのテストページが見れるはず。
どんどんセットアップしていきましょう。

# 後のPHPのインストールのためにEPELとRemiリポジトリを追加
[root@localhost vagrant]$ yum -y install epel-release
[root@localhost vagrant]$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# php 7.1をインストール
[root@localhost vagrant]$ yum -y remove php-*
[root@localhost vagrant]$ yum -y install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-mcrypt php-gd php-xml php-intl php-pear php-mysql

# ちゃんとインストール出来たか、phpのバージョンを確認
[root@localhost vagrant]$ php -v
PHP 7.1.10 (cli) (built: Sep 27 2017 08:42:15) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

# mod_sslのインストール
[root@localhost vagrant]$ yum -y install mod_ssl

ここからはviコマンドで設定ファイルを変更します。
vi [触るファイル]

この機会によく使うコマンドは覚えましょう。

# 検索
/[検索する文字列]
# インサートモード
i
# インサートモードの終了
Esc
# 保存しないで終了
:q!
# 保存して終了
:wq

各種設定ファイルを変更

/etc/httpd/conf/httpd.conf
# ドキュメントルートの設定を変更
DocumentRoot "/var/www"
<Directory "/var/www">

# CSSが反映しない場合があるのでOFFに
EnableSendfile off

#httpからhttpsへリダイレクトするように。一番下部に追記。
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
/etc/php.ini
# これをOnにしとかないとphpinfo()が真っ白になっちゃったよ...
short_open_tag = On
mbstring.language = Japanese  
mbstring.internal_encoding = UTF-8  
mbstring.http_input = UTF-8

Apacheの再起動と自動起動を設定

ついでにApacheのインストールで出来た不要なフォルダを消しておきましょう

[root@localhost vagrant]$ /etc/init.d/httpd restart
[root@localhost vagrant]$ /sbin/chkconfig httpd on

# 不要ファイル削除
[root@localhost vagrant] rm -rf /var/www/cgi-bin
[root@localhost vagrant] rm -rf /var/www/html
[root@localhost vagrant] rm -rf /var/www/error
[root@localhost vagrant] rm -rf /var/www/icons

ここで一度phpinfo();を出力してPHPが問題なく動作しているかとhttpsでアクセス出来るか、リダイレクトが動作しているかを確認してみる。

[root@localhost vagrant]$ vi /var/www/info.php
/var/www/info.php
<? phpinfo(); ?>

ここでhttp://192.168.33.10/info.phpにアクセスするとPHP Version 7.1.10と表示されhttpsにリダイレクトされればOKです。

STEP.3 WordpressとMySQLのインストール

WordpressはWP-CLIを利用する

# WP-CLIのインストール。公式のとおりに。
[root@localhost vagrant]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[root@localhost vagrant]$ chmod +x wp-cli.phar
[root@localhost vagrant]$ mv wp-cli.phar /usr/local/bin/wp

# ルートユーザーでWordpressをインストール(パスを通すかrootから抜けて実行でも可能)
[root@localhost vagrant]$ sudo -u vagrant -i -- wp core download --locale=ja --path=/var/www/

# MySQLのインストール
[root@localhost vagrant]$ rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
[root@localhost vagrant]$ yum -y install mysql-community-server

MySQLのパスワードを変更する

MySQLの設定(my.cnf)を変更

/etc/my.cnf
[mysqld]
default_password_lifetime = 0
character-set-server=utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake

[mysql]
default-character-set=utf8

MySQLの立ち上げ(--skip-grant-tablesオプションあり)

# 設定ファイルの所有権を変更
[root@localhost vagrant]$ chmod 644 /etc/my.cnf
# パスワードを回避してMySQLを開始
[root@localhost vagrant]$ service mysqld start --skip-grant-tables
[root@localhost vagrant]$ mysql

仮パスワードに変更する

mysql>
mysql> use mysql;
mysql> UPDATE user SET authentication_string=password('root') WHERE user='root';
mysql> CREATE DATABASE wordpress;
mysql> flush privileges;
mysql> quit

MySQLを再起動と自動起動を設定

[root@localhost vagrant]$ service mysqld restart
[root@localhost vagrant]$ chkconfig mysqld on

STEP.4 Wordpressの設定と構築完了まで

先程設定した仮パスワードで再度ログイン

# パスワードを聞かれるので「root」でログインする
[root@localhost vagrant]$ mysql -u root -p

パスワードのルールが厳しいので緩くする

mysql>
mysql> SET GLOBAL validate_password_length=4;
mysql> SET GLOBAL validate_password_policy=LOW;
mysql> set password for root@localhost=password('root');
mysql> flush privileges;
mysql> quit

MySQLのパスワード変更がややこしいが、これはデフォルトパスワードがlogに記載されているのを回避するためと、パスワードのvalidate_password_policyが高いのでlowに変更する手順を踏んでいるため。この辺りも今後の課題としたい。

WP-CILを利用してDBの設定とwp-configを設定

#wp-config.phpの生成
sudo -u vagrant -i -- wp core config --dbname='wordpress' --dbuser='root' --dbpass='root' --dbhost='localhost' --path='/var/www/'

#dbの作成
sudo -u vagrant -i -- wp core install --url='https://192.168.33.10' --title='Sample Wordpress' --admin_user='root' --admin_password='root' --admin_email='admin@email.jp' --path=/var/www/

これで下記で管理画面に入ることが出来る

ログイン https://192.168.33.10/wp-login.php
ユーザー名 root
パスワード root
データベース MySQL
サーバー localhost
ユーザー名 root
パスワード root
データベース wordpress

自動化

これまでのコマンドをまとめてシェルスクリプトにして、vagrant upの時に実行されるようにまとめてみた。
provisonってすごく便利ですね。

ただ、STEP.4以降が結局vagrant sshして手動でやらないと行けないので、もう少しMySQLを勉強して完全に自動化したい。-eオプションでうまく行かず...

課題

  • やはりCentOS7を利用したい
  • WP-CLIとMySQLのをもう少しなんとかしたい。
  • nginx(php-fpm)対応版とかもやってみたい。
  • いろいろきっと無駄が多い...
  • そしてセキュリティ...
8
6
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
8
6