UMINサーバー に WordPress を導入する

以前(数年前)、UMINサーバーへのMySQL導入について記事にしたことがあったのですが、色々いじっていたら動かなくなってしまい、しばらく放置していました。

これまで、UMINサーバーへWordPressを導入することは度々あり、現在ここ以外に3つのWordPressサイトを立ち上げています。これまでの内容も踏まえて覚書として記録しておきます。この記事を参考にされる場合は、あくまで自己責任でお願いいたします。

SSHで接続

(Macなら)TerminalでSSH接続。Windowsであれば TeraTerm[1]株式会社インプレス. 窓の杜. 窓の杜. Accessed February 21, 2021. https://forest.watch.impress.co.jp/library/software/utf8teraterm/やWindows Terminal[2]ついに完成「Windows Terminal」の機能と使い方まとめ. @IT. Accessed February 21, 2021. https://www.atmarkit.co.jp/ait/articles/2005/28/news018.htmlを使用してください。Linuxの基礎コマンドは、こちら[3]dotinstall. 【旧版】UNIXコマンド入門 [一般ユーザー編] (全24回). ドットインストール. Accessed February 21, 2021. https://dotinstall.com/lessons/basic_unix_v2が動画で解説してくれて丁寧です。

ssh {account}@plaza.umin.ac.jp

{account}は各自のアカウントIDを入力して下さい。

{account}@plaza.umin.ac.jp's password:

と尋ねられるので、開設通知書にかかれているパスワードを入力。

Last login: Wed Oct 14 04:16:26 2020 from 114.171.105.111
Code language: CSS (css)

とログインできます。

.htaccess、.my.cnfの作成

/home/{account}/ 直下に .htaccess を作成。ローカルでエディタソフトで.htaccessを作成して、アップロードする方法もありますが、今回は vim で統一します。vimの使い方はこちら[4]dotinstall. vim入門 (全18回). ドットインストール. Accessed February 21, 2021. https://dotinstall.com/lessons/basic_vimの動画が丁寧でわかりやすいです。

もしくは、ターミナル上で、

vimtutor

と入力してみてください。

.htaccessの作成

cd /home/{account}/ touch .htaccess vim .htaccess

i を押して、インサートモードへ。下記を入力します。

# .htaccess php_value mysql.default_port {port} php_value mysql.default_socket /home/{account}/tmp/mysql.sock
Code language: PHP (php)

{port} は、下記を参考[5]ホームページサービス関連FAQ | UMIN FAQ. Accessed February 21, 2021. https://www.umin.ac.jp/faq/hp/にしながら1025番以降で現在使われていないポート番号を入力してください。

(追記 2022/06/01)ポート番号は 1025番以降、65535番以内で指定して下さい。

入力が終わったら、Esc でインサートモードを終了し、:wq を入力して保存・終了してください。

PLAZAサーバは、ユーザー側でデータベースをインストールして利用することができます。但し、RPM等の管理者権限を必要とする方法でのインストールはできませんので、 データベースをソースファイルからコンパイルしていただくことになります。 又、標準ポート(例:MySQLの場合は3306番)はUMIN側で予約しておりますので、 ポート番号1025番以降で空いているポートを割り当ててご利用下さい。

【コマンド】 netstat -nat | grep LISTEN | awk ‘{print $4}’

使用中のポート番号をご確認いただけます。

https://www.umin.ac.jp/faq/hp/

.my.cnfの作成

/home/{account}/ 直下に .my.cnf を作成。

# /home/{account}/ touch .my.cnf vim .my.cnf
Code language: PHP (php)
# .my.cnf [client] port={port} socket= /home/{account}/tmp/mysql.sock [mysqld] explicit_defaults_for_timestamp = 1 port={port} socket= /home/{account}/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M pid-file=/home/{account}/tmp/mysql.pid socket = /home/{account}/tmp/mysql.sock datadir= /home/{account}/tmp/mysql_data/ skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci [mysqldump] quick [mysqld_safe] log-error=/home/{account}/tmp/mysql_data/log/mysqld.log pid-file=/home/{account}/tmp/mysql_data/mysqld/mysqld.pid
Code language: PHP (php)

