雑なやつ

レベルを上げて技術で殴りたい

LocalStackを試した

手元で AWS のサービスを動かしたかったので試しました。
やっていくぞ!

  • tl;dr
  • 参考URL
  • 環境
  • 対応している AWS サービス一覧とエンドポイント
  • 利用方法
    • 事前準備
      • aws profile の設定
    • pip でローカルにインストール
    • git clone後にDockerで起動
  • 使用例
    • Lambda 関数作成と実行
      • 適当なディレクトリで test.py 作成
      • zipに纏めて LocalStack に Lambda 関数作成
      • Lambda 関数実行
    • Lambda 関数の一覧取得
    • Lambda 関数更新と削除
      • 更新
      • 削除

tl;dr

LocalStack を使うと、AWS のサービスをローカルで使用出来る。
aws-cli でエンドポイントを指定するだけ。
簡単!

参考URL

GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud apps offline! qiita.com

環境

  • macOS Sierra
  • Python 3.6
  • Docker version 18.03.1-ce, build 9ee9f40
  • docker-compose version 1.21.2, build a133471
  • aws-cli/1.15.30
続きを読む

AWS SAM CLI を macOS (with fish shell) に導入する際のメモ

業務中に AWS SAM(Serverless Application Model) CLI が必要になったので導入したのですが、
シェル力が低くて手こずったのでメモに残します。
原因を先に書いておきますが、僕が fish shell 独自の記法に慣れていなかっただけです。

  • 環境
  • bashzsh の場合
  • fish の場合

環境

続きを読む

近況

「定期的に記事書きます!」の宣言から2年以上経過していて、完全に三日坊主でした。
2年経って色々と環境が変わったので、近況書いていきます。

目次

  • 仕事
    • 前職
      • 技術スタックや環境
    • 現職
      • 前職と比べて
      • 技術スタックや環境
        • フロントエンド
        • バックエンド
        • インフラ
        • その他
  • 現在興味がある技術
  • 趣味など
    • ゲーム
    • 運動
  • 今後

仕事

実ははてブを書き始めた時点で退職済みで、その後別の会社へ移りました。

前職

社員2~30人程度、受託メインのWeb系企業に勤務していました。
エンジニア未経験として働き始めた会社で、様々な経験を積むことが出来ました。

  • 開発や社会人の経験がある程度得られた
  • そこそこブラックな環境を体験し、会社選びの基準が培われた
  • 人脈やコネが多少出来た(現職から勧誘された)

前職での経験を現在に繋ぐ事が出来たので悪い体験ではなかったです。[^1] [^2] [^3] [^4] [^5] [^6]

技術スタックや環境

詳細を書くと特定されそうなので、簡単に

続きを読む

Let's Encryptを導入し、nginxをTLSおよびHTTP/2化する

目次

今回の目的

  • Webサーバ(nginx)のHTTPSおよびHTTP/2化
  • Let’s Encryptの証明書自動更新

作業環境

さくらのVPS 1G
CentOS release 6.8 (Final)
nginx 1.9.5以上

新しいバージョンのnginxを導入

nginxをhttp/2化する際、1.9.5以上のバージョンを要求されます。
作業時点のyumリポジトリでは、stable versionとして1.8.2が公開されていたので、
mainline versionからより新しいバージョンを取得します。

リポジトリの編集

$ sudo vim /etc/yum.repo.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/rhel/$releasever/$basearch/ # この行を変更
gpgcheck=0
enabled=1

nginxのアップデート

アップデート前にnginxを停止し、yum updateを実行します。

$ sudo yum service nginx stop
Stopping nginx:                                            [  OK  ]
$ sudo yum update nginx

バージョンの確認とnginx起動

特に問題が無ければmainline版のnginxがインストールされているので、
バージョン確認の後にnginxを起動しましょう。

$ nginx -v
nginx version: nginx/1.9.15
$ sudo service nginx start
Starting nginx:                                            [  OK  ]

Let's Encryptセットアップ

