Python学習【365日チャレンジ!】253日目のマスターU(@Udemy11)です。
昨日は、2匹目のどじょうを狙いにエギングに行ってきました。
普通なら、空振りで終わるのがパターンなのですが、昨日の私はこれまた絶好調!
一昨日を上回る9杯のアオリイカをゲットすることができました。
釣れたら釣れたでさばくのが大変なんですよね。
魚ならちゃっちゃとさばけるようにはなってきたのですが、アオリイカはこれまでにそんなにさばいていないので、要領がつかめず夜中までかかってしまいました。
寝不足でつらいのですが、大満足のエギング釣行でした。
それでは今日もPython学習を始めましょう。
昨日の復習
昨日は、Fabricの出力結果にカラーを付けてわかりやすく表示する方法を学習しました。
出力結果が長くなると中身を判別するのに時間がかかってしまいますが、出力内容によってカラーを変更することで、出力結果を見やすくすることができました。
詳細については、昨日の記事を参考にしてみてください。
今日は、Fabricでサーバーにアプリケーションを自動でインストールする方法を学習しますが、まずはウォームアップからスタートします。
fabfile.py
fabric.py
を変更します。
ffrom fabric.api import *
from fabric.colors import *
from fabric.contrib.files import *
env.hosts = ['root@172.16.200.101:22']
env.passwords = {'root@172.16.200.101:22': 'root'}
env.roledefs = {
'common': ['root@172.16.200.101:22'],
'web': ['root@172.16.200.101:22'],
}
@task
@roles('common')
def install_packages():
run('apt-get install -y software-properties-common')
run('add-apt-repository universe')
run('apt-get update')
run('apt-get install -y python-setuptools')
run('easy_install pip')
@task
@roles('web')
def deploy_web():
run('apt-get install -y supervisor')
run('apt-get install -y gunicorn')
@task
def deploy_dev_server():
install_packages()
deploy_web()
print(green('success'))
順番にコードを確認してみましょう。
install_packages()
最初にインポートしているのは、これまでに学習したfabric.api
とfabric.color
、fabric.contrib.files
の3つです。
5行目から10行目のコードでserver1
のみを使って、サーバー共通のツールをインストールするcommon
のrole
を追加しています。
まずは、関数install_packeges
で共通で使うツールをインストールします。
api-get
は、apt-get [スイッチ] [オプション] [パッケージ]
という使い方をするLinuxのコマンドで、14行目はosのubuntuにsoftware-properties-common
を-y
オプションでインストールします。
オプションの-y
は、通常ならYesかNoの確認が出るところをYesにする意味があります。
次に15行目のadd-api-repository
でレポジトリにuniverseを追加します。
16行目でapi-get
をアップデートして、17行目でpython-setuptools
をインストールします。
最後に18行目でpip
が使えるようにしてcommon
の設定は完了です。
次は、web
の関数deploy_web
の設定です。
deploy_web()
webサーバーには、関数deploy_web
の23行目、24行目でsupervisor
とgunicorn
をインストールしています。
酒井さんの講座の中では、25行目でpip
を使ってFlaskのバージョン0.12.2をインストールしています。
レクチャーの内容が古いこともあって、Flaskのインストールでエラーが起こるので、今回は、25行目を削除して実行してみました。
deploy_dev_server()
最後の関数deploy_dev_server
は、用意した関数を2つ実行し、問題なくコードが終了すれば、緑色でsuccess
と表示されるコードです。
ターミナルから実行
コードが完成したら、ターミナルからmain
サーバーに接続して、fabfile.py
が保存されているディレクトリまで移動します。
そのあと、いつものようにコマンドfab deploy_dev_server
を実行すれば、common
に自動的に共通のツールとwebに指定したツールがインストールされて最後に緑色でsuccess
が出力されて完了です。
途中でエラーが起こる場合はスペルミスなどが考えられるので、コードを見直しましょう。
私自身、コマンドを実行するときに起きるエラーはほとんどがスペルミスで、ほんといつも気を付けないといけないなと感じつつ、同じことをやってしまっている自分がいます。
慌ててタイプすると間違ってるんですよね。
まとめ
自動化ってプログラミングの醍醐味なので、コマンドを実行して、処理が進んでいる画面を見ると、ちょっと気分がよくなるんですよね。
でも、流れが速すぎて何をしているのかわからないので、きちんとできてるかどうか不安な気持ちも少しはあります。
この不安感って、効率化を進める妨げになってるんじゃないかと思うんです。
新しいものへの不安感や目に見えるものだけしか信じられない人は、作業を自分でやらないと気が済まないわけで、そんな人は、自分以外を信用していないのかもしれませんね。
それでは明日もGood Python!