[mysqld] の explicit_defaults_for_timestamp = 1 はMySQL 5.7 以降は入力しておいたほうが良さそうです(入れておかないと–initialize-insecureの際にエラーがでます。)。

datadirの設置

ここで記載している/home/{account}/tmp/mysql_data/ のフォルダを作成しておきます。

# /home/{account}/ mkdir tmp mkdir tmp/mysql_data
Code language: PHP (php)

/home/{account}/tmp/mysql_data/の中には何もデータを入れないようにしておいてください。

boost の準備

MySQLをインストールする際にboostが必要になるので設置。

今回は、/home/{account}/public_html/usr/local/src というフォルダをつくって、そこにboostを置きます。

# /home/{account}/ cd public_html mkdir usr mkdir usr/local mkdir usr/local/src cd usr/local/src
Code language: PHP (php)

/home/{account}/public_html/usr/local/src で、boostの解凍(boost 1.50.0)

(追記 2022/02/19) boostは1.59.0以上でないとエラーが出るようになりました。また、解凍の必要がなくなりました。

# /home/{account}/public_html/usr/local/src wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
Code language: PHP (php)

MySQLのソースインストール

最新版のMySQLだと cmake3 が必要と怒られてしまうので、今回はMySQL 5.7 を使用します。

(追記 2022/02/19) cmakeコードを少し変更しました。

# /home/{account}/public_html/usr/local/src wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26.tar.gz tar xvfz mysql-5.7.26.tar.gz cd mysql-5.7.26 mkdir build cd build cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/{account}/public_html/usr/local/src/boost_1_59_0.tar.gz -DCMAKE_INSTALL_PREFIX=/home/{account}/public_html/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make make install
Code language: PHP (php)

make と make install でそれぞれ 3o分〜1時間弱は時間がかかります。

MySQLの初期化

MySQL 5.7 から –initialize-insecure で初期化するようになったようです。

/home/{account}/public_html/usr/local/mysql/bin/mysqld --initialize-insecure

ここで

[Warning]TIMESTAMP with implicit DEFAULT value is deprecated.Please use --explicit_defaults_for_timestamp server option(see documentation for more details).
Code language: CSS (css)

のようなエラー表示が出る場合は、.my.cnf に [mysqld] explicit_defaults_for_timestamp = 1 が記載されているか確認してください[6]MAMPのMySQLでTIMESTAMPのWarningエラーが出るのを解消する方法 | てらこや.work. Published January 1, 2019. Accessed February 21, 2021. … Continue reading

[ERROR] --initialize specified but the data directory has files in it. Aborting.
Code language: CSS (css)

のようなエラー表示が出る場合は、

/home/{account}/tmp/mysql_data/ の中が空になっていることを確認してください。

(追記: 2022/06/01)

[Warning] option 'port': unsigned value {port} adjusted to 65535
Code language: JavaScript (javascript)

と表示される場合。ポート番号が正しく設定されていません。ポート番号は 1025番以降、65535番以内で指定して下さい。.htaccsess と .my.cnf のポート番号記載を変更してから次( log フォルダとmysqld.logファイル作成→MySQL起動)に進むようにしてください。

問題なければ下記のような表示が出ます。

2020-10-13T08:52:01.376346Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000) 2020-10-13T08:52:01.376437Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000) 2020-10-13T08:52:01.572774Z 0 [Warning] InnoDB: New log files created, LSN=45790 2020-10-13T08:52:01.598074Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2020-10-13T08:52:01.651137Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5c35a8ff-0d31-11eb-8873-f48e38c521d8. 2020-10-13T08:52:01.651484Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed’ cannot be opened. 2020-10-13T08:52:01.657115Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
Code language: JavaScript (javascript)

MySQL サーバーの起動

(2022/02/19追記)ここで /home/{account}/tmp/mysql_data/ フォルダに log フォルダとmysqld.logファイルを作っておきましょう

mkdir /home/{account}/tmp/mysql_data/log/ touch /home/{account}/tmp/mysql_data/log/mysqld.log

mysql.server startの際に”/home/{account}/tmp/mysql_data/log/mysqld.log: そのようなファイルやディレクトリはありません”とエラーが出ることがあります。

/home/{account}/public_html/usr/local/mysql/support-files/mysql.server start

と入力すると

