さくらvpsでrebootするとsshログインできない

さくらvps(kusanagi)でreboot

wordpressを動かす為、さくらvpsを借りてkusanagiを入れて運用していたサーバーのcpuが上がり重くなっていたので、コンソール内で

systemctl reboot

と軽率にコマンドを打った時のことです。

外に出されたので、再度sshコマンドで入ろうとするとログインができません。

ならばさくらのvpsコントロールパネル(管理画面)からなら入れるかと、管理画面のコンソールからログインを試みましたがこれもダメでした。

「これはやばいかもしれない・・」

かなり焦りました。

コンソールにも強制再起動という項目がありましたが、それを押すと

「プロセスが利用中のファイルが破損する可能性があります。」

という怖い警告ダイアログが出るので、ひとまず自重しました。

「まだ起動していないのではないか、、時間が解決してくれるかも。」

と身勝手な期待を抱き、とりあえず夕食を買いに行くことに。

解決はコンソールから再起動

夕食を食べながら、再度sshでログインを試みますが、やはりログインできませんでした。

時間は解決してくれませんでした。

私的な実験サーバーなら良いのですが、お客様のサイトが動いているサーバーでしたので、これ以上時間をかける訳にも行かず、一か八かのコンソールから強制再起動を実施しました!

するとあっさり起動に成功し、sshログインもできるようになりました。

何か不具合が併発している様子もなく、停止前のcpu負荷が高い状態も解消されました。

まとめ

結果オーライでしたが、さくらvpsでsshログイン状態でrebootをかけると上記のように再度sshログインできなくなるようです。

参考にして頂けますと幸いです。

また、ワードプレスやkusanagiを使ったホームページ制作をお考えであればご相談を頂ければと思います。

※あくまで私に起こったことなので、同様の結果になるとは限りませんので再起動実施は自己責任でお願いします。

楽器製造販売事業者様向けECサイト制作

千葉県でオーボエリードの製造販売を営まれている「長谷部オーボエリード」様向けにショッピングサイトを構築させて頂きました。

ECサイトリニューアル

元々はワードプレスとワードプレスプラグイン「WooCommerce」を使ってのサイトでしたが、お客様の入力がし辛いということで、国産のECサイト構築CMS「EC-CUBE」を使ってリニューアルをすることになりました。

課題点

今回はリニューアルということで、特に以下の点を実現させることを重要視しました。
・リピーターのお客様に住所など同じことを何度も入力しなくてもよくする
・注文手続き入力をわかりやすくする
・3本セットの中身の組み合わせを購入後に聞いていたのを、購入時に選べるようにする

という点を改善する必要があり、EC-CUBE3に備わっている機能により実現させることが出来ました。

機能をカスタマイズした点

以下の点をEC-CUBE3より機能カスタマイズしています。

・購入は個人がされることがほとんどで、購入と会員登録フォームにある「会社名」項目が不要である為、取り外しました。
会員情報編集など、影響のある部分もすべて修正しました。


・トップページのスライドショーは、jqueryのライブラリslickだと、画像がちらつく現象が見られる為、swiperに置き換えました。

上記カスタマイズにより、商品を購入されるお客様に無駄な項目を入力して頂く必要がなくなりました。

また、トップページのスライドショーも、途中でちらつくことがなく、すっきり綺麗にスライドするようになりました。

高麗人参サプリメント販売サイト作成

高麗人参サプリメントを販売されている「高麗人参石窟庵」様向けにECサイトを制作させて頂きました。

制作やカスタマイズをした点

以前のサイトをクローズされたので、新規構築することになりました。
ECキューブに元から備わっているスライダーはslickというjqueryライブラリを使っていますが、スライドすると画像がちらつく事象がありましたので、swiperというライブラリを使って実装し直しました。
複数の画像で安定したスライドショー を実現しています。
その他、サーバサイドのプログラムは特にカスタマイズしていません。

会員機能は不要ということでしたので、プラグインを使って会員機能を非表示にしました。

使用したEC-CUBEは3系です。

EC-CUBE制作サイト「高麗人参石窟庵」

http://k-ninjin.com/

laravelのphp内で翻訳を取得する

laravel5で、bladeテンプレート側ではなくphp側で言語ファイルより翻訳を取得したいときがあると思いますが、そのような場合は以下のように記述できます。

$title = \Lang::get('site.title');

上記のエイリアスは以下になります。

$title = trans('site.title');

以下を参考にさせていただきました。
https://readouble.com/laravel/5.dev/ja/localization.html

laravelのトレイト(trait)

laravelを使う中で色々調べていると「トレイト」という言葉が出てきますが、これはPHP5.4以降でサポートされている多重継承の仕組みで、laravelの中でもよく使われています。

例えば、以下はlaravelのapp/Http/Controllers/Auth/の配下に最初から入っているRegisterController.phpになります。(中身は省略しています)

use Illuminate\Foundation\Auth\RegistersUsers;

で呼び出して

use RegistersUsers;

で継承しています。

extends ControllerでまずControllerを継承し、RegistersUsersも継承していることになります。

RegistersUsersも継承しているので、RegistersUsers内のregisterメソッドをオーバーライドして中身を上書きすることもできます。

 

laravel5でmodelのディレクトリを変更する

laravelは初期状態ではapp/配下にモデルを配置するディレクトリがありません。
app/配下にModelsを作成することになると思いますが、すでにapp直下にモデルを作成していた場合、Models直下に移動させるだけでは動きません。
例えば、app/配下にすでにusersのモデルUser.phpを作成していた場合で、User.phpを移動してModels/User.phpとした場合です。

以下のようにUser.phpまでのパスを書き換える必要があります。

app/Models/User.php

Userモデルを呼び出しているコントローラ

※ここではapp/Http/Controllers/Auth/RegisterController.php

config/auth.php

該当箇所を全て書き換えれば動作するようになります。

laravel5.7を動かした時のphpインストール

laravel5.7を動かす時にphpを入れた時のyumコマンドになります。

webサーバーはnginxを使いましたので、php-fpmもインストールしています。

yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-xml php-zip1 php-mysqlnd php-pecl-mysql php-fpm php-json

laravelを入れたけどうまく動いてくれない時は1度phpを

yum remove php-*

で消して、再度入れ直してみてもいいかもしれません。

php artisan migrateでcould not find driverエラー

laravel5.7でmigrationを作成しようとして

$ php artisan migrate

以下のエラーが出ました。

Illuminate\Database\QueryException : could not find driver (SQL: select * from information_schema.tables where table_schema = esnotes and table_name = migrations)

設定ファイルの見直し

以下のファイルにデータベース接続情報が正しく記載されているか確認してください。

.env
config/database.php

環境の見直し

それでも解決しない場合は、mysqlに接続するのに必要なphpのプラグインを再度入れ直します。

phpのバージョンは7.2を使っていますので、以下のコマンドで必要なプラグインをインストールしました。

$ yum -y install --enablerepo=remi,remi-php72 php-mysqlnd

再度migrateを実行します。

無事実行完了しました。