Laravel 5.5 でデータベースdumpをお手軽にとったりもどしたり
- 2017/11/27
- murave
- Laravel
- PostgreSQL
muraveです。LTSを使いたい人なのでLaravelのバージョンが5.1から5.5にジャンプアップしました。
その際、いままで使っていたデータベースバックアップのプラグインが使えなくなりました。
データベースdumpをお手軽にとったりもどしたりしたかっただけだったんだけど、重厚なバックアップ用パッケージが見つかった。これはこれで入れとくかぁ。
— murave (@murave) 2017年11月24日
ということで
https://github.com/spatie/laravel-backup
を導入。良い感じです。もしかして?と、この方のリポジトリを探してみたらありました。
https://github.com/spatie/laravel-db-snapshots
This package provides Artisan commands to quickly dump and load databases in a Laravel application.
そうそう、この記事の対象データベースはPostgreSQLです。
PostgreSQLの場合にレストア時にエラーでデータベースを飛ばしたので、その対処方法のメモだったりします。MySQL、SQLiteにも対応らしいですが試してません。導入や使い方はドキュメント見てくださいね。
Scalewayに30分でGitHubクローンを建てるよ
GitHubクローン、Gogs(https://gogs.io/)をScalewayに5分で建てるというLTネタができるのでは?
と思ってのにやってみたら30分かかることが判明したでござる(完全敗北)
こんにちプレミアム。公開は月曜日だけど書いているのはフライデー。muraveです。
ここのところ続けて書いている Vagrant + Ansible で Scaleway にサーバーを建てるネタの集大成的な内容です。シナリオは
- CentOS7 インスタンスを起動
- CentOS7 基本設定
- 基本ツール類導入
- firewalld起動
- CEFSプロジェクト提供のエラッタに基づきセキュリティアップデート
- MySQL 5.7 導入
- Nginx 導入
- Gogs 導入
- Gogs 初期設定・インストール(Web画面)
- 最初のユーザー(管理者)作成
- テスト用リポジトリ作成
- リポジトリにpush
Gogsの導入時にNginxのリバースプロキシ設定やSELinuxのポリシーモジュール追加などやってるのでPHP動かしたりするときなどにも色々と参考になると思います(と未来の自分に語りかける)
jmurabe/scaleway-centos7gogs
この投稿の続きを読む »
Mongoose OSをESP32で使ってみた
- 2017/09/29
- suganuma
- AWS-IoT
- ESP32
- Iot
- Mongoose OS
ESP32開発ボードを購入し、Mongoose OSを試してみました。
ESP32シリーズは、Wi-FiとBluetoothを内蔵する低コスト、低消費電力なSoCのマイクロコントローラです。
Mongoose OSは、低消費電力なマイクロコントローラ用のオープンソースのOSです。IoTするための機能が充実しています。
ESP32およびESP32開発ボードは、いくつかのベンダーが出していますが、購入したのは、「HiLetgo ESP32 ESP-32S NodeMCU開発ボード」という一番安かったもの。
中国から国際書留で送られてきましたが、到着するのに10日かかりました。
ちゃんと技術基準適合マークついてました。
ScalewayのSecurity groupに期待しすぎるのをやめる
muraveです。
自分の前の記事『Vagrant+AnsibleでCentOS7のセキュリティアップデートまで』の余談で「ScalewayのSecurity groupについて事前に調整しとくと良いよ」みたいなことを書きましたが、
「Scalewayさんのスパムメール送信対策なんやな〜」
ぐらいの気持ちで接してSecurity groupはなるべく素通しで他の手段で対策したほほうが良さそう、という話。
funcphoneの転送費用についてドドン!とまたまた全て内訳を公開します!!
弊社が提供しているクラウドサービス「funcphone(ファンクフォン)」では、通話転送、留守録、グループ着信、内線電話、音声自動応答機能(IVR)などの機能を、自由に設定しお使いいただけるサービスなのですが、初期費用 無料!ライトプランですと月額費用 2,000円(税込) でスタートできます!
今回は 思い切って自社運用しているfuncphoneの費用の内訳を公開します! の続編として、以前より何度かお客様からもお問い合わせがあったfuncphoneの転送費用についてお話します。
現在弊社では、funcphoneと並行して別途通信事業者の転送サービスを使い、既存の電話番号「095-840-0021」からfuncphoneの050番号への転送も行なっています。
実際に転送サービスの費用を比較すると…
通信事業者 A社の場合 内訳
[2017年 7月 ]
回線使用料(基本料) 3,030 円
転送サービス月額 650 円
IP電話への転送料金 3,704 円
定額料、ユニバーサル料金など 271 円
合計 7,655 円
[2017年 8月 ]
回線使用料(基本料) 3,030 円
転送サービス月額 650 円
IP電話への転送料金 2,300 円
定額料、ユニバーサル料金など 272 円
合計 6,252 円
funcphoneの場合 内訳
[ 2017年 7月 ]
電話番号 約 109円/番号1個
月額 2,000円
発着信料金 約 3,483円(転送以外の通常の発着信通話料や開発用のテスト発着信料も含んでいます)
合計 約 5,592 円
[ 2017年 8月 ]
電話番号 約 109円/番号1個
月額 2,000円
発着信料金 約 4,031円(転送以外の通常の発着信通話料や開発用のテスト発着信料も含んでいます)
合計 約 6,140 円
一見さほど変わらないようにも見えますが、funcphoneの発着信料金は転送以外の通常の通話料も含まれている為、そちらも差し引くとかなりお安くなります。(残念ながら転送料金は発着信料金と合算扱いになり転送のみの正確な料金は確認できません;)
しかも、funcphoneでは転送のみではなく、インターネットに接続できる環境さえあれば、いつでも!好きな時に!!好きなだけ!!!転送先電話番号を変更することができます。
更に…
- 時間や曜日を指定して自動応答/転送など自動で切り替え
- 着信元の番号によって自動応答/転送など自動で切り替え
- 番号1を押すと「Aへ転送」2を押すと「営業時間を読み上げ」などの分岐登録
- 読み上げて欲しいテキストを登録し自動音声で読み上げ
など、他にも様々な機能を組み合わせてお使いいただけますので、用途によって独自の設定が可能です。
7日間無料トライアルでお試しいただけますので、ご興味のある方はぜひ!この機会にご検討ください!!
funcohoneの紹介ページはこちら
Vagrant+AnsibleでCentOS7のセキュリティアップデートまで
思い切って自社運用しているfuncphoneの費用の内訳を公開します!
弊社が提供しているクラウドサービス「funcphone(ファンクフォン)」では、通話転送、留守録、グループ着信、内線電話、音声自動応答機能(IVR)などの機能を、自由に設定しお使いいただけるサービスなのですが、初期費用 無料!ライトプランですと月額費用 2,000円(税込) でスタートできます!
中でも一般的に高額で提供されている、音声自動応答機能がこの料金でお使いいただけるのが、最大の魅力だと思っています(^v^)
さて、いよいよ本題ですが、やはり有料サービスを検討するにあたり、一番気になるところは費用の問題です。
月額は圧倒的に低価格なのですが、電話を使ったサービスということで月額費用とは別に使用した分の発着信料金が発生します。
funcphoneの紹介サイトでもリンクを載せていますが、料金の仕組みがなかなか複雑です(^_^;)
https://twilio.kddi-web.com/price/
そこで…
月トータルでどのくらいの金額になるのか、もう思い切って自社運用分の費用の内訳を公開してしまうことにしました!
ぜひぜひ参考にしていただければと思います。
以下、弊社で運用している分のTwilioの2017年8月の料金明細です。
端数が出て分かり辛いため小数点以下四捨五入しています。
内訳
[電話番号維持数]
37個 ¥4,038
[SIP通話]
インバウンド(着信) 446分 約 223円
アウトバウンド(発信) 799分 約 340円
[音声通話]
インバウンド(着信) 785分 約 785円
アウトバウンド(発信) 488分 約 2,591円
[クライアント通話(スマホアプリ)]
125分 約 31円
合計 約 8,070円
テストの際に使用する番号も含まれているため電話番号維持数が37個と多いですが、実際は本社社員16名分+部署別番号として別途3個、計18個使用しています。
7日間無料トライアルでお試しいただけますので、ご興味のある方はぜひ!この機会にご検討ください!!
funcohoneの紹介ページはこちら
CentOS7 での yum –security update 事情
夏風邪で減った体重がすっかりもどってしまいました。muraveです。
自身への細菌の侵入は許しましたが、サーバーへの侵入は防がねばなりません(自然な導入)
そんなわけで Ansible では yum update 相当の
yum: name=* state=latest
を毎回やっていたのですが、時間がかかりすぎて辛くなってきました。そんなわけでセキュリティアップデートだけするのがいいかな、と調べ始めました。
yum-plugin-securityというパッケージを利用して
$ yum --security update
が出来ることを知りました(そもそもCentOS7ではyum-plugin-securityがyumに統合されている模様)。 やったぜ!
CentOSのリポジトリではセキュリティアップデート情報が提供されていなくて正常動作しないらしいことも知りました。 やってなかったぜ!
先人の知恵と努力を頼りましょう。
- CEFS: CentOS Errata for Spacewalk
- Spacewalk用のCentOSエラッタを提供しているプロジェクト。
- Inject a little security in to your CentOS repositories
- CEFSのエラッタからupdateinfo.xml作るスクリプト作ったぜー、という話。
- CentOS 7でyumからSecurityUpdateを行えるようにする
- 作業内容は殆どこちらのページそのままです。ありがとうございます。
ということでまとめますと、securiy用のローカルリポジトリを作り、CEFSが提供しているSpacewalk用のエラッタからupdateinfo.xmlを作って設置、yum –security update します。
この投稿の続きを読む »
DRBD9のclient機能を試す
- 2017/09/11
- fumikura
DRBD9の新機能 client機能を試してみました。
client機能は、DRBDストレージを持たないノードに、DRBDリソースをマウントできる機能の様です。
前提
- クライアントノード用にホストmysql01、mysql02を用意する。<\li>
- ホストdrbd01~03が持つdrbd領域用のHDDは搭載しない
- OS等の構成はホストdrbd01~03と同じ。
- DRBDカーネルモジュール、drbd-util、drbdmanageをインストールしてある状態です。
- 前述の方法にてDRBDリソースmysql-slv(容量10GB)を作成してある。
- mysql01、02にはMariaDBをインストールしてあります。
- mysql01のIPアドレス: 192.168.24.226
- mysql02のIPアドレス: 192.168.24.227
クライアントモードでノードを追加する。
drbd01にて
[root@drbd01 ~]# drbdmanage n
+----------------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | 51196 | 32092 | | ok |
| drbd02 | 51196 | 32092 | | ok |
| drbd03 | 51196 | 32092 | | ok |
+----------------------------------------------------------------------------------------+
[root@drbd01 ~]# drbdmanage add-node --satellite --no-storage mysql01 192.168.24.226
Operation completed successfully
Operation completed successfully
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully
Join command for node mysql01:
drbdmanage restart
mysql01でdrbdmanage で再起動コマンドを実行します。
[root@mysql01 ~]# drbdmanage restart
You are going to shut down the drbdmanaged server process on this node.
Please confirm:
yes/no: yes
Attempting to startup the server through D-Bus activation...
D-Bus connection successful, server is running and reachable
drbd01にて、確認してみると、mysql01がclientとして追加されていることがわかります。サテライトノードとは、DRBDのコントロール用のリソース.drbdctrlを持たないノードの事です。
以前のリリースでは、add-nodeサブコマンド実施時に–contorole-nodeオプションにて属するコントロールノードを指定する必要があったようですが、今のリリースでは–contorole-nodeオプションは無くなり、指定する必要がなくなったようです。
ちなみに、–satelliteオプションを利用せずにクライアントノードを追加しようとすると、各ノードでの追加用コマンドを実施した際、.drbdctrlリソース用の領域を作成しようとするので、今回のようにDRBD用の領域を持たないクライアントでは、追加に失敗します。
[root@drbd01 ~]# drbdmanage n
+----------------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | 51196 | 32092 | | ok |
| drbd02 | 51196 | 32092 | | ok |
| drbd03 | 51196 | 32092 | | ok |
| mysql01 | 0 | 0 | | satellite node, no storage |
+----------------------------------------------------------------------------------------+
クライアントノードへリソースを割り当てる
mysql01へDRBDリソースmysql-priを割当ます。
assignサブコマンドに–clientオプションを付けて実行します。
[root@drbd01 ~]# drbdmanage assign mysql-pri mysql01 --client
Operation completed successfully
[root@drbd01 ~]# drbdmanage list-assignments
+----------------------------------------------------------------------------------------+
| Node | Resource | Vol ID | | State |
|----------------------------------------------------------------------------------------|
| drbd01 | mysql-pri | * | | ok |
| drbd01 | mysql-slv | * | | ok |
| drbd02 | mysql-pri | * | | ok |
| drbd02 | mysql-slv | * | | ok |
| drbd03 | mysql-pri | * | | ok |
| drbd03 | mysql-slv | * | | ok |
| mysql01 | mysql-pri | * | | client |
+----------------------------------------------------------------------------------------+
クライアントノードでリソースへファイルシステムを作成する
mysql01上で、リソースmysql-priにファイルシステムを作成します。
リソースの割当まで行うと、mysql01上から、mysql-priのブロックデバイスが参照できます。
list-volumesサブコマンドでブロックデバイスのマイナー番号を確認し、ファイルシステムを作成します。
[root@mysql01 ~]# drbdmanage list-volumes
+----------------------------------------------------------------------------------------+
| Name | Vol ID | Size | Minor | | State |
|----------------------------------------------------------------------------------------|
| mysql-pri | 0 | 9.31 GiB | 100 | | ok |
| mysql-slv | 0 | 9.31 GiB | 101 | | ok |
+----------------------------------------------------------------------------------------+
[root@mysql01 ~]# mkfs.xfs /dev/drbd100
meta-data=/dev/drbd100 isize=512 agcount=4, agsize=610352 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2441406, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
マウントしてMariaDBを起動する。
後は、マウントしMariaDBを起動します。
が、/var/lib/mysqlにマウントした場合、ディレクトリのオーナーがmysqlからrootに変わってしまうので、注意してください。
[root@mysql01 ~]# ls -al /var/lib|grep mysql
drwxr-xr-x. 2 mysql mysql 6 9月 5 15:55 mysql
[root@mysql01 ~]# mount /dev/drbd100 /var/lib/mysql
[root@mysql01 ~]# ls -al /var/lib|grep mysql
drwxr-xr-x. 2 root root 6 9月 11 09:57 mysql
[root@mysql01 ~]# chown mysql:mysql /var/lib/mysql
[root@mysql01 ~]# systemctl start mariadb
[root@mysql01 ~]# systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2017-09-11 10:06:19 JST; 2min 56s ago
Process: 28092 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 28013 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 28091 (mysqld_safe)
CGroup: /system.slice/mariadb.service
tq28091 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mq28249 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin...
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: The latest information about ....
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: You can find additional infor...:
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: http://dev.mysql.com
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: Support MariaDB development b...B
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: Corporation Ab. You can conta....
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: Alternatively consider joinin...:
9月 11 10:06:13 mysql01 mariadb-prepare-db-dir[28013]: http://mariadb.com/kb/en/cont.../
9月 11 10:06:13 mysql01 mysqld_safe[28091]: 170911 10:06:13 mysqld_safe Logging to ...'.
9月 11 10:06:13 mysql01 mysqld_safe[28091]: 170911 10:06:13 mysqld_safe Starting my...ql
9月 11 10:06:19 mysql01 systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@mysql01 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
MariaDBの起動ができました。これでクライアントノードの追加は以上です。
後は、同様にmysql02のノード追加、mysql-slvのリソース追加を行います。
以上
VagrantでScaleway使うと開発に便利なのでは?という話
Dockerに傾倒していたので久しぶりにVagrantさわりました。muraveです。
少し前に弊社代表から「ScalewayってクラウドARM使えるし安いし、いいよ!(ネットワーク的に遠くてもいい場合には)」という情報が社内Slackに投げ込まれて気になっておりました。
Scaleaway (https://www.scaleway.com/)
私としてはX86系最安価でも 2Core + 2GB Memory + 50GB SSD + 1public IPv4 という構成で €2.99/month (€1=¥130として¥388.7) の価格性能比に魅力を感じます。
更に調べると詳細には
- VC1Sサーバー(2Cores 2GB Memory): €1/month (€0.002/hour)
- 50GB SSD Volume: €1/month (€0.002/hour)
- 1 public IPv4: €0.99/month (€0.002/hour)
合計 €2.99/month (€0.006/hour)
という価格内訳で(https://www.scaleway.com/faq/billing/)、パッケージ単位での上限が€2.99/monthとのこと。
上限が無くても時間単位で31日間フル稼働で€4.464(¥580.32)ですので、開発でインスタンスの使い捨てを繰り返して上限が無効な場合でもとんでもないことにはならないと思われます。
課金についてあまり気にしなくてもいいというのは精神的に良いです。
そんなわけでVagrantでScalewayをお気軽に使いたいと思います。