Let's Encryptのインストール

Let's Encryptのファイル自体はGitHubにて公開されているので、
任意のディレクトリに移動してgit cloneを行います。
今回は /usr/local にて作業を行いました。

$ git clone https://github.com/letsencrypt/letsencrypt

git cloneが完了したら"letsencrypt"ディレクトリに移動し、
パッケージインストールのコマンドを実行します。

$ cd letsencrypt/
$ ./letsencrypt-auto --help

Let's Encryptのクライアントを実行し、証明書取得

Let's Encryptでは証明書取得の手段が複数用意されていますが、
今回はwebrootプラグインを利用して更新を行います。

$ ./letsencrypt-auto certonly --webroot --webroot-path /var/www/html -d y4shiro.net

途中でメールアドレス入力と利用規約への同意を求められるので、適宜入力していきます。
証明書取得が完了すると、下記のようなファイルが作成されます。

$ sudo tree /etc/letsencrypt
/etc/letsencrypt
├── accounts
│   └── acme-v01.api.letsencrypt.org
│       └── directory
│           └── ********
│               ├── meta.json
│               ├── private_key.json
│               └── regr.json
├── archive
│   └── y4shiro.net
│       ├── cert1.pem
│       ├── chain1.pem
│       ├── fullchain1.pem
│       ├── privkey1.pem
├── csr
│   ├── 0000_csr-certbot.pem
├── keys
│   ├── 0000_key-certbot.pem
├── live
│   └── y4shiro.net
│       ├── cert.pem -> ../../archive/y4shiro.net/cert1.pem
│       ├── chain.pem -> ../../archive/y4shiro.net/chain1.pem
│       ├── fullchain.pem -> ../../archive/y4shiro.net/fullchain1.pem
│       └── privkey.pem -> ../../archive/y4shiro.net/privkey1.pem
└── renewal
    └── y4shiro.net.conf

/etc/letsencrypt/live/y4shiro.net に証明書が発行されます。

証明書自動取得

Let's Encryptで発行される証明書は期限が90日と短いので、 自動更新を行うよう設定します。
Crontabにて "毎月1日 00:00" の更新とnginxのreloadを設定しました。

$ sudo crontab -e
00 00 01 * * /usr/local/letsencrypt/letsencrypt-auto certonly --renew-by-default --webroot -w /var/www/html -d y4shiro.net && service nginx reload

nginxの設定

発行した証明書をnginxで読み込み、HTTPSとHTTP/2化を行うためにConfigファイルを編集しましょう。
HTTPSではポート443を使用するので、事前にiptableで開放しています。

Configファイル編集

qiita.com
上記記事を参考に、Configファイルの編集を行いました。

SSLv3.0に脆弱性が発見されているので、"ssl_protocols"、"ssl_ciphers"に関しては必ず設定を行って下さい。
"ssl_dhparam"(Perfect Forward Security)に関してはお好みで。

# redirect to 443
server {
    listen 80;
    server_name y4shiro.net;
    rewrite ^ https://$server_name$request_uri? permanent;
}

