ubuntu18.04でwordpressをapache2で動作させるまで

じょるブログ

現役理系大学生による大学生に向けた情報サイト

WordPress インストール

ubuntu18.04でwordpressをapache2で動作させるまで

投稿日:

   

今までは研究室内の各種引継ぎ情報や機密情報などは研究室専用のWiki(Seesaa Wiki )に記載して共有していたのですが、機密情報を外部サービスに公開するのはあまり良くないと以前から話題になっていました。

そこで、研究室内からのみアクセスできるローカルサーバーをたてることになりました。

この記事では、ubuntuにWEBサーバー(apache2)を構築し、そこにwordpressを入れるまでの過程を備忘録として記載します。

今回ファイアウォール設定がされていたり、既にGitlabサーバーが起動していて80番ポートが使えなかったりと色々な問題が発生しましたが、これらの部分は読み飛ばしても構いません。

逆にすでに何らかのサーバー、サービスが起動している状態のパソコンにApacheを導入したい場合などは参考にしてみてください。

  

実行環境

  • Ubuntu 18.04 LTS (CUI環境)

  

  

下準備

パッケージの更新

まずは以下を実行

su - root //管理者権限を与える、以下のコマンドは全て管理者権限で行っている
apt-get update
apt-get upgrade

しかし、ここで

Temporary failure resolving ‘jp.archive.ubuntu.com’

というエラーがでる。 調べてみるとどうやらDNSに関する問題らしい。

そこで、DNSを Google Public DNS に変更してみる。

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

もう一度 “apt-get update” を実行するがうまくいかない。

ここでファイアウォール設定(ufw)がされていることに気づく。

一旦ファイアウォールを無効化する。

もう一度 “apt-get update” を実行すると上手くいった。

  

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

続いてサーバ起動時にApacheを自動起動させるためのツールをインストールする。

sudo apt-get install sysv-rc-conf

しかし、またここでエラー

E: Unable to locate package sysv-rc-conf

どうやらパッケージが存在しないらしい。こちらに関しても調べてみるとUbuntu17.04からapt-getでインストールすることができなくなっているとのこと
(今回自分が使用しているOSはUbuntu18.04)

よって、こちらのサイトを参考に以下のようにインストール

まずは、makeするためのツールと依存関係のライブラリーをインストール

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

sysv-rc-conf をダウンロード&インストール

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
make
make install

最後に動作確認

sysv-rc-conf

   

    

Mysql

まずは、インストール

apt install -y mysql-server

今回はローカルのみでしか使用しないので、セキュリティー設定は行わない

ちなみにセキュリティー設定を行いたい場合は以下のコマンドを実行する

mysql_secure_installation

次にワードプレスで使用するデータベースの設定を行う。

mysql -u root -p

ログインしたらまずはMySQLのパスワードを設定
※パスワードは大文字小文字を含む英字、数字、特殊文字の3つを含ませないとエラーが出る。

mysql> update user set authentication_string=password("パスワードを入力") where user='root';
mysql> flush privileges;

次にwordpress という名前のデータベースを作成

mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

一応確認してMySQLをログアウト

mysql> show databases;
mysql> exit;

サービスの自動起動を有効化

sysv-rc-conf mysqld on

   

Apache2

まずは Apache2 をインストール

apt install -y apache2

しかし、またまたエラーが出る

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
invoke-rc.d: initscript apache2, action "start" failed.
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           mqapache2-systemd.conf
   Active: failed (Result: exit-code) since Fri 2019-11-08 15:58:15 UTC; 10ms ago
  Process: 18243 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)

Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: 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
Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: no listening sockets available, shutting down
Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: AH00015: Unable to open logs
Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: Action 'start' failed.
Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: The Apache error log may have more information.
Nov 08 15:58:15 hrlb-gitlab systemd[1]: apache2.service: Control process exited, code=exited status=1
Nov 08 15:58:15 hrlb-gitlab systemd[1]: apache2.service: Failed with result 'exit-code'.
Nov 08 15:58:15 hrlb-gitlab systemd[1]: Failed to start The Apache HTTP Server.

インストールはできているようだが、apache2が起動していない
アパッチを再起動してみる

systemctl restart apache2

がやはり起動しない。
エラーメッセージを確認してみる

Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: 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

まずはこのエラーについて調べてみる。
こちらのサイトによると

このエラーは、 /etc/hosts にlocalhost以外に自分で設定したホスト名が、Apacheの設定ファイルに定義されていないために発生する。

https://mk-55.hatenablog.com/entry/2014/07/07/004510

とのことなので以下のコマンドを実行し、 Apacheの設定ファイルにホスト名 を記述する。

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

もう一度再起動してみるがダメ

次に2つ目のエラーメッセージを確認してみる

Nov 08 15:58:15 hrlb-gitlab apachectl[18243]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80

80番ポートがすでに使われているらしい

80番ポートを使用しているサービスを確認

netstat -lnp | grep :80
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      9770/unicorn worker
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      29053/nginx: master
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      29105/sidekiq 5.2.7
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      29053/nginx: master

nginx? このパソコンでGitlabを稼働していたためその影響かと思われる

この 80番ポート を停止してしまえばいいが、Gitlabが停止してしまう可能性が高そう

ということで、アパッチのポート番号を変更することに

アパッチのポート設定は /etc/apache2/ports.conf に記載されているのでとりあえずこのファイルを編集してみる。

vi /etc/apache2/ports.conf

