以前(数年前)、UMINサーバーへのMySQL導入について記事にしたことがあったのですが、色々いじっていたら動かなくなってしまい、しばらく放置していました。
これまで、UMINサーバーへWordPressを導入することは度々あり、現在ここ以外に3つのWordPressサイトを立ち上げています。これまでの内容も踏まえて覚書として記録しておきます。この記事を参考にされる場合は、あくまで自己責任でお願いいたします。
SSHで接続
(Macなら)TerminalでSSH接続。Windowsであれば TeraTerm((株式会社インプレス. 窓の杜. 窓の杜. Accessed February 21, 2021. https://forest.watch.impress.co.jp/library/software/utf8teraterm/))やWindows Terminal((ついに完成「Windows Terminal」の機能と使い方まとめ. @IT. Accessed February 21, 2021. https://www.atmarkit.co.jp/ait/articles/2005/28/news018.html))を使用してください。Linuxの基礎コマンドは、こちら((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の使い方はこちら((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} は、下記を参考((ホームページサービス関連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}'
Code language: JavaScript (javascript)使用中のポート番号をご確認いただけます。
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 が記載されているか確認してください((MAMPのMySQLでTIMESTAMPのWarningエラーが出るのを解消する方法 | てらこや.work. Published January 1, 2019. Accessed February 21, 2021. https://www.terakoya.work/mamp-mysql-timestamp-warning/))。
[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
基礎医学教育研究会ノート さんの記事を参照(( UMIN に wordpress でホームページを立ち上げる(3)MySQL の初期設定. 基礎医学教育研究会ノート. Accessed February 21, 2021. https://plaza.umin.ac.jp/kikkenlab/note/umin-wordpress-03/ ))。
- VALIDATE PASSWORD plugin? → yes
(2023/5/25 追記) There are three levels of password validation policy → パスワードの複雑性に関する質問。個人的には1か2で良いかと思います
- 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 の記載内容も、基礎医学教育研究会ノートさんの記事が参考になります((UMIN に wordpress でホームページを立ち上げる(5)wordpress のインストール. 基礎医学教育研究会ノート. Accessed February 21, 2021. https://plaza.umin.ac.jp/kikkenlab/note/umin-wordpress-05/))。
// ** 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/ にアクセスして出てきた内容を上書きしてください((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)と表示されるようであれば、
- wp-config.php の {database_name}、{user_name}、{password_2}、[hostname]:[port]、が間違えていないか
- 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のパーミッションの設定は、色々な記事があるため、詳細は省きます((WordPressの理想的なパーミッション設定は?権限を見直してセキュリティ強化しよう. WeberNote[ウェバーノート]. Accessed February 21, 2021. https://www.webernote.net/wordpress/wp-permission.html))。ただ、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の設定
こちらは後日記載をしようと思います。
言葉足らずのところもあると思いますが、参考になれば幸いです。この記事を参考にされる場合は、あくまで自己責任でお願いいたします。
お世話になります。貴サイトのおかげで、無事にWordpressをインストールする事ができました。ありがとうござます!
UMINのPHPがバージョンアップするようで、どのようにPHP8へと変更すれば良いのか思案しております。
拡張子をphp8にする方法として、ver_chk.php8→PHP8.1.7と記載されていますが、よく理解できておりません。
大変お手数ですが、UMINサーバーにおけるphp8へのバージョンアップ方法についてご教示いただければ幸いです。
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行を追記すれば解決するのではと思っています。バージョンアップ後に試してみようと思いますので、またご報告させてください。
ご多忙のところ、PHPの解決方法についてご教示いただき、誠にありがとうございます。
PHPの拡張子を変更するのは、少し現実的ではないように感じておりましたので、ご意見をお聞きでき大変参考になりました。
いつも有益な情報を公開してくださり、重ねて感謝致します。
バージョンアップ後に、また教えていただければ幸いです。
途中から失礼します。
PHPの拡張子が変更になるなんて…と色々調べていて、やっぱりAddHandlerで乗り切るしかないかなぁと思っています。ハンドラ名はPHP8.1.7-scriptで良いのでしょうか? どうやったらハンドラ名が取得できるのかよく分からなくて…。
結果報告いただければ非常にうれしいです。どうぞよろしくお願いします。
MONI様、
コメントいただきありがとうございます。
結論としては、管理者の設定ファイル(php-fpm.d/www.conf、SSHやファイル転送ソフトでアクセスすると見ることができますがセキュリティ上ここではpathは書きません)で
security.limit_extensions = .php8
と設定されているため、AddHandlerも無効になってしまうようです。現状では10月まで待つのが良いのかもしれません。
お返事ありがとうございます。
AddHandler無効なんですね。となると、やるなら再インストールになってしまいますかねぇ。10月からは.phpが使えなくなって.php8に統一されるとかいう連絡が来そうで心配です (というか、今後もそんな対応でバージョンアップするつもりなんでしょうか…)
> 10月からは.phpが使えなくなって.php8に統一されるとかいう連絡が来そうで心配です
コーディネータ専用ページには「【2022/10/14】2023年10月以降は拡張子が「.php」、「.php8」のいずれのファイルもPHP8.1.7で実行されるように設定する予定となっていますが、詳細は未定です。」と書いてあるので、.phpはそのままPHP8.1.7に移行する話かと認識しています。おそらく、記載いただいたような心配はないかと思っています。
そんな情報ありましたっけ…と探したら、発見しました!
PHP 8.1.7での動作確認はlocalでほぼ出来ているので、座して待ちます。ありがとうございました。
boostのバージョンが上がって、boost_1_84_0があったので、それをつかったら、boostが見つからないというエラーが出ました。でも、解凍はされて、下記のディレクトリができていたので、試しに、
-DWITH_BOOST=/home/jp-cdc/public_html/usr/local/src/boost_1_84_0/boost
というオプションを使ったら、逆に勝手に1_59_0をダウンロードして次に進みました・・・。
怪我の功名ですが、共有したら、もしかしたら役に立つかもと思いました。
> boostのバージョンが上がって、boost_1_84_0があったので、それをつかったら、boostが見つからないというエラーが出ました。でも、解凍はされて、下記のディレクトリができていたので、試しに、
> -DWITH_BOOST=/home/jp-cdc/public_html/usr/local/src/boost_1_84_0/boost
> というオプションを使ったら、逆に勝手に1_59_0をダウンロードして次に進みました・・・。
> 怪我の功名ですが、共有したら、もしかしたら役に立つかもと思いました。
情報共有ありがとうございました。それからうまくいきそうでしょうか?
今回ブログには記載していないですが、もし、MySQLがうまく立ち上がらない場合は、
「wp-sqlite-db」 https://github.com/aaemnnosttv/wp-sqlite-db
を使う方法もありますので、うまく以下ない場合は調べてみられると良いかもしれません。