• Article
  • Ubuntu18.04にWordPressをインストールしてローカルの開発環境を作る方法

    posted at 2018年9月22日

    今回、Ubuntu18.04にWordpressを入れる機会があったので、その知見を公開します。

     

    Apache2 + MySQL + PHP7.2 + WordPress という形で構成します。XAMPPは使いません。

     

    少しでもお力になれれば幸いです。

     

    なお、参考1をベースに書いているため、手順は似ています。気になる方は合わせて読んで下さい。

     

    sysv-rc-confのインストール

    マシンを起動した時、同時にMySQL, apache2を起動したいので、sysv-rc-confをインストールします(参考2)。

     

    wget http://archive.ubuntu.com/ubuntu/pool/universe/s/sysv-rc-conf/sysv-rc-conf_0.99.orig.tar.gz
    tar zxvf sysv-rc-conf_0.99.orig.tar.gz
    cd sysv-rc-conf-0.99
    sudo make
    sudo make install

     

    以下の依存パッケージが必要です。

    sudo apt install libcurses-ui-perl libterm-readkey-perl libcurses-perl

     

    そして以下を実行し、図のように出力されれば成功。

    sudo sysv-rc-conf

     

    MySQL

    インストール

    sudo apt install -y mysql-server
    sudo mysql_secure_installation

     

    このとき色々選択肢がありますが、参考3を見ながらやりました。

     

     

    セットアップ

    MySQLにルートでログインする(参考4)。

    sudo mysql -u root -p

     

    この記事では’wp_db’という名前のデータベースを作ります。

     

    データベース名は何でも構いません。ユーザー名は’wp_user’にしました。

     

    また、’user_password’, ‘database_password’は好きなパスワードを設定して下さい。

    CREATE DATABASE wp_db SET utf8;
    CREATE USER wp_user@localhost IDENTIFIED BY 'user_password'
    GRANT ALL PRIVILEGES ON wp_db.* TO wp_user@localhost IDENTIFIED BY 'database_password';
    FLUSH PRIVILEGES;

     

    データベースが出来たか確認するには、

    SHOW DATABASES;

     

    これで自分の作ったものがあればオーケーです。

     

    続いて、記事冒頭でインストールしたsysv-rc-confでMySQLが自動起動するようにします。

    sudo sysv-rc-conf mysqld on

     

    Apache2

    まずはインストールしましょう。

    sudo apt install -y apache2

     

    インストールできたら、自動起動を設定します。

    sudo sysv-rc-conf apache2 on
    (out)AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    (out)apachectl[18161]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80

     

    ここで僕の場合以上のようなエラーが出ました。

     

    エラー1:
    AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message

     

    解決方法(参考5)

    sudo echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf
    sudo a2enconf fqdn
    sudo service apache2 restart

     

    エラー2:
    apachectl[18161]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80

     

    80番ポートが別のプロセスに占有されているようです。
    これに関しては、参考6参考7を読み込めば解決できます。

     

    解決したらもう1回

    sudo sysv-rc-conf apache2 on

     

     

    PHP

    インストール

    PHP7.2をインストールします。

    sudo apt install -y php libapache2-mod-php php-mysql

     

    以下は必要に応じて、と参照サイトにはありましたが、全部入れちゃって良いんじゃないでしょうかね。

    ちなみにphp-mcriptだけ7.2版がなかったので、7.1版に指定しました。

    sudo apt install -y php-mbstring php7.1-mcrypt php-curl php-gd php-xml

     

     

    動作確認

    /var/www/html/info.phpを作成し、以下を記入します。
    ファイルの作成

    touch /var/www/html/info.php
    vim /var/www/html/info.php

     

    ファイルの編集

    <?php phpinfo();

     

    ここで重要なのが、外部からのアクセスを制限することです。

    今の所、80番ポートを全世界に向けておっぴろげているので、アクセス許可をlocalhostに限定します(参考8)

    sudo vim /etc/apache2/ports.conf

     

    これで、先頭の方に

     

    Listen 80

     

    とあるのを

     

    Listen 127.0.0.1:80

     

    にしておきます。

     

    127.0.0.1はループバックIPアドレスと言って、自分自身を表すIPアドレスです。

     

     

    WordPress

    以下殆ど参考1と同じことをします。内容も殆ど同じになってしまうので、引用しておきます(書式は改変、内容もごく一部改変)

     

     

    以下引用—————————————

    設定ファイルをバックアップ

    sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.original

     

    WordPressのインストール先を追加

    <Directory /var/www/html/wordpress>
            AllowOverride All
    </Directory>

     

    設定ファイルのチェック

    sudo apache2ctl configtest
    (out)Syntax OK

     

    mod_rewriteを有効化し、Apacheを再起動

    sudo a2enmod rewrite
    sudo systemctl restart apache2

     

    WP-CLIインストール

    cd
    curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
    chmod +x wp-cli.phar
    sudo mv wp-cli.phar /usr/local/bin/wp
    wp --info

     

    WordPressのインストール

    WP-CLIで/var/www/html/wordpressにインストール

    sudo su -
    wp core download --locale=ja --path=/var/www/html/wordpress --allow-root
    touch /var/www/html/wordpress/.htaccess
    chmod 660 /var/www/html/wordpress/.htaccess
    cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
    mkdir /var/www/html/wordpress/wp-content/upgrade
    sudo chown -R [作業ユーザ名]:www-data /var/www/html/wordpress
    sudo chmod g+w /var/www/html/wordpress/wp-content
    sudo chmod -R g+w /var/www/html/wordpress/wp-content/themes
    sudo chmod -R g+w /var/www/html/wordpress/wp-content/plugins
    sudo chmod -R g+w /var/www/html/wordpress/wp-content/upgrade
    sudo chmod -R g+w /var/www/html/wordpress/wp-content/languages
    exit

    引用終わり—————————————

     

    wp-config.phpの変更

    wp-config.phpを編集する前に、以下のコマンドから文字列を作っておきます。

    curl -s https://api.wordpress.org/secret-key/1.1/salt/
    (out)define('AUTH_KEY',         'hogehoge');
    (out)define('SECURE_AUTH_KEY',  'fugafuga');
    (out)define('LOGGED_IN_KEY',    'foofoo');
    (out)define('NONCE_KEY',        'barbar');
    (out)define('AUTH_SALT',        'foobar');
    (out)define('SECURE_AUTH_SALT', 'piyopiyo');
    (out)define('LOGGED_IN_SALT',   'buzbuz');
    (out)define('NONCE_SALT',       'bizbiz');

     

    この出力をクリップボードにコピーしておきましょう。

     

    そうしたら、/var/www/html/wordpress/wp-config.phpを開きます。

    define('AUTH_KEY',         'put your unique phrase here');
    define('SECURE_AUTH_KEY',  'put your unique phrase here');
    define('LOGGED_IN_KEY',    'put your unique phrase here');
    define('NONCE_KEY',        'put your unique phrase here');
    define('AUTH_SALT',        'put your unique phrase here');
    define('SECURE_AUTH_SALT', 'put your unique phrase here');
    define('LOGGED_IN_SALT',   'put your unique phrase here');
    define('NONCE_SALT',       'put your unique phrase here');

     

    デフォルトでは上のようになっているところを、先程コピーしたものに差し替えます。

     

    つづいて、同ファイル内に設定されているデータベース名、ユーザー名、パスワードは先程設定したものを入れて下さい。

    // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
    /** WordPress のためのデータベース名 */
    define('DB_NAME', 'wp_db');
    
    /** MySQL データベースのユーザー名 */
    define('DB_USER', 'wp_user');
    
    /** MySQL データベースのパスワード */
    define('DB_PASSWORD', 'your_password');

     

    このあとは再び引用。(書式改変)

     

     

    以下引用—————————————-

    WordPress用のApacheバーチャルホスト設定

    既存のファイルをコピーして新しいサイトの設定ファイルを作る

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/wordpress.conf

     

    wordpress.confの変更

    DocumentRootを/var/www/html/wordpressに変更する。

    /etc/apache2/sites-available/wordpress.confを編集。

    <VirtualHost *:80>
            # ドメインがある場合は設定する
            #ServerName www.example.com
    
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html/wordpress
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

     

    設定ファイルのチェック
    Syntax OKの出力を確認

    sudo apache2ctl configtest
    (out)Syntax OK

     

    デフォルトのサイトを無効化し、Wordpressのサイトを有効化

    sudo a2dissite 000-default
    sudo a2ensite wordpress
    sudo systemctl restart apache2

    引用終わり——————————–

     

     

    これで、localhost:80にアクセスしてみましょう。

     

    ページが表示されればオーケー!

     

    全行程終了

    これで僕は動きました。

     

    わかりにくいところがあったらごめんなさい。

     

    ご意見のある方はお問い合わせいただくと嬉しいです。

     

     

    参考にしたサイト

    (1) Ubuntu 16.04 LTSへWordPressをインストール

    (2) Ubuntu18.04 LTSにsysv-rc-confを入れる方法

    (3) 【MySQL, 開発環境】MySQLのインストールと初期設定

    (4) ubuntu 14.04LTS wordpress インストール

    (5) ubuntuにおけるapache2のAH00558エラーを解決する。

    (6) (98)Address already in use: と出てapacheが再起動できない場合の対策

    (7) lsofコマンド入門

    (8) localhost のみのアクセスを許可する