ファイル内容は以下の通り

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Listen 80 と記載されているところがポート番号なのでこの数字を81に変更

もう一度アパッチを再起動してステータス確認

systemctl restart apache2
systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           mqapache2-systemd.conf
   Active: active (running) since Fri 2019-11-08 16:26:25 UTC; 34min ago
  Process: 22083 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 22096 (apache2)
    Tasks: 55 (limit: 4322)
   CGroup: /system.slice/apache2.service
           tq22096 /usr/sbin/apache2 -k start
           tq22098 /usr/sbin/apache2 -k start
           mq22099 /usr/sbin/apache2 -k start

Nov 08 16:26:25 hrlb-gitlab systemd[1]: Starting The Apache HTTP Server...
Nov 08 16:26:25 hrlb-gitlab systemd[1]: Started The Apache HTTP Server.

動いた

サービスの自動起動を有効化

sudo sysv-rc-conf apache2 on

  

  

WordPress

PHP のインストール

phpとphpのモジュールをインストール

apt install -y php libapache2-mod-php php-mysql  php-mbstring php-curl php-gd

  

Apache設定

アパッチの設定ファイルを編集するので設定ファイルのバックアップを行う

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

アパッチの設定ファイルを編集

vi /etc/apache2/apache2.conf

以下の文を追記

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

追記する場所はどこでもいいが、自分はここにした。

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

#<Directory /srv/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

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

編集した設定ファイルに問題がないか確認

# apache2ctl configtest
Syntax OK

アパッチのモジュールを有効化 し、再起動

a2enmod rewrite
systemctl restart apache2

   

WordPressのインストール

まず、コマンド操作のみでワードプレスを導入できるように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

ワードプレスをダウンロード

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

権限変更

mkdir /var/www/html/wordpress/wp-content/upgrade
chown -R [ログインユーザ名]:www-data /var/www/html/wordpress
chmod g+w /var/www/html/wordpress/wp-content
chmod -R g+w /var/www/html/wordpress/wp-content/themes
chmod -R g+w /var/www/html/wordpress/wp-content/plugins
chmod -R g+w /var/www/html/wordpress/wp-content/upgrade
chmod -R g+w /var/www/html/wordpress/wp-content/languages

ワードプレスの設定ファイル (wp-config.php)を作成

wp core config --dbname=wordpress --dbuser=root --dbpass=<設定したMySQLのパスワード> --dbhost=localhost --path=/var/www/html/wordpress --allow-root

以下のコマンドでwp-config.phpを開き、

vi /var/www/html/wordpress/wp-config.php

以下を追記( これがないとプラグイン更新時に問題が発生するらしい )

define('FS_METHOD', 'direct');

サイト有効化のための設定ファイル作成・編集

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

DocumentRootの行を以下のように修正

DocumentRoot /var/www/html/
        ↓
DocumentRoot /var/www/html/wordpress

また、自分の場合は前述のとおり80番ポートは既にGitlabサーバーで使用しているので、

<VirtualHost *:80>
    ↓
<VirtualHost *:81>

と変更

設定ファイルのチェック を行い、

# apache2ctl configtest
Syntax OK

デフォルトの000-defaultファイルの設定を無効化、wordpressファイルの設定を有効化し、アパッチを再起動

a2dissite 000-default
a2ensite wordpress
systemctl restart apache2

  

     

動作確認

ローカルネットワークに接続している他のパソコンから

192.168.xxx.xxx:81

にアクセスしてみると

データベース接続確立エラー

との表示が

自分の場合は Mysqlの認証プラグインに問題があり、この認証プラグインを変更したら正常に動作しました。

もしデータベース接続確立エラーとなってしまった場合は以下の記事を参考に修正してください。

https://jorublog.site/wordpress-database-connection-error/

  

    

全然すんなりと導入できず、エラーばかりであきらめかけましたが何とか動作させることができました。丸一日かかってしまいましたが、Apacheやwordpressに関して少し詳しくなった気がする。もう少し Apache について勉強します。

   

参考サイト

google ads




google ads




-WordPress, インストール

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ラズベリーパイをディスプレイに接続せずSSH設定する方法

    一般的にラズベリーパイをパソコンからSSHで操作しようとした場合は、ラズパイにマウス、キーボード、ディスプレイを接続して、一度ラズパイ上でwi-fiの設定を行う必要があります。 しかし、実家に …

ラズベリーパイでICカードのデータを読み取る

今回はSONYのICカードリーダー( RC-S320 )を使用して、suicaなどのICカードを読み取り、 idm(ICカードの固有番号、ICタグ)や残高、交通履歴などを取得する方法についてご紹介しま …

[WordPress]データベース接続確立エラー解決のための4つの対処法

  ubuntuにApache2、WordPressを導入し動作確認を行った際、データベース接続エラーとなってしまった。この記事ではデータベース接続確立エラーとなってしまった場合に行うべき対処法を4つ …

簡単にRasberryPi Zero WH へ node.js, npmを入れる方法

  はじめに  スマートリモコンでPS4を操作するためにはps4-wakerというパッケージが必要であり、これをインストールするにはnode.jsのパッケージ管理ツールであるnpmをインストールする必 …

簡単!仮想マシンVMwareでWindowsにLinux(ubuntu)をインストールする方法を徹底解説!

私はWindowsパソコンを使っているのですが、WindowsとLinuxではコマンドが違うため、使いづらいです。Gitを入れることで一部LinuxコマンドがWindowsのコマンドプロンプトで使用で …