Starting MySQL. SUCCESS!

と表示されれば起動は成功です。

/home/{account}/public_html/usr/local/mysql/bin/mysql -u root -p

パスワードを求められますが、初期化に成功していれば、そのままエンターキーで先に進めることができます。次回以降はパスワードの設定が必要になるため、パスワードを設定しておきます。

set password='{password}';
Code language: JavaScript (javascript)

{password}に任意のパスワードを入力してください。英語、数字、記号がそれぞれ含まれていないとエラーで返ってくることがあるため、注意してください。

一度 quit と入力して、MySQLを終了。その後、初期設定を行います。

/home/{account}/public_html/usr/local/mysql/bin/mysql_secure_installation

基礎医学教育研究会ノート さんの記事を参照[7]UMIN に wordpress でホームページを立ち上げる(3)MySQL の初期設定. 基礎医学教育研究会ノート. Accessed February 21, 2021. … Continue reading

  • VALIDATE PASSWORD plugin? → yes
  • Change the password for root ? → no
  • Remove anonymous users? → yes
  • Disallow root login remotely? → yes
  • Remove test database and access to it? → yes
  • Reload privilege tables now? → yes
Success. All done!

データベースの作成

再度MySQLを起動します。

/home/{account}/public_html/usr/local/mysql/bin/mysql -u root -p

ここで先程指定したパスワードを入力。(パスワードを忘れてしまったら、/home/{account}/tmp/mysql_data/ をもう一度空にしてから、再度初期化から手順を進めてください。)

# mysql> create database {database_name}; create user '{user_name}'@'localhost' identified by '{password_2}';
Code language: PHP (php)

{database_name}、{user_name}、{password_2}はそれぞれ任意のものを入力してください。{user_name}に権限を渡しておきます。

grant all privileges on {database_name}.* to '{user_name}'@'localhost';
Code language: JavaScript (javascript)

Word Press の設置

/home/{account}/public_html/に移動し、WordPressをインストールします。

(追記 2022/06/01) 解凍後は、解凍前のファイルは削除しておきましょう `rm latest.tar.gz`

cd /home/{account}/public_html/ wget http://wordpress.org/latest.tar.gz tar zxvf latest.tar.gz rm latest.tar.gz
Code language: JavaScript (javascript)

hostnameを確認し、メモしておいてください。({hostname}とします)

hostname -f

また、ここで実際のホームページを

https://plaza.umin.ac.jp/{account}/wordpress/

ではなく

https://plaza.umin.ac.jp/{account}/wp/

などにしたければ

# /home/{account}/public_html/ mv wordpress wp
Code language: PHP (php)

と変更します。

https://plaza.umin.ac.jp/{account}/

にしたければ、

# /home/{account}/public_html/ mv wordpress/* ./
Code language: PHP (php)

として、https://plaza.umin.ac.jp/{account}/ 直下にフォルダ内のディレクトリをすべて移動します。(単純にhttps://plaza.umin.ac.jp/{account}/にアクセスすればWordpressが表示されるようにしたければ、リダイレクトを設定するだけでも良いかもしれません。)

以下は、/home/{account}/public_html/wordpressのままで説明します。wp-config.phpを作成。

# /home/{account}/public_html/wordpress cp ./wp-config-sample.php ./wp-config.php vim wp-config.php
Code language: PHP (php)

i を押してインサートモードへ。wp-config.php の記載内容も、基礎医学教育研究会ノートさんの記事が参考になります[8]UMIN に wordpress でホームページを立ち上げる(5)wordpress のインストール. 基礎医学教育研究会ノート. Accessed February 21, 2021. … Continue reading

// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', '{database_name}'); /** MySQL database username */ define('DB_USER', '{user_name}'); /** MySQL database password */ define('DB_PASSWORD', '{password_2}'); /** MySQL hostname */ define('DB_HOST', '[hostname]:[port]');
Code language: PHP (php)

と記載します。以下は追記すると、あとの設定が楽になりますが、なくても大丈夫です。

define('FTP_HOST', 'plaza.umin.ac.jp'); define('FTP_USER', '{account}'); define('WPLANG','ja');
Code language: JavaScript (javascript)

