26

さくらのVPSのストレージ変更オプションでえらい目にあった

このサーバーとは別のサーバーでさくらのVPSを借りているのですが、一番安いプランだとディスク容量が25GBでして、使用量が90%を越えている状態でした。 一回500円払えばストレージが倍になるオプションがあったので、試してみました。 そしたらネットワークがつながらない事態に。 ネットワーク設定をしましたが復旧せず。多分設定ミスがあったんでしょうね。同じ内容とは思われるけど、事象が同じ人の書かれている通りにコマンドを打ったら接続できるようになりました。 午前1:30から始めて3時間ぐらいかかりました。本当はmattermostとかnextcloudのメンテをしようと思ってたのに・・・ sshもつながったし、matttermostのサービスを立ち上げようとしたらnginxが死んでました。よくよくみたらletsencryptがなくなってました。ufwもなくなってるし、どうなっとんねんでした。 letsencryptを再インストールしようにもDNSが動かなかったので、/etc/resolv.confにnameserver 8.8.8.8を追加してaptが動くようにして、letsencryptをインストールして、設定をして、結局朝の5時までかかりました。 どういう仕組でストレージを変更してるんでしょうね?OSの端々に影響が出るって、よく分からないです。 すごい苦労はしましたが、ストレージは元のパーティションをリサイズして倍にすることができて良かったです。

17

サーバーが重かった原因について

ほとんど何も動いていないにもかかわらず、このサーバーのblogがもっさりとしていると思っていました。何でだろう?mysqlのメモリ使用率が高いので、それが原因かな?と思いつつtopを眺めていたところ、systemd-journalが時折高負荷になっているのが見えました。ls -ltr /var/logを何回か叩いているとmail.log、syslog、dovecot.logあたりが結構な頻度で更新されてました。 ログを開いてみてたら、postfixに対する攻撃を受けてたやつでした。iptablesで弾いたりはしていますが、うざいです。これまでの対策に追加してfail2banの設定を追加して、ひとまずは様子見です。 参考にしたurlは以下。

23

C/C++のソースコードを生成するツール

ソースをささっと書きたい、でも後で使うときに備えてそれなりの体裁に整えておきたい。そんなニーズを満たすべく、ソースコードを吐き出すツールを作っています。 https://github.com/vottie/codegen 使い方ですが、codegen.sh cって打つと、以下のような形でプロジェクト名とファイル名を入れてくださいって表示されます。 hello world的なものをやりたいなぁですと、 これでhelloってディレクトリができます。その中に入って見ると、以下のファイルが出来上がっているはずです。 私はMakefileを書くのは苦手です。コピペして作れば良いとは思うんですけど、さくっと書いて動かしたい時に、ニーズにあったMakefileを探すのが面倒だったり。ですので、Makefileを自動生成するツールを作ってみました。 上記のソースについては、execute()の中身を実装してmain.c側で呼び出してあげるように実装し、makeを実行すれば、mainという実行ファイルができると思います。

15

WSL2とかdocker for windowsとか面倒臭くなった

windows上でlinuxを立ち上げるのは簡単になった。 しかし、実際WSL2上で作業してたらgit cloneがなぜだか失敗するだとか、docker側であけたportが、Nortonのファイアーウォールのせいか見えないだとか、本筋に至るまでのトラブルが多く、嫌になったのでデュアルブートでUbuntu 20.04を立ち上げるようにしました。ブートローダーが動くので家族からは不評。でも最近のパソコンは起動/停止が速いので、Linuxに立ち上げ直すのも全然苦じゃないです。

23

書くのがおっくう

プラグインをいろいろ入れてるせいか、何か書こうと思うと入力項目が多すぎて書くのがおっくう。特にスマホからだと苦痛。。。ムダは省いて気軽にログを残せるようにしたいと思います。

07

サーバーのOSをアップデート

ubuntuのLTS 18.04が出たので、OS入れ替えたのが約1ヶ月前。 blog動かして、データも復元したのがつい最近。 本当にやる事が遅くて、このペースだと死ぬまであっという間な気がする。 死ぬる時には、何かをやりきった気になりたい。

02

Mac Bookのアップデート

