こんにちは,しまさん(@shimasan0x00)です.
最近ようやくGCP(Google Cloud Platform)を使おうという気持ちになったのでその環境構築をするまでのメモになります.
従量課金制はAWSの話を聞いて少し怖いのですがしっかりとモニターすることで回避していきたいと思います(というかGCPにレポート機能があるのでそれにお任せしてますが).
今回はいわゆる永久無料枠(Always free)を使用しての構築になります.
環境
VMインスタンス : f1-micro(0.6GB)
-HDD : 30GB
-OS : CentOS7
-python 3.6.8
スポンサーリンク
永久無料枠のVMインスタンス構築
永久無料枠でのGCPにおけるインスタンス構築は以下の2つの記事が大変参考になりました.
これらの記事通りに実行するとVMインスタンスが生成され,sshで自身のPCからアクセスできる状態になっていると思います.
セキュリティ部分はしっかりと読んでおくことをオススメします.
余計なアクセスを許して課金するのはとてもバカバカしいです.
注意点としては,インスタンスを作成したらdefault-allow-sshのポートは22ではないので変更しましょう.22にしたらsshしてログインし,sshd_configの設定,firewalldでのssh.xmlの編集をすることで自身の望むポートの変更をしましょう.その際,GCPのファイアウォールルールを追加するのを忘れないように.
スポンサーリンク
Python環境構築
デフォルトではpython2.7.15のみが入っているのですがやはりpython3系が使いたいしOSのpythonを汚したくないのでpyenv環境を作成することにします.
ライブラリのインストール
sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel
pyenvのインストール
sudo curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
bash_profileもしくはbashrcに設定を追記
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
追記したらsource ~/.bash_profile
しましょう.
ということでここまでくればインストールするのみ…なのですが以下のメッセージが出てきてインストールすることができません.
pyenv install 3.6.8
Downloading Python-3.6.8.tar.xz...
-> https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
Installing Python-3.6.8...
packet_write_wait: Connection to x.x.x.x port XXXXX: Broken pipe
何回かやってもダメなのでふむ…と思ってGCPのコンソール画面を見てみると

やりすぎですね.
cpuに制限をかけてインストールをしなくては…
ということで以下のコマンドでCPU使用率80%でいきたいと思います.
cpulimit -l 80 pyenv install 3.6.8
そもそも0.6GBのVMですし無料枠のスペックですから結構いい感じに時間がかかります.
インストールが終わったら,
pyenv global 3.6.8
でグローバル設定を行います.
python -V
でバージョンを確認しておいてください.
もし必要なパッケージを用意できているならscpコマンドなどでrequirements.txtをサーバーに送り,
pip install -r reuirements.txt
でインストールすると良いと思います.
※scpを使用する場合(Mac)
scp -i ~/.ssh/秘密鍵 -P SSHで設定したポート requirements.txt ユーザー名@ドメイン名(IPアドレス):/home/ユーザー名
さいごに
今回はGCPの永久無料枠で立てたVMでPython環境の構築を行いました.
CPU利用率には気をつけて使いたいと思います.
p.s.
mecab-ipadic-neologdをインストールしようとするとstd::bad_allocと出ます.
メモリ不足ですね. やはりメモリ0.6GBは少ないかも…