ページ下部にセキュリティキーを入力する画面が出てきます。 https://api.wordpress.org/secret-key/1.1/salt/ にアクセスして出てきた内容を上書きしてください[9]wp-config.php の編集. サポートフォーラム. Published November 2, 2018. Accessed February 21, 2021. https://ja.wordpress.org/support/article/editing-wp-config-php/

入力が完了したら Esc を押してインサートモードを終了。 :wq で保存、終了してください。

ここまでくると、ブラウザで、

https://plaza.umin.ac.jp/{account}/wordpress/

にアクセスすると、設定画面が開きます。あとは必要事項を入力して起動して下さい。

(追記 2022/06/01)

この段階で「データベース接続の確立エラー」(Error Establishing a Database Connection)と表示されるようであれば、

  1. wp-config.php の {database_name}、{user_name}、{password_2}、[hostname]:[port]、が間違えていないか
  2. MySQL の 「grant all privileges on {database_name}.* to ‘{user_name}’@’localhost’;」が正しく行えているか

等を確認して下さい。

.htaccessの設定

/home/{account}/public_html/wordpress の場所に .htaccessを新しく設置します。

# /home/{account}/public_html/wordpress touch .htaccess vim .htaccess
Code language: PHP (php)
# .htaccess php_value mysql.default_port {port} php_value mysql.default_socket /home/{account}/tmp/my_mysql.sock# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Code language: PHP (php)

パーミッションの設定

WordPressのパーミッションの設定は、色々な記事があるため、詳細は省きます[10]WordPressの理想的なパーミッション設定は?権限を見直してセキュリティ強化しよう. WeberNote[ウェバーノート]. Accessed February 21, 2021. … Continue reading。ただ、wp-config.php を「400」や「600」にすると、記事が表示されない場合があるかもしれないので注意してください。今回は、ストレージに写真をアップロードできるように設定をします。

# /home/{account}/public_html/wordpress chmod -R 707 wp-content
Code language: PHP (php)

(追記 2022/06/01)

Word Pressのバージョン更新がうまく行かない場合は、下記のパーミッションも設定して下さい。

# /home/{account}/public_html/wordpress chmod -R 707 wp-login.php wp-cron.php wp-cron.php wp-load.php wp-trackback.php wp-config-sample.php wp-settings.php wp-mail.php wp-settings.php wp-signup.php wp-links-opml.php
Code language: PHP (php)

Crontabの設定

UMINサーバーのメンテナンス後にMySQLが再起動しないことがあります。そのため、/home/{account}/etc/にcron.txt を作成し、crontabに設定しておきます。

mkdir /home/{account}/etc/ cd /home/{account}/etc/ touch cron.txt vim cron.txt
# cron.txt @reboot /home/{account}/public_html/usr/local/mysql/support-files/mysql.server start @reboot /home/{account}/public_html/usr/local/mysql/bin/mysqld_safe &
Code language: PHP (php)

crontab へ設定。

crontab /home/{account}/etc/cron.txt

(追記 2022/02/19) cron.txt の最後に改行を入れて下さい。していない場合は、ここでエラーが出ます。

私が管理しているWordPressは、今の所この設定でうまく行っているようです。もし、UMINサーバーのメンテナンス後に「データベースに接続できません」といったエラーが出る場合は、手動で、

/home/{account}/public_html/usr/local/mysql/support-files/mysql.server start

もしくは、

/home/{account}/public_html/usr/local/mysql/bin/mysqld_safe &

を試してみてください。

リダイレクトの設定

https://plaza.umin.ac.jp/{account}/ 直下にwordpressを設定している方はこのページは読み飛ばしてください。https://plaza.umin.ac.jp/{account}/wordpress/直下にWordpressを入れている方が対象です。

https://plaza.umin.ac.jp/{account}/ にアクセスすると、 https://plaza.umin.ac.jp/{account}/wordpress/ に自動的にジャンプするようにリダイレクトを php で設定します。

# /home/{account}/public_html/ touch index.php vim index.php
Code language: PHP (php)

i を押して、インサートモードへ。index.php は以下のように設定します。

# index.php <?php header('Location:https://plaza.umin.ac.jp/{account}/wordpress/'); exit; ?>
Code language: PHP (php)

Esc を押して、インサートモードを終了。 :wq でvimを保存&終了。

