[ホスティング] EC2でDropboxクライアントを動かす

ある案件で、FTPとか使う代わりにDropboxでサーバーにファイルをアップロードする仕組みを提案した。確かDropboxにはLinux版クライアントがあったはず。それを使えばPCで変更したファイルをLinuxサーバー上のフォルダに同期させることが可能だろう。

EC2へのインストールを試みる

システム要件とインストール手順は以下にあった。

hat are the system requirements to run Dropbox? – Dropbox Help
https://help.dropbox.com/desktop-web/system-requirements

Install – Dropbox
https://www.dropbox.com/install-linux

Dropboxデーモンを動かしてみたら以下のエラー。

インストールされているglibcのバージョンは2.17だった。

いろんなソフトと依存関係がありそうなので下位ライブラリを置き換えるのは怖い。それもamznリポジトリ外からとは。踏ん切りがつかないなあ。

Dockerで動かす

他に方法がないかと探っていたらDockerで動かす方法が紹介されていた。

Run Dropbox client in a Docker container – va1entin’s blog
https://valh.io/blog/Dockerize-Dropbox-on-Linux

Dockerイメージを公開してくれているのですぐ動かせた。ありがたや。

janeczku/dropbox – Docker Hub
https://hub.docker.com/r/janeczku/dropbox/

参考サイト

Amazon ECS における Docker の基本 – Amazon Elastic Container Service
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/docker-basics.html

[Webサイト制作] Copyrightの正しい書き方

ウェブサイトのCopyright表記、どう書くのが正しいのだろうか。

参考サイト

Copyright(コピーライト:著作権表示)の正しい書き方を知っていますか?:webサイト制作 – webデザイン初心者|sometimes study
http://serinaishii.hatenablog.com/entry/2015/09/30/Copyright%28%E3%82%B3%E3%83%94%E3%83%BC%E3%83%A9%E3%82%A4%E3%83%88%EF%BC%9A%E8%91%97%E4%BD%9C%E6%A8%A9%E8%A1%A8%E7%A4%BA%29%E3%81%AE%E6%AD%A3%E3%81%97%E3%81%84%E6%9B%B8%E3%81%8D%E6%96%B9%E3%82%92

Circular 66 Copyright Registration of Websites and Website Content
https://www.copyright.gov/circs/circ66.pdf

Sample Copyright Notices – TermsFeed
https://www.termsfeed.com/blog/sample-copyright-notices/

[Windows] バックアップのエラー – Backup completed but some files were skipped

常用マシンでWindows 10に含まれている Backup and Restore (Windows 7) でバックアップを取ると、毎回以下のエラーが表示される。

バックアップしているのはデフォルトのディレクトリ群と、更にいくつかのカスタムディレクトリも追加している。View skipped files で確認すると、カスタムディレクトリのサブディレクトリの1つが存在しないと言っている。確かにそのディレクトリは存在しない。なのになぜかバックアップ対象に含まれている。なんだかおかしい。

ネットを探すと同様の問題が見つかる。だけどこれだという解決策は見つからない。

Windows 7 “Backup completed but some files were skipped” – Super User
https://superuser.com/questions/33083/windows-7-backup-completed-but-some-files-were-skipped

以下の記事には「レジストリにエラーがある。存在しないファイルをレジストリが記憶しているせい」と言った記述がある。もしこれが正しいならば、自分のマシンでも有り得るかもしれない。実際にレジストリを検索してみたら、バックアップでエラーになったディレクトリを含むエントリがいくつか見つかった。

” Backup completed but some files were skipped ” – Microsoft Community
https://answers.microsoft.com/en-us/windows/forum/windows_7-system/backup-completed-but-some-files-were-skipped/d463f4d1-979c-4b7c-a029-2c7ed688af12?msgId=c19dc1f4-a9ee-45af-8d4d-edc5f49798d9&page=1

しかしレジストリを無知にいじるのは怖い。なので、今日のところは存在しないと叱られたディレクトリを空で作成することで、辻褄合わせをしてエラーを回避しておく。理由がわからいのは気持ち悪いけどね。

[MySQL] ORDER BYでのNULLの順序

レコードの表示順序を意図的に決めたくて

  • テーブルに”order”という整数型のカラムを追加
  • “order”はNULL可能なカラムでデフォルトはNULL
  • “order”の整数値の小さい順にレコードを表示する
  • “order”がNULLのレコードは整数値の後に来る

しかし実際に試してみると、ORDER BYでレコードをソートする場合、整数値よりもNULLの方が先に来る。そういうものなのかなと思って調べてみるとDB依存っぽい。DBによってはNULLを先にするか後にするかを指定できるらしいが、MySQLではNULLは先に来るように決まっているらしい。

NULLを後に来るようにするにはSQLだと以下のように指定すればよい。

Laravelだと以下のように指定する。

参考サイト

NULLと戯れる: ORDER BYとNULL – Qiita
https://qiita.com/SVC34/items/c23341c79325a0a95979

Laravel EloquentのソートでNULLを最後に持ってくる(MySQL) – ハマログ
https://blog.e2info.co.jp/2017/07/08/laravel_eloquent_sort_mysql_null_last/

php – How to sort NULL values last using Eloquent in Laravel – Stack Overflow
https://stackoverflow.com/questions/17644072/how-to-sort-null-values-last-using-eloquent-in-laravel

OrderByでnullをascの最後尾に置く書き方【62日目】 – エンジニアのひよこ_level10
https://www.nyamucoro.com/entry/2017/12/14/232819

[Unix] ulimit – システムリソースの上限を設定する

Apache Benchを使っていたら以下のエラーに直面。

オープンできるファイル数(というか使用できるファイルディスクリプタ数)に制限があるのだろうか。調べてみるとulimitというコマンドが見つかった。このコマンドを使うとシステムリソースの現在の上限値を知ることができる他、上限値を変更することもできるらしい。

