2023年の抱負とか
2022年はいろんなことがあったので備忘録として残そうと思う。振り返るとそんなことあったよね的な感じで。(※2022年は本厄だった)
2022年のSummary
- 採用活動
- 開発の進捗
- kubernetesを諦めた
1に関してはミスマッチだったり、選考フローだったり、本当に望む人、ビジョンとかが希薄なまま活動してたと思う。ここは何のために働くとか言語化が必要なんだなと改めて思った。 個人的にはスキル面だけじゃなくずっと長く働きつづける環境とは?を追求したいと思う。 メモとして、米国ではレイオフが至るところでニュースになってる。
2に関しては、やっぱりドメイン知識というか、本当に欲しい物は何だ?をいかに具現化できるかが課題だった気がする。いわゆるビルド&スクラップなんだけど、個人的にはビルド&ビルドでブレずに良くしていく方がメンタル的にもいいのかなと思うのでそうなるように考えたい。
3に関しては、kubernetes今必要?というところもあるが、いざ勉強して見ると、yaml力というか、技術力というよりも知識力が圧倒的に必要な気がした。当然コンテナのベースの知識も必要なんだが、周辺ツールの多さと常に進化していく感じで、やっぱり今じゃないな。という結論に至った。Jenkins Xはとてもパワフルでブルーグリーン・デプロイメントがgithubでマージするだけで実現できる世界を自力で構築できるというのは、色々進歩しているんだなと思った。
タイミング的なものもあるが、コアな人が見つかったのは良かった。今はまだお手伝いベースなのだが。
今年なにするか
技術スタックは仕事を通して高いレベルを目指すとして、それ以外の目標をおくとすれば、
SKKに入門する
ずっとskkを使っている人いわく、もう戻れないIME。 最近は言語化に力を入れよう(=文章を書く)と思っていて、変換含めてスムーズにタイピングできるようになりたいなーと思ってる。 ubuntuだとaptでさくっとインストールできたからこれから辞書含めて一生の付き合いになるように指で覚えて育てて行こうと思う。
10kg減量
昨年末からGYMにちゃんと行き始めたので2023年は体を仕上げる年にしたい。 1ヶ月-1kgを守り続ける。ということを意識しようと思う。
自分のベストを知る
自分は何時間寝れば調子がいい、昨晩何食べたから調子がいい、集中できる時間帯は何時だ。とか、自分で自分の事を知らないのをどうにかしたい。 これは日々メモを続けることでなんとなく知れそうな気がするので豆につけていこうと思う。
人間的な成長が実感できる1年にしたいと思う。
gunicornをsystemdで動かした
gunicorn(19.9)をsystemdで動かした場合に色々と嵌ったのでメモ。
https://github.com/benoitc/gunicorn/blob/master/docs/source/deploy.rst#systemd
最終的に動いた設定
/etc/systemd/system/app.socket:
[Unit] Description=gunicorn app socket [Socket] ListenStream=/run/app.sock User={{ app_user }} Group={{ app_group }} [Install] WantedBy=sockets.target
/etc/systemd/system/app.service:
[Unit] Description=gunicorn app service Requires=app.socket After=network.target [Service] PIDFile=/run/gunicorn/app.pid RuntimeDirectory=gunicorn User={{ app_user }} Group={{ app_group }} ExecStart=/path/to/venv/bin/gunicorn \ --workers 2 \ --pid /run/gunicorn/app.pid \ --access-logfile /var/log/app/access.log \ --error-logfile /var/log/app/error.log \ --capture-output \ --log-level info \ app.wsgi:application ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
どこにはまったかのか
まず公式のドキュメント通りに動かなかった。なんかソケットが消えてしまう。
https://github.com/benoitc/gunicorn/issues/1524
を見る感じドキュメントを更新したとのことでmasterのドキュメントを参考にしてみた。
これが良くなかったんだけども。
こんな感じにpidの指定はいらないのか−と思ってたりType=notify
ってなに?🤔と思いつつ設定してみた。
[Unit] Description=gunicorn app service Requires=app.socket After=network.target [Service] Type=notify User={{ app_user }} Group={{ app_group }} ExecStart=/path/to/venv/bin/gunicorn \ --workers 2 \ --access-logfile /var/log/app/access.log \ --error-logfile /var/log/app/error.log \ --capture-output \ --log-level info \ app.wsgi:application ExecReload=/bin/kill -s HUP $MAINPID KillMode=mixed TimeoutStartSec=5 PrivateTmp=true [Install] WantedBy=multi-user.target
アプリは立ち上がるんだけどもapp.serviceのステータスがloadedのままで90秒で強制的にプロセスが終了。
なんで終了されるのかは、Type=notify
の場合はコード側で起動した事を知らせる必要があるみたいなんだけど、そもそも19.9とmasterではコードが異なってたので19.9ではその処理が入って無かった。
https://github.com/benoitc/gunicorn/blob/19.9.0/gunicorn/systemd.py
https://github.com/benoitc/gunicorn/blob/master/gunicorn/systemd.py
90秒で強制的に終了するというのは
1.リクエストが来る=>2.起動してなければ起動する=>1から90秒立つ=>落ちる=>1に戻る
なのでリクエストが来るたびに起動はするので動いてるようには見えるんだけど、処理のかかるリクエストだと途中で処理が終わって404が返ってきた。
初期データのcsvインポートが大量にあったので気づいたんだけども。
最終的にはapp.serviceをstopしてもリクエストを投げたタイミングで起動してactiveになって強制終了されることはなくなった。
結果として
- 19.9ではpidの指定が必要 gunicornにbindの指定は不要
- masterブランチではpidの指定は不要 gunicornにbindの指定は不要(多分)
に至ったんだけどもgunicorn次はいつリリースされるんだろう...
nginx
location / { proxy_pass http://unix:/run/app.sock; }
systemdの知識が少し深まったけどsocketの知識も深めないと...
はてなブログに引っ越した
引っ越したことを残すメモ。
最初はWordPressで運用してて、途中でBloggerに移動して、 でもデザインがアレだったのでCSSとかはレンサバにおいてたりして、 で、レンサバもつかってないので解約したりして、、
そこから更新が滞ってたわけだけども、
そろそろ何かアウトプットする場所が無いとなーと思っていた。
なんとなくはてなブログにインポートしてみようかなーと思ったらあっさり終わった。
参考URL: https://naonaorange.hatenablog.com/entry/2018/11/05/072241
被リンクも無い記事だったのでリダイレクトとかはせずに削除した。
XSERVERでwp-cliを動かす方法
とあるサイトをXSERVERに引っ越した。
せっかくなのでphp7でwordpressを動かしてみる。=>動いたので問題ない。
URLの変更とかパスの変更はwp-cli
でやろうと思って、
参考URL: エックスサーバーに wp-cli を導入する
を試してみたけど、PHP5.3で動いているのでarray syntaxでエラーが出て動かなかった。
php5.4で動かしていたのでテーマとかプラグインのarray syntaxは[]
に変えた。
調べると、/opt/php-7.0.3/
に色々あったので、
alias 'wp=/opt/php-7.0.3/bin/php ~/bin/wp-cli'
にした。
ちなみに、/opt
配下にその他のバージョンもあった。
php-5.4.13
php-5.4.25
php-5.4.26
php-5.4.35
php-5.4.45
php-5.5.0
php-5.5.10
php-5.5.19
php-5.5.30
php-5.5.9
php-5.6.15
php-5.6.18
php-7.0.0
php-7.0.3
今後バージョンアップしてもこの/opt
のパスに変えれば良さそう。
XSERVERでCakePHP3を動かす方法
XSERVERでCakePHP3を動かすとintl
がないよ。ってエラーになりました。
/opt
配下にphpize
とかあったので、追加で入れれるんじゃないのかな?って思ったらできました。
以下その手順。バージョンはphp7
icuをインストール
wget http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz
tar -zxvf icu4c-57_1-src.tgz
cd icu/source/
./configure -prefix=$HOME
make
make install
php-configを複製
cp /opt/php-7.0.3/bin/php-config ~/php7-config
vi ~/php7-config
extension_dir='/home/アカウント/php_extension' #intl.soの保存先変更
phpのソースをダウンロードする
wget https://github.com/php/php-src/archive/php-7.0.3.tar.gz
tar zxvf php-7.0.3.tar.gz
コンパイルしてインストール
cd php-src-php-7.0.3/ext/intl
/opt/php-7.0.3/bin/phpize
./configure --enable-intl --with-php-config=/home/アカウント/php7-config
make
make install
設定反映
vi ~/ドメイン/xserver_php/php.ini
extension=/home/アカウント/php_extension/intl.so #追記