こんにちは、のすけです。
KUSANAGIを利用する理由として、今まで利用していたサーバーが遅いので
変えたいという動機が多いかと思います。
しかしながら、前回紹介して方法だと、WordPressをKUSANAGIに移行する場合
既存のメディアライブラリの画像などが上手く認識されないなどの問題が出てきました。
他の方法を模索したところ、別の手法を見つけました。
ConoHaオブジェクトストレージをマウントしてWordPressでのメディア保存先にする | サイト制作覚書
ただ、こちらの手法ですとディスクのマウントに失敗する事が多いため
あれこれと試し、最適な方法を見つけました。
まず、手順通り cloudfuseを入れます。
cloudfuseを入れる
yum -y install \ libcurl libcurl-devel \ fuse* fuse fuse-devel fuse-libs \ libxml2 libxml2-devel openssl-devel \ gcc gcc-c++ make git curl git clone https://github.com/redbo/cloudfuse.git
cloudfuseというディレクトリができています。
cd cloudfuse .configure
jsonのエラーが出たのでjson-c-develをインストール
yum -y install json-c-devel .configure make make install cd ../ rm -rf cloudfuse
ホームディレクトリ以下に .cloudfuse というテキストファイルを作成する
cd nano .cloudfuse
内容
username=APIユーザ名 tenant=テナント名 password=APIパスワード authurl=https://identity.tyo2.conoha.io/v2.0 (Identity ServiceのURL) verify_ssl=True
Ctl(controlY)+X Y Enter
で保存します。
マウントテスト
cloudfuseを使ってマウントテストします。とりあえず /mntにマウントします。
cloudfuse /mnt df -h
大丈夫なようなら次に進みます。もし問題がある場合は「.cloudfuse」の設置値に問題があるので修正します。
自動マウント
それでは次に重要な自動マウント設定をやります。
私はここの検証にかなりの時間を使ってしまった。
最初は手順通り /etc/fstab を使って設定したのですがうまく自動マウントされなくてハマってしまいました。
その他、crontabの@rebootで、再起動後のスクリプトでcloudfuseコマンドを打ったりしたのですが、特定のユーザアカウントでは参照できるが
別のアカウントではドライブが参照できないなど、色々と罠に合いました。
結果的に、最初の「/etc/fstab」に設定を入れるのが最適だと判断しました。
ダメだった方法(crontab)
crontabの起動時に一度だけ実行される設定を追加してみました。
crontabに以下を追加
crontab -e
以下を最後の行に追記(xxxxxxのところはご自分のConohaAPIの設定値を入れてください)
@reboot /usr/local/bin/cloudfuse -o nonempty -o username=gncuxxxxxxx,tenant=gnctxxxxxxxx,password=xxxxxxxxx,authurl=https://identity.tyo2.conoha.io/v2.0,verify_ssl=True /home/kusanagi/rsel_terakoya/DocumentRoot/wp-content/uploads
結果、これでは特定のユーザしかディスクが参照できずダメでした。mountのオプション指定でなんとかなるのかもしれませんが、kusanagi
やnginxのユーザのアクセス権など混乱するので、結果的に諦めました。
/etc/fstabとは
OSを起動したときに、この/etc/fstabファイルが参照されます。そうするとそこに書かれている設定値でファイルシステムをマウントします。
例:
# cat /etc/fstab /dev/hda1 / ext2 defaults 1 1
・1列目:デバイスファイル名
・2列目:マウント場所
・3列目:ファイルシステムの種類(ext2,ext3など)
・4列目:オプション
・5列目:dumpでバックアップするかしないか。(0 or 1) ext2やext3は1を指定する。
・6列目:システム起動時にファイルシステムチェック(fsckチェック)する順番を指定 (0,1,2) 0の場合はチェックしない 。ルートファイルシステムは1にしないといけない。
cloudfuseを/etc/fstabに設定数する
という事で /ect/fstabを使っていきました
# cd /home/kusanagi/( kusanagi_provision_name )/DocumentRoot/wp-content/ kusanagi_provision_nameにはKUSANAGIをセットアップ下際のプロジビジョン名を入れます
次にupulodsに変わるマウントポイントとなるディレクトリを作ります。(ex: cos)
# mkdir cos # vi /ect/fstab
一番下の行に次を追加します
/usr/local/bin/cloudfuse /home/kusanagi/( kusanagi_provision_name )/DocumentRoot/wp-content/cos fuse username=gncuxxxxxxxx,tenant=gnctxxxxxxxx,password=xxxxxxxxx,authurl=https://identity.tyo2.conoha.io/v2.0,verify_ssl=True,auto,_netdev,defaults,umask=001,allow_other 0 0
説明:cloudfuseでcosをマウントします。
usernameやtenant,passwoed,authurl, verify_sslは.configureと一緒ですね.
あとは、autoでmount -aで自動マウントするように。_netdevでネットワーク接続語にマウントを実行するオプションを指定
重要なのは,umaskで001を指定する事で,chmodの776と同じくなります。003でも良いかもしれません。
設定したら、うまくいくか確認します。
mount -a
何も表示されなければokです。
dfコマンドで、マウントを確認します。
df -h
よければ再起動して、テストします。
reboot
再起動後、ログインしてdfで再度確認します。
df -h
こんな感じでマウントされて入ればOKです。
WordPressのメディアの参照先を変える
このままでは、「uploads」を参照してしまうので、作成した「cos」を参照するように変更する必要があります。
管理画面にログインし、URLを「/wp-admin」
から
「/wp-admin/options.php」に移動します。
するとWordPressのオプション設定画面にいくので
以下の設定を入れます。
WP options設定
upload_path wp-content/cos
upload_url_path https://object-storage.tyo2.conoha.io/v1/nc_(テナントID)
※upload_url_pathについては環境によって違うかもしれません。Cyberduckにアップロードしたファイルを選択して右クリックした際に、「URLをコピー」をクリックして取得したURLの最後のファイル名を除いたURLを設定します。
おまけ Cyberduckにアップしたファイルが参照できない場合
自分のPCのconoha-ojsをインストールします。
GitHub - hironobu-s/conoha-ojs: CLI-tool for ConoHa Object Storage
インストール後、認証して
conoha-ojs auth -u "gncuxxxxx" -p "xxxx" -t "xxxxxxx" -a "https://identity.tyo2.conoha.io/v2.0"
公開したいディレクトリを公開設定します
例:2017と2018を公開させる
conoha-ojs post -r ".r:*" 2017 conoha-ojs post -r ".r:*" 2018