これで、https://plaza.umin.ac.jp/{account}/ にアクセスすると、自動的にhttps://plaza.umin.ac.jp/{account}/index.php にジャンブし、その後リダイレクトで https://plaza.umin.ac.jp/{account}/wordpress/ にジャンプするようになりました。

(追記2022.06.06) phpmyadminの設定

こちらは後日記載をしようと思います。

言葉足らずのところもあると思いますが、参考になれば幸いです。この記事を参考にされる場合は、あくまで自己責任でお願いいたします。

References

References
1 株式会社インプレス. 窓の杜. 窓の杜. Accessed February 21, 2021. https://forest.watch.impress.co.jp/library/software/utf8teraterm/
2 ついに完成「Windows Terminal」の機能と使い方まとめ. @IT. Accessed February 21, 2021. https://www.atmarkit.co.jp/ait/articles/2005/28/news018.html
3 dotinstall. 【旧版】UNIXコマンド入門 [一般ユーザー編] (全24回). ドットインストール. Accessed February 21, 2021. https://dotinstall.com/lessons/basic_unix_v2
4 dotinstall. vim入門 (全18回). ドットインストール. Accessed February 21, 2021. https://dotinstall.com/lessons/basic_vim
5 ホームページサービス関連FAQ | UMIN FAQ. Accessed February 21, 2021. https://www.umin.ac.jp/faq/hp/
6 MAMPのMySQLでTIMESTAMPのWarningエラーが出るのを解消する方法 | てらこや.work. Published January 1, 2019. Accessed February 21, 2021. https://www.terakoya.work/mamp-mysql-timestamp-warning/
7 UMIN に wordpress でホームページを立ち上げる(3)MySQL の初期設定. 基礎医学教育研究会ノート. Accessed February 21, 2021. https://plaza.umin.ac.jp/kikkenlab/note/umin-wordpress-03/
8 UMIN に wordpress でホームページを立ち上げる(5)wordpress のインストール. 基礎医学教育研究会ノート. Accessed February 21, 2021. https://plaza.umin.ac.jp/kikkenlab/note/umin-wordpress-05/
9 wp-config.php の編集. サポートフォーラム. Published November 2, 2018. Accessed February 21, 2021. https://ja.wordpress.org/support/article/editing-wp-config-php/
10 WordPressの理想的なパーミッション設定は?権限を見直してセキュリティ強化しよう. WeberNote[ウェバーノート]. Accessed February 21, 2021. https://www.webernote.net/wordpress/wp-permission.html

「UMINサーバー に WordPress を導入する」への3件のフィードバック

  1. お世話になります。貴サイトのおかげで、無事にWordpressをインストールする事ができました。ありがとうござます!
    UMINのPHPがバージョンアップするようで、どのようにPHP8へと変更すれば良いのか思案しております。
    拡張子をphp8にする方法として、ver_chk.php8→PHP8.1.7と記載されていますが、よく理解できておりません。
    大変お手数ですが、UMINサーバーにおけるphp8へのバージョンアップ方法についてご教示いただければ幸いです。

    1. NT様、
      コメントいただきありがとうございました。
      基本的に .php のままでも php5 のまま動作するので、すぐに何か対処が必要というわけではございません。
      例えば、index.php を index.php8 に拡張子を変更すると、PHP8で動作するということですが、wordpressのフォルダ内の .php ファイルをすべて .php8 に変更するのは、あまり現実的ではありません。更には移行期間が終了時には、再度 .php8 を .php に戻す必要がありそうな気配もします。

      解決方法としては、こちらの方法(https://blog.heteml.jp/?p=5509 )を踏襲して、 .htaccess に AddHandler PHP8.1.7-script .php の1行を追記すれば解決するのではと思っています。バージョンアップ後に試してみようと思いますので、またご報告させてください。

      1. ご多忙のところ、PHPの解決方法についてご教示いただき、誠にありがとうございます。
        PHPの拡張子を変更するのは、少し現実的ではないように感じておりましたので、ご意見をお聞きでき大変参考になりました。
        いつも有益な情報を公開してくださり、重ねて感謝致します。
        バージョンアップ後に、また教えていただければ幸いです。

コメントする

メールアドレスが公開されることはありません。