git flowのhotfixで実施した作業内容を表示する

git log --oneline | grep hotfix

2e5336b Merge branch 'hotfix/aaaaa' into develop
93c3907 Merge branch 'hotfix/bbbbb' into develop
git show 2e5336b
commit 2e5336bde6626a642f5f516da4a776c126a9cbba
Merge: 93c3907 d312624
Author: kubo <kubo@companyname.mail>
Date:   Thu Nov 10 15:22:47 2016 +0900

    Merge branch 'hotfix/aaaaaa' into develop
git diff 93c3907 d312624

で、出来るはず、だったけど、なんか違う差分が表示される。

git show d312624

が知りたい log情報だった。

Ansistranoでソースコードをローカルで取得

アプリのデプロイにRubyCapistranoを使っていて便利だなーと思っていたので、
新しく作ったアプリでは、AnsibleのAnsistranoを使ってみた。

でも、実行すると途中で止まる。
ansible-playbook -i inventory/hosts/production playbook/deploy.yml
gitリポジトリからソースの取得するときに、デプロイ先のサーバーからgit cloneしてるっぽい。

TASK [carlosbuenosvinos.ansistrano-deploy : include] ***************************
included: /private/etc/ansible/roles/carlosbuenosvinos.ansistrano-deploy/tasks/update-code/git.yml for xx.xx.xx.xx

TASK [carlosbuenosvinos.ansistrano-deploy : ANSISTRANO | GIT | Ensure GIT deployment key is up to date] ***
skipping: [xx.xx.xx.xx]

TASK [carlosbuenosvinos.ansistrano-deploy : ANSISTRANO | GIT | Update remote repository] ***

デプロイ先のサーバーで、gitのリポジトリを取得できるように設定すれば動くけど、
ローカル環境でリポジトリを取得したかったので、調べてみた。

ansistrano_deploy_via: git
から ansistrano_deploy_via: copy
にすると、動くようになった、
と思ったけど、これはgit cloneではなくて単なるファイルコピーをするオプションだった。
ansistrano_deploy_from も足すとローカルのファイルをコピーする。
copyで実行したら遅すぎたので、rsyncに変えたら早くなった。

- hosts: all
  name: "appname1 host server"
  vars:
    ansistrano_deploy_from: "{{ playbook_dir }}/../../"
    ansistrano_deploy_to: /var/www/mmr2
    ansistrano_deploy_via: rsync
    #ansistrano_deploy_via: git
    ansistrano_git_repo: git@gogs.companyname.test:appname1/appname1.git
    ansistrano_git_branch: feature/1.1
    ansistrano_shared_paths: ["log","config"]
    ansistrano_after_update_code_tasks_file: "{{ playbook_dir }}/ansistrano/after_update_code.yml"
    ansistrano_after_symlink_tasks_file: "{{ playbook_dir }}/ansistrano/after_symlink.yml"
  vars_files:
    - vars/all/main.yml
    # - vars/{{ stage }}/main.yml
    # - vars/{{ stage }}/secret.yml
  roles:
    - carlosbuenosvinos.ansistrano-deploy

/etc/default/celeryd が読み込まれなかった

http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html
を見てcelerydの起動スクリプトを作った。

/etc/init.d/
に起動スクリプトを置いて、sudo service appname_celeryd start したら、エラーになった。

sudo service appname_celeryd start
celery init v10.1.
su: user celery does not exist
/etc/default/celeryd

に置いた設定ファイルは、
/etc/init.d/appname_celeryd
のように起動スクリプトと同じ名前にしないといけないっぽい。

Bash on Windows10 有効化メモ

OSビルドバージョン確認

スタートメニュー > 設定 > システム > バージョン情報

https://msdn.microsoft.com/en-us/commandline/wsl/install_guide

Windows Updateからだと、
Windows 10 Anniversary Update
が適用されなかったので、インストーラーをダウンロードした。
https://support.microsoft.com/ja-jp/help/12387/windows-10-update-history?ocid=update_setting_client

Windows 10 Anniversary Update のインストーラーを実行してアップデート。

開発者モード の有効化

スタートメニュー > 設定 > 更新とセキュリティ > 開発者向け

開発者モード
をチェック。

Windows Subsystem for Linux (Beta)

スタートボタンを右クリック > プログラムと機能 > (左側の)Windowsの機能の有効化または無効化
Windows Subsystem for Linux (Beta)
をチェックしてOKボタン。

http://qiita.com/Aruneko/items/c79810b0b015bebf30bb

※会社で使っているPCは32bit版WindowsだったのでWindows Subsystem for Linux (Beta)が出てこなかった。

コピー&ペースト

Ctrl + V でコピペができない。

Windows 10 build 14316: Ctrl + v doesn't work on Bash on Ubuntu on Windows - Super User 簡易編集モードを有効にすると、
マウスの右クリックで貼り付け(ペースト)はできるっぽい。

nginx + django uwsgi

CentOS6 にdjangoアプリを設置しようとしたら、nginxでエラーになった。
django 1.8

EC2上で Django + Nginx + uWSGI を試す - Qiita

http://unix.stackexchange.com/questions/218747/nginx-says-open-etc-nginx-conf-d-foo-conf-failed-13-permission-denied

service nginx restart
nginx: [emerg] open() "/home/aaaaaaa/app1/uwsgi_params" failed (13: Permission denied) in /etc/nginx/conf.d/app1.conf:25
nginx: configuration file /etc/nginx/nginx.conf test failed

SELinuxが原因だった。

service nginx restart
nginx: [emerg] invalid number of arguments in "uwsgi_param" directive in /home/aaaaaaa/app1/uwsgi_params:11
nginx: configuration file /etc/nginx/nginx.conf test failed

http://serverfault.com/questions/704366/error-invalid-number-of-arguments-in-uwsgi-param-directive-on-nginx-restart

http://nginx.org/en/linux_packages.html#stable

nginx の再インストール

nginxを1.10.1にする。

/etc/yum.repos.d/nginx.repo

http://qiita.com/utano320/items/0c0d9b84a9a28525bcb9

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
yum remove nginx
yum remove nginx-filesystem

Installing:
 nginx                      x86_64                      1.10.1-1.el6.ngx                         nginx                      821 k

server_names_hash_bucket_size

service nginx start
Starting nginx: nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32

/etc/nginx/nginx.conf
server_names_hash_bucket_size 64;
を足した。

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

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

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    server_names_hash_bucket_size 64;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

連携設定

uwsgi --wsgi-file wsgi.py --socket 127.0.0.1:3031
upstream django {
    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    #server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    server 127.0.0.1:3031;
}