El Capitanにアップデートした。 前のYosemiteの時はbrewが動かないとかあったけど、今回はすんなりできた。他になんかあんのかな?と思ってxcodeを動かしてみたけど、一応動いた。何も作ってないので、あまり確認のしようがなかった。 Eclipseはjavaのバージョンがどうこう言われて動かなかった。たぶん大分前からそうだったんだろうな…

02

vagrantでdjangoでユーザ認証

ユーザ認証して、認証後のユーザ利用まで動作できたのでまとめる。 できたけど、フレームワークが提供してくれてるがいろいろ面倒くさい。 djangoって結構自前で作る部分が多いかと思うので、フレームワークがやってくれるのか、そこは自前なの?!、とかが分からなくてしんどかった。 Djangoのユーザ認証まとめ | c-bata web とはいえユーザ認証する部分は上記サイトをまるまる参考にさせていただきました。 せいぜいurls.pyの書き方が違うくらい。 ユーザ認証を別のアプリケーションから利用するところが今回の記事のメインなんだけど、モデルを起こすところも、c-bata webさんの記事を参考にさせてもらいました。しかし、差分だけ書くと作業の流れがわかりにくいので丸々書く。 アプリケーションをこさえる。todoを残すだけのアプリ。 $ python manage.py startapp todo setting.pyのINSTALLED_APPSにtodoを追加。 +++ b/django_auth/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = ( ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘account’, + ‘todo’, ) urls.pyにルーティングを追加。 +++ b/django_auth/urls.py @@ -23,5 +23,6 @@ urlpatterns = [ url(r’^logout/$’, ‘django.contrib.auth.views.logout’, {‘template_name’: ‘account/logout.html’}), url(r’^account/’, include(‘account.urls’, namespace=’account’)), + url(r’^todo/’, include(‘todo.urls’)), ] モデルを定義。外部キーとしてdjangoのUserモデルを指定。 admin.py。 todo/urls.pyはフレームワーク生成ではなく、自分で作成。表示のみ。更新はadminからやる。 views.py。何をこんなにimportしなきゃいかんのか分かってないけど、やる。しょうがない。まだdjangoはチュートリアルと、これしか作ってないし。 テンプレートの追加。ディレクトリ構成が気持ち悪いけど、他の書き方がよく分からない。 % mkdir -p todo/templates/todo/ % touch todo/templates/todo/index.html あとはDBを更新すれば出来上がり。 % python manage.py makemigrations % python manage.py migrate 出来上がったのはこれ。ログイン後にhttp://127.0.0.1:8080/todoとかでアクセスすれば、adminで追加したメモがUser毎に表示されるハズ。 https://github.com/vottie/django_auth 苦労したのはtodoのviews.pyでどうやればUserを利用できるか、だった。 結果Userモデルをimportしてあげることで解決できた。 もう1点はListViewでどうやればログインしたUserがGETできるかだったが、ドキュメントをしらみつぶしに読んでいったらUserはRequestオブジェクトに入っていることが分かって、ListViewのselfはrequestオブジェクトを含むことが分かって解決した。 最後に今回の環境は以下。 vagrant ubuntu14.04 python 3.4.3(pyevn) django 1.8

10

vagrantのport forward

djangoをvagrantにインストールしたのだけれど、runserverしてもホスト(この場合はmac)側のブラウザで管理画面が見えない。ポートフォワードの設定がおかしくなってる。 具体的にはguest:8000, host:28000で定義しているにもかかわらず、ホスト側からはlocalhost:18000でアクセスできてしまう。 ポートフォワードせずにvm上でw3mでアクセスするとguestのポートは8000であることは確実。 なぜにポートフォワードがトチ狂うのか?と思ってたが、vagrantのgunicornの設定で8000番を使ってて、かつ18000番にポートフォワードしてた。。。 vagrantでは28000番を使って、ホスト側は28001番のフォワード設定で解決した。と思いきや、ぜんぜんつながらない。 tcpdumpまでひっぱりだして3,4晩ウンウン唸ってたけど、”django vagrant”でググったら一発で解決した。   5分でできるVagrantでDjangoの環境構築 | qiita そういえばrailsか何かでハマったような気もする…