CloudGarageにSambaを構築
CloudGarage Advent Calendar 2017 2日目です。
ロゴはちょっとサンバ感出してみました。
はじめに
「ストレージ速度が頭のおかしいCloudGarageならNASにするとめっちゃ早いんじゃね?」っと思い、試してみました。
以前、ddで測定した結果がこんな感じです。
ストレージ速度早いとのことで1GB書き込んでみて「んん?」ってなって5GB書き込んで改めて速さに気づく #CloudGarage pic.twitter.com/udysCWs9JH
— 10tus* (@ban367) 2017年9月25日
1GB/sぐらい出てます。
某クラウドサービスと比べても、この速度は異常です(褒め言葉)
そんなこんなで、高速なNASサーバーを夢見て、サクッとSambaを入れてストレージとしての速度を検証しました。
インスタンス作成
構成
- CentOS7.3
- ポート全開放(とりあえず試すだけなので)
他、適当に設定。
Samba構築
特に特殊なことはなく、ありふれたセットアップ方法
※悩んでも30分アレば終わる
sambaインストール
yum install samba samba-client samba-common -y
設定ファイルのバックアップ
cp /etc/samba/smb.conf /etc/samba/smb.conf.bk
設定を変更
vi /etc/samba/smb.conf
設定内容(主に追記変更箇所のみ)
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = centos7 security = user map to guest = bad user dns proxy = no dos charset = CP932 unix charset = UTF8 ~~~~~~~~~~~~~~ 省略 ~~~~~~~~~~~~~~ [Share] path = /samba/share/ browsable = yes writable = yes guest ok = yes read only = no
共有ディレクトリ設定
上でpathに設定したディレクトリを生成
mkdir -p /samba/share chmod -R 0777 /samba/share chown -R nobody:nobody /samba/share
自動起動設定
systemctl enable smb.service systemctl enable nmb.service
再起動
systemctl restart smb.service systemctl restart nmb.service
サーバーのユーザーの追加
useradd bany passwd bany # 任意のユーザー名
sambaにユーザーを紐付け
pdbedit -a bany pdbedit --list
完成!
あとはPCにネットワークストレージを追加するだけ。
もともとインスタンスにファイアーウォールやSELinuxが設定されていないので、この状態で繋がるはずです。
繋がらなかったら家のネット環境でポートが殺されているかもです。
※我が家はルーターにポートが殺されていて格闘しましたw
本格的に運用を考える場合は、セキュリティに十分気をつけて構築を行ってください。
MacでSambaのストレージが遅いとき
パケット証明でSMBの接続が遅くなってしまう場合は、以下でパケット証明を無効化することで改善
sudo su - echo "[default]" > /etc/nsmb.conf echo signing_required=no >> /etc/nsmb.conf
ストレージ速度結果
AmorphousDiskMarkを使い、ストレージの速度を測定しました。
結果このような数値に…(あまりにも速度が出なかったので50MiBで検証)
めっちゃ遅い… 実際に転送したら1GBに3分ぐらいかかりました。
なるべく早いところでっと思い、回線速度は以下の条件で試したのですが、何が悪かったのかこんな速度でした。
まとめ
こんな結果がオチになってしまいましたが、ネットワーク設定次第?でもっと良い速度が出るのではないかと思います。
※もしかしてサーバーへの転送速度の限界?
こちら、詳しいクラウドガレージャーがいらっしゃれば、何かコメント残していただけるとうれしいです!
お次は、@ore-publicさんです。よろしくお願いします!
iPhoneXとiPhone6sのカメラ比較
初期設定を終わらせ、無事にデータ移行も完了したので、今まで使っていた6sをさよならバイバイする前にかんたんにカメラの比較をしてみました。
撮り比べ
通常のカメラアプリの写真モードでの撮影です。
夜景に強くなったみたいなので、夕暮れ時に試し撮りしました。
iPhone6s
暗いです、肉眼よりもだいぶ暗いです。
ノイズも多め。
iPhoneX
驚きの明るさ、F1.8の高級コンデジクラスと張り合える予感もする…
雑記
LightroomのアプリがXに対応しDNG形式で撮影できたらコンデジは本格的にいらない気がしてきた。
※一応Lightroomのカメラは使えますが、下のカメラでは撮影してないようなので、Xへの対応が楽しみです。
ここまで撮れると家に埋まってるXQ1よりも綺麗に取れる気がする…
WindowsServerにWordpressを導入する
表題の作業をすることがあったので備忘録として。
※今後OSの選択肢が合ったら、間違いなく使いたくはないOSベスト1です(笑)
Windowsの設定
以下の項目について設定の確認
IISのログを自動削除
そのままだと結構な速度でログがたまり容量を圧迫するので適当な期間で削除する設定
システムとセキュリティ > 管理ツール > タスクスケジューラ > 基本タスクの作成
参考リンク
タスクスケジューラの基本的な使い方(Windows 7/8.x/10編) (1/2):Tech TIPS - @IT
とりあえず2週間分の設定
forfiles /P "C:\inetpub\logs\LogFiles\W3SVC1" /M *.log /C "cmd /c if @isdir==FALSE del /s @path" /D -14
IISのインストール
参考リンク
WordPress を Windows Server 2012 R2 にインストールする: ある SE のつぶやき
手順
インストーラーに従いインストール
- 役割と機能の追加にてWebサーバー(IIS)を選択
WordPressのインストール
Web Platform Installerをダウンロードし実行
https://www.microsoft.com/web/downloads/platform.aspx
手順
- Wordpressをインストール
- Mysqlのパスワードを入力
- Wordpressの情報を入力
- ユニークキーを入力
- 完了しブラウザよりWordpressのインストールを進める
- インストーラーに従いインストール
PHPの設定
パーマリンクをカスタムすることを想定しTEMPディレクトリを設定
php.iniの下記を変更しIISを再起動する。
※Web Platform Installerからインストールすると自動的に設定が記述されているのでよく確認すること
upload_tmp_dir = “C:\TEMP/”
WordPress/wp-content/uploadsフォルダに、IUSR、IIS_USRSのアクセス権限をフルアクセスを付与
define (‘WP_TEMP_DIR’, ‘C:\TEMP/’);
以上でおしまい。
セットアップはかんたんなのですが、フォルダのパーミッション等がわかりにくく、それ関係のエラーなどが起きたときにわかりにくい!
自動起動やWebサーバーの再起動などもどうにもわかりにくい…
Windowsでしかできないっということがない限りはWindowsServerは選択肢から外すのがきっと吉。
Nginxのログを圧縮してローテートさせる
Nginxのaccess.logとerror.logのローテートを行った際の設定メモ
やりたかったこと
- 任意のディレクトリにlogを保存
- 圧縮して保存
- ファイル名にはローテート時の日時を入れる
cronあたりで組んでおかないとできないかと思ったのですが、logrotateにシェルスクリプトを書くことでどうにかなるようでしたので、そちらで実装
設定
設定の変更
vi /etc/logrotate.d/nginx
変更内容
/var/log/nginx/*.log { weekly missingok rotate 1 delaycompress notifempty create 0640 www-data adm sharedscripts postrotate DIR="/log" # 保存ディレクトリ EXT=`date +%Y%m%d%H%M` for f in $1 do ls $f.1 >/dev/null 2>&1 if [ $? -eq 0 ] ; then mv $f.1 $f.$EXT gzip $f.$EXT mv $f.$EXT.gz $DIR fi done /etc/init.d/nginx rotate >/dev/null 2>&1 endscript }
gzipを使っているので、環境次第で別途インストールまたはtarなどで代用
動作テスト
ローテートの設定の強制実行
logrotate -f /etc/logrotate.d/nginx
yumでインストールした項目をまとめてアンインストール
phpやzabbixなどインストールするとphp-hoge, php-fugaなど複数のアプリケーションがインストールされるます。
バージョンとか間違えたり入れ直す際にアンインストールをするが、一つずつコピペするのはしんどいので、ワンライナーでアンインストールさせる。
インストールされている項目を取得
例としてzabbixで行います。
yum list installed | grep zabbix | awk '{print $1}' | tr '\n' ' '
まとめてアンインストール
得た結果をそのままyum remove
に渡してアンインストールさせます。
上記のコマンドをバッククオートで括ることで、コマンドの引数で利用できます。
yum remove `yum list installed | grep zabbix | awk '{print $1}' | tr '\n' ' '`
awkさまさまです。
消してしまったgit stashを戻す秘術
誤って使わないっと思いstashを吹き飛ばしたところ、実は必要なstashだった時に活躍するコマンド
履歴から探す
以下のコマンドでstashのリストを取得します。
※ググると他にも取得の仕方があるようですが、個人的に一番わかり易いリストだと思います。
git fsck | awk '/dangling commit/ {print $3}' | xargs -J% git show --summary --oneline
どの程度stashを使っていたかによりここで地獄の度合いが変わるのですが、きちんと名前をつけていたりするとラッキーです。
復旧
stashを適応させる
git cherry-pick -n -m1 見つけたsha1
消してしまった場合を考え、重要そうなstashは名前書いておくと、こういった時に助かるっと痛感しました。
あとがき
いやほんと、ブランチ切り替えるから一旦作業stashしておいたのを消し飛ばしたときは死んだかと思いました(笑)
Zabbixのインストールでsystemdを要求される
AmazonLinuxにZabbixエージェントを入れようとしたとき以下のエラーで怒られた。
Requires: systemd
どうやらsystemd
がご不在だったようです。
今ゼロからAmazonLinuxを立てるとご在宅のようですが、ちょっと前に立てておいたインスタンスですとダメみたいです。
また、CentOSとほぼ同じですが、エラーしない場合のAmazonLinuxへのインストールも備忘録として下に残します。
インストールする手段
この場合、Zabbxを入れる手段として以下のパターンがあります。
Requires: systemd
を解決させる- ソースからインストール
- 見なかったことにして諦める
ちなみに1つ目は既存の環境に影響を与えかねないのでボツ。
新規サーバーなので既存なんて関係ない!って言う場合は黙ってインスタンスのOS変えるほうが懸命です。
推奨は2つ目です。
Zabbixサーバーを入れる場合色々と準備が必要ですが、エージェントのみですとソースから入れるとしても割りと楽にできます。
サーバーの方をソースよりインストールする場合は少々やり方が変わります。
ソースからインストール
公式ドキュメントはこちらです(2017/10/04の時点でバージョン2.2) https://www.zabbix.com/documentation/2.2/jp/manual/installation/install
ユーザーの追加
groupadd zabbix useradd -g zabbix zabbix
ソースファイルの展開
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.0/zabbix-3.0.0.tar.gz tar -zxvf zabbix-3.0.0.tar.gz
agentを指定してインストール
cd zabbix-3.0.0 ./configure --enable-agent make install
設定の書き換え
vi /usr/local/etc/zabbix_agentd.conf
sbinへのPathが通ってないので、念のため通しておく
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile source ~/.bash_profile
実行
zabbix_agentd
yumからインストール
現在最新が3.0となります(2017/10/05)
基本yumからインストールするのが楽で良いです。
レポジトリ追加
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
インストール
yum -y install zabbix-agent
設定書き換えて起動
service zabbix-agent start
chkconfig zabbix-agent on
時間がなくても勉強ができるUdemyのススメ
プログラムの勉強をしようと思いつつも、平日は時間がない…
かと言って休日に真剣に取り組むかというと欲望に負ける…
そんなエンジニアの助けになるのがUdemyのオンライン講座です。
※エンジニア向けの講座が大半ですが、それ以外にAdobeやデザインといった多種多様な講座があります。
少しずつでも新しい技術を、技術的に弱い部分をきちんと勉強しよう…
っと思い最近こちらを利用し始め、思っていた以上に便利なサービスなため紹介。
https://www.udemy.com/jp/www.udemy.com
1講座が激安
ページにアクセスすると飛び込んでくる1講座数万円のリスト、だがキャンペーンやアプリからのセールなど、数多くの割引があります。
しかも割引額が非常に大きく、実際は多くの講座が1,200〜1,800円で購入できます。
※むしろそれ以上の金額を払って買っている人なんていないんじゃないかな…
講座に期限がない
嬉しいことに購入した講座に期限はなく、いつまでも利用できます。
いつでも予習・復習ができるので、最初は聞くだけ流しで聞いて、あとからPCと一緒に実践してみる!っと言ったやり方もできます。
講座はアプリにダウンロードが可能
もちろんUdemyのアプリの機能になりますが、講座の動画データーをダウンロードしておくことができます。
この機能のため、移動中や通勤中にパケットや通信状況を気にすることなく利用ができます。
短い時間に利用できる
講座といったら一回受けたら終わるまで席を立てない!っというデメリットが有ると思います。
Udemyでは講座の動画の一時停止や、最後に見た場所が記憶されオンラインで共有されます。
家でPCで見て、続きは通勤中にっという使い方ができます。
また、各講座はセクションごとにわけられており、短い細かいセクションで構成されているものが多く、1つの内容に集中して取り組めるよう構成されています。
倍速再生が便利
講座の再生に倍速機能があります。
それだけなのですが、とても便利な機能です。
速度 = [0.5x, 0.75x, 1x, 1.25x, 1.5x, 2x]
選べる6速です。
早口な講師に0.75xは便利で、通常は1.25xのちょい早でサクサク聞くっというのが便利です。
知っている知識だけど一応聞いておこうっという時に1.5xや2xが重宝します。
0.5xは…使わないかな?
気軽にできる
兎にも角にもこの一言に尽きます。
セミナーなどは一気に集中して学ぶことができますが、技術的について行けなかったり「あ、今のもう一回聞きたい!」っと言ったこともあります。
また、実際に足を運ぶ敷居の高さがあります。
でもオンラインでなら、少しずつでも学ぶことができる気軽さが何と言っても便利です。
まあ、いつでもできるからっと言って結局勉強しなくなる可能性もあるので、講座を見なくても音楽の代わりに聞いておくなど、何事も習慣づけるのは大切です。
Classic Load BalancerからApplication Load Balancerに変更したときのNginxの注意点
AWSのClassic Load Balancer(以下、CLB)からApplication Load Balancer(以下、ALB)に変更したときに、Nginxがコケたお話。
リダイレクト設定やSSL設定をしていた場合、一手間加える必要があった…。
前置き
今まではCLBにて運用していたサイトを、サーバーを増やしALBで振り分けてサーバーの負荷を軽減し強くすることが目的。
これを成し遂げるためにCLBからALBに変え、ロードバランサーの設定を調整し、いざ接続したら「502 bad gateway」に襲われた。
旧設定
今まで使っていたNginxの設定(一部抜粋)
CMS(app)とAPI(api)はhttps、LPはhttpです。
# hoge.jpをwww.hoge.jpに統一 server { listen 80; server_name hoge.jp; location ~ ^/(api|app) { return 301 https://www.hoge.jp$request_uri; } location / { return 301 http://www.hoge.jp$request_uri; } } server { listen 443; server_name hoge.jp; location ~ ^/(api|app) { return 301 https://www.hoge.jp$request_uri; } location / { return 301 http://www.hoge.jp$request_uri; } } # ルーティング upstream unicorn { server unix:/tmp/unicorn.sock; } server { listen 443; server_name www.hoge.jp; fastcgi_read_timeout 1800s; location ~ ^/(api|app) { root /home/hoge/src/public; ここらへんにunicron設定 } location / { return 301 http://www.hoge.jp$request_uri; } } server { listen 80; server_name www.hoge.jp; location ~ ^/(api|app) { return 301 https://www.hoge.jp$request_uri; } location / { root /home/hoge/lp-site/public; } }
変わった点としては、hoge.jp
からwww.hoge.jp
にリダイレクトすることと、unicronを使っていることぐらいかと思います。
このような設定でALBで使おうとしたところ、怒られました…
しかもerror_logには何も出ないという辛さ。。。
新設定
ダメだった点
- AWSのロードバランサーにSSL証明書を付けるだけでなく、Nginx内にもきちんと書く必要あり
- CLBではロードバランサーに設定のみで大丈夫
- listenの設定に
default_server
が必要- リダイレクト設定をしているせいで、付けておかないと、きちんとルーティングしてくれない…
新しいNginxの設定
# hoge.jpをwww.hoge.jpに統一 server { listen 80; server_name hoge.jp; location ~ ^/(api|app) { return 301 https://www.hoge.jp$request_uri; } location / { return 301 http://www.hoge.jp$request_uri; } } server { listen 443; server_name hoge.jp; location ~ ^/(api|app) { return 301 https://www.hoge.jp$request_uri; } location / { return 301 http://www.hoge.jp$request_uri; } } # ルーティング upstream unicorn { server unix:/tmp/unicorn.sock; } server { listen 443 default_server; server_name www.hoge.jp; fastcgi_read_timeout 1800s; ssl on; ssl_certificate /etc/nginx/fuga.pem; ssl_certificate_key /etc/nginx/fuga.key; location ~ ^/(api|app) { root /home/hoge/src/public; ここらへんにunicron設定 } location / { return 301 http://www.hoge.jp$request_uri; } } server { listen 80; server_name www.hoge.jp; location ~ ^/(api|app) { return 301 https://www.hoge.jp$request_uri; } location / { root /home/hoge/lp-site/public; } }
まとめ
CLBは割りと融通きかせてくれたみたいだけれど、ALBだとしっかりと設定しておかないとダメみたい。
手抜きっといううか、こういう細かい所の設定までしっかりと熟知しておかないと、気づくに気づけないなっとすごく痛感した。
iOSのマニアックな便利機能
iOS11になり、画面の明るさの自動調整がオンになったり、なにげに新しい機能が増えました。
そんな中、割と使ってないんじゃね?っという個人的に便利な機能と忘れやすい備忘録。
明るさの自動調節
一般 > アクセシビリティ > ディスプレイ調整 > 明るさの自動調節
iOS11に追加され、OSアップデートと同時に勝手にオンになっていた機能。
大多数の人が「あれ?自動調節機能有効になってる?」っと思ったものの設定がここにあります。
検索(Quick Look)
ホーム画面 > 下にスワイプ
なんかiOSが更新されちゃっかりとMacと同じぐらいに便利になっていた機能。
Macユーザーでしたらお馴染みの機能ですね。
アプリ名がわからない時に、アプリ名を検索に入れればすぐに開け、「$100」っと入れれば為替レートが表示されます。
メールや検索もデフォルトアプリに限られますが、この検索窓から操作もできます。
また、iPhoneに関してはコントロールセンターから電卓が開けますが、ここに計算式を入れれば電卓として利用できます。
AirDrop
一般 > AirDrop
Apple製品同士でデーターをやり取りする便利機能。
Macで開いているURLをiPhoneへ送信したり、ファイルを送信したりとかなり便利。
ただし、きちんと管理していないと赤の他人にデータ送ったりもできるので注意。
Siriとチャットする
一般 > アクセシビリティ > Siri > Siriniタイプ入力
多くの人が使わないSiriを気軽に使いやすくする機能。
なにげにググるより聞いたほうが早い時もあります。
黙って検索を使ったほうが便利ですが、たまには気分転換に。
ホームボタン3回押し
一般 > アクセシビリティ > ショートカット
ホームボタンをトリプルクリックした際の機能を割り当てられます。
間違えても3連打はそうそうすることがないので、ミスって使っちゃうことはほぼないです。
どちらかと言えば存在を忘れます(笑)
3D Touch
一般 > アクセシビリティ > 3D Touch
6Sから備わった機能。
結構やれることが多いのに、影に隠れた悲しいやつ。
深く押し込むようにグッとすると、対応している場合何かが起きます!
自分がよく使う例として
いざ挙げてみると対して使ってないですが、気になると押し込む癖はあって損はないかもです。
ちなみにコントロールセンターも押し込むことで今までは表示されていたAirDropの設定等を出すことができます。
設定の検索
設定やメッセージなどのアプリ
設定やメッセージアプリを起動し、下にスクロールすると検索ボックスが出てきます。
あの設定どこに合ったっけ?っと思い入れてみるとピンポイントで出してくれるスグレモノ。
あとがき
iOSが上がると機能が増えるだけでなく、さり気なく既存機能も強化されていたりするので、一度見捨てた機能ももう一度使ってみると新しい発見があるかもしれません。