るいすときのこの物語

オタクエンジニアの雑記

覚書

Ansible AWX + tower-cli で Toil を無くしていきたい

新社会人になって、気づけばもう半年が過ぎた。 体調を崩すと治るまで時間がかかったり、老いを感じる23歳(童貞)です。Ansible Advent Calendar 2018 の3日目の記事です。 2日目は、tomonorimatsumura さんの「AnsibleでCentOS7へジョークプログラムを…

Nginx で logrotate したのに新しいファイルに書き込まれない

nginx -s reopenでエラーがでないなら "/var/log/nginx/access.log" "/var/log/nginx/error.log" { missingok notifempty daily rotate 7 su nginx nginx create 666 nginx nginx notifempty sharedscripts postrotate nginx -s reopen endscript }こうしま…

MySQL でスレーブ複製編 via ディレクトリごとコピー

mysql前回は XtraBackup を使って、スレーブを止めずにスレーブを複製する方法を書きましたが 今回はスレーブを止めて、スレーブを複製する方法を覚書で書いておきます。 blog.luispc.com (複製元)複製先へ datadir をコピー # systemctl stop mysql # scp…

俺的 Proxmox をインストールしたらやること

Proxmox 使ってますか?KVM や LXC を管理できる無料の仮想アプライアンスです。 WebGUI、ドキュメントも管理されており、OpenStack などよりも小難しいことがなくて大変便利です。最近、Proxmox をもう1台追加してクラスタ化したものの色々と躓いたことが…

Percona XtraBackup で DB を止めずにバックアップ/リストアする

MySQL のスレーブ複製をダウンタイムなしで行う

SSH 時にリモート先でコマンドを実行する

Install sshrc# wget https://raw.githubusercontent.com/Russell91/sshrc/master/sshrc && chmod +x sshrc && sudo mv sshrc /usr/local

DBストレージエンジンまとめ

Archiveデータのアーカイブに最適されている。 テーブルデータを圧縮してディスク上でのデータ格納量を低減することを目的としたストレージエンジン。 クラスタや、トランザクション、インデックスがサポートされていない、INSERT と SELECT をサポートされ…

Goを使って画像の類似度を超簡単に行う / perceptual(image) hash

コンビニの有人レジがすごい混んでるのに、セルフレジを誰も使わない日本人を理解できない長谷川です。 概要 2つの画像の類似度を算出したい。 得られるハッシュ値は64bit 対象は静止画, 画像, 音声等のマルチメディアデータ コンテンツ内容が類似している…

AWS-SDK-Goを使って、ユーザーが投稿したファイルをS3から削除してみる

はじめに S3でユーザーが投稿した画像を管理している場合、ユーザーがアプリを退会した際にユーザーに関する情報、S3からもユーザーのファイルを削除する必要性があります。 S3上のプレフィックスは userID/ となっており、全体のキーはbucket/userID/fileNa…

Locustで初心者がAPIサーバーの負荷試験をやってみた

この記事はチラ裏です。僕の頭の中を整理するためだけの記事です。 寒いなぁ...寒いなあ... 卒論を提出して2/6にはパワポとレジュメを作成して発表です。 負荷をかけるツールはいっぱいある 便利な世の中なので負荷ツール(Load test tool)はたくさんありま…

Node.jsでjpgをwebPエンコードする

前回の記事の続きのような https://luispc.com/memo/2017/12/13/9610 node-cwebp を使う https://github.com/Intervox/node-webp cwebp のラッパーです。 cwebp は Google 公式のライブラリです。 使ってるコードをそのまま載せます。 対して長いコードでは…

Lambda+S3+EC2を使用してできるだけ安くリアルタイムwebPエンコードをやってみる

S3にアップロードされる jpg画像をリアルタイムで webP にエンコードしたかったので 色々やってみた。 要件 S3 バケットには毎月1000万枚の2.2MB程度の jpg画像がアップロードされると仮定 これをアプリが引っ張る前にできるだけで速く webP にエンコードす…

CentOS7/UbuntuからWindows10のPCをリモートシャットダウンしてみる

Windows側 管理者権限+パスワード設定がしているアカウントを作成する(既にある場合はスキップ) TCP:445, 139 を開ける Linux側 コマンドを入れる Debian系:apt install samba-common RHEL系:yum install samba 実行する net rpc shutdown -I ipaddress…

RDS for MySQL でSELECT結果をCSVに吐き出す

機会があって調べていると一筋縄ではいかなかったので覚書。 2ヶ月ぶりの記事ですが普通に生きています。 INTO OUTFILE は使えない RDS for MySQL(Aurora) v5.6.10 では INTO OUTFILEを実行するとエラーで使えない ERROR 1045 (28000): Access denied for u…

Systemdで動かすNode.jsでnewrelic agentを使う

また Systemd の話です。 https://luispc.com/memo/2017/08/01/9481 https://luispc.com/memo/2017/08/19/9542 今回はバックエンドに newrelic を導入しようとしたところ、 うまく動作しなかったため解決策を載せておきます。 原因 Systemd のせいです。 new…

GolangのGinをSystemdで動かすのにハマった

背景 デプロイ先のサーバーでビルドしたものを 以下のようなUnitファイルを作ったら起動できなかった話 [Unit] Description=Run Gin [Service] User=root Group=root Environment="SERVER_ENV=production" ExecStart=/home/jenkins/go/src/hoge/gin release …

