freedom-man.com

ブログは俺のセーブポイント

Tag: linux (page 2 of 2)

Ubuntu 14.04@DigitalOceanのオレオレ初期セットアップ

DigitalOceanのVPSを検証用によく利用しているんですが、基本的な設定は全て自分で行う必要があります。特にsshd、iptables、ユーザの作成の部分は基本的には絶対にやらないといけない共通設定なので、備忘として残しておきます。OSはUbuntu 14.04です。

Continue reading

DockerのPrivateなリポジトリをs3に作る

Dockerはhttps://index.docker.io/にPublicなリポジトリを持てるんだけど

docker-registryっていうのをdockerイメージを使えば

Privateなリポジトリを超簡単に持てる&S3に永続保持できるらしいので試してみた。

 

Publicなところに、AWSのClientIDとかSecretKeyとかうっかり保存しそうな私みたいな人には超オススメ。

 

やりかたは超簡単でregistry立ててpushするだけ!

1. docker-registryをpullしてコンテナー化

registryもdockerで提供されているっていう。

 

2. registryのconfigファイル設定

 

config.ymlはこんな感じで。(S3の例)

 

サンプルは何故かs3_encryptとs3_secureが2つずつあったので

1つずつ削除しました。(ちゃんと動いているので多分OKだと思います。)

storage_pathは実際にS3に格納される時のサブディレクトリを指定します。

上記の例だと、test-docker/images/ ディレクトリ直下に実際のimageやらrepositoryが配置される感じです。

環境によって向き先を変更できるみたいで、例ではprod(本番)環境の設定をしています。

 

3. registryをcommitして再度立ち上げ

 

ここで環境変数SETTINGS_FLAVORをprodに設定しておかないとダメ。

ここで設定しない場合はデフォルトdevになって、

上記のconfig.ymlだとdevの定義が書いていないので楽勝でエラーになります。