# server setting
server {
    listen 443 ssl http2;
    server_name y4shiro.net;

    access_log /var/log/nginx/y4shiro.net/access.log main;
    error_log /var/log/nginx/y4shiro.net/error.log;

    ssl_certificate /etc/letsencrypt/live/y4shiro.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/y4shiro.net/privkey.pem;
    ssl_session_timeout 5m;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets on;

    ssl_dhparam /etc/ssl/private/dhparam.pem

    ssl on;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AESGCM:HIGH:!aNULL:!MD5;

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/y4shiro.net/fullchain.pem;
        resolver 8.8.8.8;

    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';

    client_max_body_size 10M;

    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

https化の確認

nginxの再起動およびリロードを行ったのち、
Webページにアクセスしてhttps化されていることを確認してください。
以上です。

参考文献

Let's Encryptの証明書をnginxに設定してhttps化した | tsuchikazu blog 光の速さのWEBサーバー(nginx)をlet's encryptでSSL化及びHTTP/2化。ついでにセキュリティ評価をA+にする。 - Qiita

CentOSにnginxを導入

目次

はじめに

現在運用しているVPS(CentOS)では、WebサーバとしてApacheを稼働させていたのですが、
勉強も兼ねてnginxに置換してみることにしました。

環境

さくらVPS 1GB
CentOS 6.5
Apacheyumでインストール済み

sudo権限が不要な環境では適宜読み替えてください。
※2016年5月時点の内容なので、バージョン等の表記が古い可能性があります。

Apacheの停止・アンインストール

今回、Apacheとの共存はせずnginxへ完全移行するため、
Apacheの停止・アンインストールを行います。

Apacheの停止

$ sudo service httpd stop

サービス自動起動から削除

$ sudo chkconfig httpd off

Apacheのアンインストール

$ sudo yum remove httpd

yum経由でnginxインストール

リポジトリ登録

nginxはCentOSデフォルトのリポジトリに提供されていないため、
nginx公式のリポジトリを登録します。

$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

nginxインストール

$ sudo yum -y install nginx

バージョンを確認

$ nginx -v
nginx version: nginx/1.8.1

nginxを起動

$ nginx

もしくは

$ sudo service nginx start

Webページにアクセスし確認

動作確認のため、サーバのIPアドレスをブラウザに打ち込みアクセスします。
特に問題が無ければ"Welcome to nginx!"のページが表示されます。 f:id:ram1009:20160805021317p:plain

Webページ公開

元々Apacheで公開していたページをnginxでも公開するため、
nginx.confの内容を変更します。

Configファイル編集

yumでインストールした場合、特に指定をしなければ/etc/nginx/に各種ファイルが設置されます。

$ sudo vim /etc/nginx/nginx.conf

今回は下記項目を編集しました。
ポート変更を行った場合はファイアウォールのポート開放も忘れずに行いましょう。

server {
    listen 80; # ポートを指定
    server_name y4shiro.net; # サーバネームを指定

    access_log  /var/log/nginx/localhost.access.log;

    location / {
        root /var/www/html; # ルートディレクトリを指定
        index index.html index.htm;
    }
}

nginxの再起動もしくはConfigファイル再読み込みを行い、
指定したルートディレクトリの内容が表示されていることを確認してください。

$ sudo service nginx restart
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

もしくは

$ sudo service nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Reloading nginx:                                           [  OK  ]

おわりに

今回はyumを利用してインストールを行ったため、特に問題もなくすんなりと進めることが出来ました。
Configの設定はほぼデフォルトの状態なので、気になる方は各位ググって設定を煮詰めましょう。
以上です。

GitHubのContributionsが反映されない

GitHubで草を生やしてモチベーションを向上させよう

これまではBitbucketでprivateリポジトリを立てて開発していたのですが、今後は開発状況を可視化させて行きたい、という理由で公開して問題ないコードは積極的にGitHubへ投げていく事にしました。
GitHubでは何らかの活動を行うとContributionsに反映されますが、これが結構なモチベーション向上へと繋がります。😄

PushしてもContributionsに反映されない…?

ある程度masterブランチで環境を整えたので、devブランチを作成してコミットを行っていたのですが、devブランチでの作業分がContributionsに反映されていないことに気がつきました。

Contributionsにカウントされる条件

Contributionsに関しては、GitHub公式のドキュメントが存在しています。
また、Qiitaにて言及された記事があったので引用させていだたきました。
Why are my contributions not showing up on my profile? - User Documentation qiita.com

  • Issueを投げる、PRを投げる
  • Commitする
    • commitの際に使用したemailアドレスがGitHubアカウントに登録したものと同じであること。
    • forkでなく、独立したリポジトリであること。
    • デフォルトブランチ(だいたいは master)か gh-pages ブランチへのコミットであること

まとめ

GitHubでContributionsを反映させたければ、デフォルトブランチに。コッミットしましょう