Slackにネイティブアプリのエンジニアに優しいBOTを作ってみた

皆さんSlack使ってますよね。 今じゃIT企業以外にもSlackが導入されてて日本への浸透も広がってきたと思います。 背景 今は趣味で色々やってるんですが、開発したAPIを叩くiOSエンジニアに 「最近のアクセスログが欲しい」 「エラーログ見せて欲しい」 等、…

MySQLのデータベースをインポートする際に存在するテーブルのレコードを削除せずにALTER文を作成、実行するスクリプトを作った

先月末に数学のテストを終えました。 C単位は降ってきてほしいと切に願います。 あと、中間発表を控えてます。 背景 ステージング環境のDBをプロダクション環境のDBへインポートする際に レコードを消すわけには行かず ・プロダクションにないテーブルは作成…

Node.jsのプログラムをsystemdで動かすと意図しない動作をどうにかする

背景 Node.jsで書かれたプログラムをsystemdで動かすと 実行ディレクトリが変わってソースによっては意図しない動作をします。 例 コード const fs = require('fs'); const path = require('path'); setTimeout(() => { delete require.cache[path.resolve('…

Vultr.com $5 VPS と AWS EC2 t2.micro どっちがオススメか

初めて精神安定剤みたいのを買いました。 今後外出するときは使用してみたいと思います。 背景 会社のHPなどサービスを提供する際に停止してもそこまでクリティカルでないものを 如何に安く運用するかと考えたときにVPSかEC2かで悩んだので色んな観点からま…

作ったAMIからインスタンスを作成するとSSHのパラメーターが変わる

背景 Auto Scaling Group の起動設定の元となるAMIを作成する際に SSHのPasswordAuthentication yesとしてAMIを作成をすると 復元するときにPasswordAuthentication noに戻ってしまう問題 原因 cloud-initが原因 (変更前) ssh_pwauth: 0 (変更後) ssh_pwauth…

Ansibleのs3モジュールを使ってディレクトリごとアップロードする

梅雨の季節がやって参りました。 Ansibleのs3モジュールを使ってディレクトリごとアップロードする方法を覚え書きとして。 認証情報を環境変数に入れておく Ansibleで使うAWSの認証情報はPlaybookに書き込むか 環境変数を使うかで選べます。 万が一のことを…

Jenkinsとnewmanを組み合わせて自動APIテストを実現してみる

Postman + newman + Jenkins の組み合わせが結構便利だったので いつかの自分のために記事を残します。 Postman API テスト ツール 何かで検索するとPostmanの記事を多く見ると思います。 Windows / Linux / Mac / Chrome で動作し 多くの機能を搭載している…

コンテナ上で何もできなくなる「Too many open files.」

Dockerに限った話ではなくOpenVZとかLXCでも同じ方法で解決できる”はず” fs.inotifyを弄る fs.inotify.max_user_instances = 96290160 fs.inotify.max_queued_events = 65536 fs.file-max = 96290160 fs.inotify.max_user_watches = 9280000 sysctl -p what …

コンテナ環境でcronの@rebootが動かない問題をsystemdで解決する

再再履修の微積IIのテストが今日終わりました。 今日から春休みですが研究も本格的に始まりそうであんまり嬉しくない。 やりたいことではあるけど週1、月1で大学行く必要性とは! 覚書です。 やりたいこと LXC上で動いているコンテナに起動時に任意のコマ…

Grafanaをリバースプロキシ環境でBasic認証が使えない問題

ちょこっとハマったので記事に。 覚書です。 概要 GrafanaをNginxのBasic認証で動かしたい 問題 認証情報があってるのに永遠にBasic認証のダイアログがでてくる 解決 #################################### Basic Auth ########################## [auth.bas…

自作プラグインでwp-config.phpを読み込んでキャッシュの設定を確認する

開発中の block-wpscan というプラグインがあるのですが Wordpressのキャッシュプラグインを使っていると変な動作をすることが分かった。 https://luispc.com/2016/03/25/8019 block-wpscan 0.7.5 で wp-config.php を読み込んでキャッシュが有効なのかどう…

nginxの多段リバースプロキシ環境でWordpessをパス指定で振り分ける

nginxの多段リバースプロキシを使って、パスによって振り分け先はWordpressにしてみます。 そもそもサブドメインで振り分けるのが設定も複雑にならず、分かりやすくていいんですけどね...。 目標 多段リバースプロキシの環境でパスによって参照するWordpress…

Grafana 4.x + Cloudflare 特定の環境でページが開けなくなる「Uncaught SyntaxError: missing ) after argument list」

Grafana 4.0.0 が11月29日に正式版としてリリースされました? [blogcard url="https://github.com/grafana/grafana/issues/6760"][/blogcard] と早速アップデートしてみると黒い背景のままでログイン画面が表示されない! 解決方法 ここの項目にある「Ja…

Percona Server 5.7でrootのパスワードが分からない「Error: Access denied for user 'root'@'localhost' (using password: YES)」

Percona Server 5.7 でインストール後、起動してmysql_secure_installationを実行すると いきなりrootのパスワードを求められた。 公式ドキュメントを見てみると /var/log/mysqld.logに一時的なパスワードあるから! ということでこれを使ってmysql_secure_i…