(私の場合、”Config error: `secret_key’ is not set”というエラーが出て小一時間ハマりましたorz)

 

4. 既存のimageにtagを付けてpushする

とかでimageIDを調べた後

でtagを付けて

でpush!ここでs3にイメージが保存されます。

 

pullとかpushするときには明示的にRegistryにホスト名とポートを指定しないと

docker公式のrepositoryやユーザのpublic repositoryが置いてあるindex.docker.ioを利用して

明示的に指定した場合は対象のregistryを利用する形になります。

 

つまり、docker pull ubuntu って書くと

index.docker.ioにホスティングされたregistryから公式imageのubuntuを取得し

docker pull tzmfree/ubuntuって書くと、index.docker.ioの

ユーザtzmfreeのpublic repositoryからimageを取得します。

 

一方、docker pull localhost:5000/tzmfree/ubuntu とホストとポートを指定すると

localhost:5000のregistryからtzmfree/ubuntuというimageを取得します。

 

pushするためにはimageにlocalhost:5000というreigstryの指定が必要だから

docker tagでタグを付けてます。

(私もここらへんよくわかんないですが、とりあえずこういう書き方になるっていうことで!)

 

あと、tzmfreeというユーザ指定部分ですが、ユーザ名なので短い名前だったりすると

Invalid namespace name (tzm), only [a-z0-9_] are allowed, size between 4 and 30

って感じで怒られます。

imageの名前は何でも良いですが、付けるtagの名前はここらへんの命名規則に従う必要があるみたいです。

 

これでprivateなimageもデプロイ出来ます!

しかもimageはS3に永続的に保持される!

 

ちなみにDockerfile使えばbitbucketとかのprivateレポジトリ使えば

registryを使わずにprivateなimageをデプロイできるみたいです。

本当はgitとかでDockerfile管理しつつコードとして保持しておいて

imageをs3とかに保持しておくのが良いのかもですが

自分用のdockerであればimageオンリーってのは有りだと思います。

 

あと、今回のサンプルだとホストOSのポート5000を開けているので

別PCの別dockerクライアントでもpushできちゃうpublicなregistryになっちゃってるので

private registryにするにはiptablesとかhttps + basic認証とかで適切に対応する必要があります。

 

参考サイト:

docker-registry と Amazon S3 で作る自分だけのコンテナ倉庫(リポジトリ)

社内用Docker Registryを立てる

Private Docker Registryを、あっさりセットアップする

WindowsからSambaに繋ごうと思ったらクソハマった話

ただいま絶賛LPIC Level2の勉強中!

ということでSambaのお勉強してるんですが、WindowsからSambaサーバ(VM)に繋ごうとしたときにクソハマったのでそのお話。

Continue reading

herokuでdjango動かしてみる。

この冬はLPICの受験勉強!

→スマホとかPCから勉強できる自分用の単語帳的なアプリが欲しい!

→Androidアプリ開発者レベル1だからとりあえずWebアプリで早急に作ろう!

→手軽にホスティングできて、手軽に作れるフレームワークで!

→heroku + python + django!

 

ということで、linux環境からherokuでdjango動かすまでの備忘録。っていうかherokuガイドの日本語訳w

詳しいやり方はherokuのstartガイド参照↓

https://devcenter.heroku.com/articles/getting-started-with-django

 

ちなみにdjangoデプロイするときにherokuのwsgirefのpipインストールの時に

python3系だと何故かコケちゃうので、バージョンは2.7でデプロイしてます。

 

1. pipとかのインストール

 

※もしかしたらpython-setuptoolsインストールしなくてもイケるかも。

※sudo pip installとかやるとルートユーザ権限で実行される関係で、venvの環境外にインストールされちゃうっぽい。

 

2. djangoアプリ作成

 

3.Procfile(設定ファイル)作成

で、以下を入力↓

web: gunicorn hellodjango.wsgi

 

4. django起動確認

でブラウザでhttp://localhost:5000を開き、”It Worked!”が出ていることを確認。

 

5. インストールされているパッケージ一覧をrequirements.txtに記述

 

6. あとはお馴染みのherokuのデプロイコマンド

 

7. DB関連の設定

settings.py

 

wsgi.py

 

ローカルとの差異で注意すべきところは

dj_database_url.config() で取ってくるのは環境変数のDATABASE_URLの値になるので、

って感じで「ローカルに環境変数が定義されていなければ環境変数定義する」 的な記述をしておく。

あとはherokuにデプロイしたあとにheroku側でコマンド実行(heroku run)

 

※Pythonのバージョンを設定する場合は

アプリのルート直下にruntime.txtってのを配置して、runtime.txt内にpython-3.3.2って書けば良い。

サポートしているバージョンは以下の3つ

python-2.7.4(runtime.txtが無いときのデフォルトバージョン)

python-3.3.2

pypy-1.9

 

ちなみにdjangoアプリのディレクトリ内でlsするとこんな感じ↓

Procfile  hellodjango  manage.py  requirements.txt runtime.txt

 

結局はDBの設定とProcfile, requirements.txt, runtime.txt入れるだけ動きます。

基本requirements.txt以外は一回設定したら二度と設定しないので

heroku用のテンプレート作っても良いっすね。

 

EC2のubuntuにユーザ名ec2-userでログインできなくてハマった

EC2でubuntu立ち上げてec2-userでログインしようとしたら、

Permission denied(public key)が出やがる…。

 

以下の記事のように、各AMI毎にデフォルトのユーザ名が異なるみたいで、

ubuntuはユーザ名[ubuntu]でログインしないとダメみたい。

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/GettingStartedGuide/ec2-connect-to-instance-linux.html

 

当たり前のようにec2-userでログインしてきた私はAmazonLinuxのAMIしか使ったこと無いことがモロバレっすね…。

 

Newer posts

© 2017 freedom-man.com

Theme by Anders NorenUp ↑