現在のシステムリソースの上限を表示する。

オープンできるファイル数の上限を変更する。

設定を変更したらApache Benchのエラーが消えた。

参考サイト

【 ulimit 】 コマンドに割り当てる資源を制限する | 日経 xTECH(クロステック)
https://tech.nikkeibp.co.jp/it/article/COLUMN/20060227/230911/

Using the ulimit command on Linux systems | Network World
https://www.networkworld.com/article/2693414/setting-limits-with-ulimit.html

[Apache] php-fpmのステータスページを表示する

PHP-FPMを稼働させている場合には、PHP-FPMの統計情報を表示することができる。

ステータスページを表示
http://example.com/fpm-status

参考サイト

PHP-FPM と nginxのステータスページを見られるようにする – koni blog
https://koni.hateblo.jp/entry/2016/01/12/184800

PHP-FPM status page » Malasuk
https://www.malasuk.com/linux/php-fpm-status-page/

Nginx – Enable PHP-FPM Status Page
https://easyengine.io/tutorials/php/fpm-status-page

[Apache] サーバーステータスページを表示する

mod_status によりサーバーの統計情報を表示することができる。設定は簡単。

ステータスページを表示
http://example.com/server-status

ステータスページを自動更新(1秒おき)
http://example.com/server-status?refresh=1

参考サイト

mod_status – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mod/mod_status.html

2.7 サーバステータスの監視機能
http://software.fujitsu.com/jp/manual/manualfiles/M060041/B1WN7141/02Z200/ihs02/ihs00014.htm

稼働状況の表示(ステータス情報表示)
http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0950/03Y1830D/EY180051.HTM

[Webサイト運営] ロードアベレージとは

  • システム全体の実行待ちプロセス数の平均値(負荷状況)
  • 「1CPUにおける単位時間あたりの実行待ちとディスクI/O待ちのプロセスの数」
  • つまり「CPUの実行権限が与えられるのを待っているプロセス」と「ディスクI/Oの完了を待っているプロセス」の多さ
  • ロードアベレージはあくまで待ちタスク数を表すだけの数字
  • 故にロードアベレージだけではCPU負荷が高いのかI/O負荷が高いのか判断はできない

参考サイト

LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる – Qiita
https://qiita.com/kunihirotanaka/items/21194f77713aa0663e3b

ロードアベレージを確認できる4つのコマンドと4つの原因の対処方法|フリエン
https://furien.jp/columns/146/

load averageを見てシステムの負荷を確認する – Qiita
https://qiita.com/k0kubun/items/8065f5cf2da7605c8043

[Unix] top – 実行中のプロセスをリアルタイムで表示する

まずは –help で指定可能なオプションを確認するも簡素な表示。

オプション無しで現在実行中のプロセスを表示する。画面の高さに収まる分だけ。表示はCPU利用率(%CPU)が高い順、3秒ごとに更新される。qで終了、?でヘルプ画面に切り替わる。

1行目にロードアベレージが表示されている。

左から直近1分、5分、15分のロードアベレージを示す。

参考サイト

Man page of TOP
https://linuxjm.osdn.jp/html/procps/man1/top.1.html

【 top 】コマンド――実行中のプロセスをリアルタイムで表示する:Linux基本コマンドTips(123) – @IT
https://www.atmarkit.co.jp/ait/articles/1706/30/news018.html

topコマンドで覚えておきたい使い方14個 | 俺的備忘録 〜なんかいろいろ〜
https://orebibou.com/2015/07/top%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E4%BD%BF%E3%81%84%E6%96%B914%E5%80%8B/

topコマンドの使い方 – Qiita
https://qiita.com/k0kubun/items/7368c323d90f24a00c2f

[Unix] vmstat – 仮想メモリやディスクI/Oの統計情報を表示する

まずは –help で指定可能なオプションを確認。

表示されるのは、最後に起動(再起動)した時から現在までの統計情報。

-a オプションでアクティブ/非アクティブなメモリの量を表示する。

  • procs
    r – 実行中と実行待ち中のプロセス数の合計
    b – 割り込み不可能なスリープ状態にあるプロセス数
  • memory
    swpd – 使用中の仮想メモリの量
    free – 空きメモリの量
    buff – バッファとして使用しているメモリの量
    cache – キャッシュに使用している量
    inact – アクティブではないメモリの量
    active – アクティブなメモリの量
  • swap
    si – ディスクからスワップインしているメモリの量
    so – スワップアウトしている量
  • io
    bi – HDDのようなブロック型デバイスから受け取ったブロック数
    bo – ブロック型デバイスに送ったブロック数
  • system
    in – 1秒当たりの割り込み回数
    cs – コンテクストスイッチの回数
  • cpu
    us – カーネルコード以外の実行(ユーザー時間)に使用した時間(ユーザー時間)
    sy – カーネルコードの実行に使用した時間(システム時間)
    id – 空転していたアイドル時間
    wa – I/O待ち時間
    st – 仮想環境で実行している際、ホストOSにCPUリソースを割当ててもらえなかった時間の割合

-s オプションで1項目1行でメモリの統計情報とイベントカウンタを表示する。

-dオプションでディスクの統計情報を表示する。

-Dオプションでディスクの統計情報を1項目1行で表示す

繰り返し表示したければ間隔(秒)と回数を指定する。

参考サイト

【 vmstat 】コマンド――仮想メモリやディスクI/Oの統計情報を表示する:Linux基本コマンドTips(126) – @IT
https://www.atmarkit.co.jp/ait/articles/1707/13/news015.html

vmstatの見方と考え方:ぴろにっき:So-netブログ
https://piro791.blog.so-net.ne.jp/2008-10-02