概要
本記事では,GCEのUbuntuにおいて,Python環境を作ります.
(vimの設定等は適宜ご自身で行ってください.)
具体的にやることは以下です.
- サービスアカウント→ユーザーアカウントに変更
- zshを入れる
- Pythonを入れる
- Powerline-shellでカスタマイズ
- Jupyter notebookを使えるようにする
- Stackdriver Monitoring Agentを入れる.
初期設定
初期状態では,サービスアカウントが内部で使われます.
色々と面倒なので,自分のユーザーアカウントでログインしておくことを推奨します.
gcloud init
色々聞かれるので,言われたとおりに認証して,verification codeを貼ります.
zshの導入
まず,zshをinstallします.
sudo apt-get install zsh -y
その後,デフォルトのshellをzshにしたいのですが,パスワードがわからないため, chsh
コマンドが動きません.(やり方あったら教えて欲しい)
そのため,
vim ~/.bashrc
などでbashrcを開いて,末尾に
exec /usr/bin/zsh
を挿入します.これでデフォルトのshellがzshになりました.
oh-my-zshを入れる
続いて,oh-my-zshを入れます.
(個々人のこだわりがあるかと思うので,こだわりのあるかたは Python環境の構築 までスキップしてください.)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
デフォルトのシェルを変えるかみたいなこと聞いてきますが当然 no
にしてください.
外部プラグインとして,以下を入れます.
- zsh-syntax-highlight
- zsh-autosuggest
- zsh-history-substring-search
- zsh-completions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
一旦ここで,zshrcを変更しましょう.
export ZSH="${HOME}/.oh-my-zsh"
ZSH_THEME="candy"
plugins=(
git pip pyenv virtualenv zsh-syntax-highlighting zsh-autosuggestions history-substring-search zsh-completions
)
source $ZSH/oh-my-zsh.sh
編集したら,一旦読み込みます.
source ~/.zshrc
Python環境の構築
pyenvとvirualenvを使ったよくある仮想環境構築を行います.
まずは,pyenvとvirtualenvをインストールします.
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshenv
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshenv
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshenv
source ~/.zshenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshenv
source ~/.zshenv
好きなバージョンのPythonをインストールします.
例えばこのような感じ.
pyenv install 3.6.5
pyenv virtualenv 3.6.5 default_env
pyenv global default_env
powerline-shellのインストール
ここもこだわりがある人はSkipしてください.
まず,現在の仮想環境にpowerline-shellを入れます.
pip install powerline-shell
その後,再びzshrcを以下のように編集してください.
export ZSH="${HOME}/.oh-my-zsh"
ZSH_THEME="candy"
function powerline_precmd() {
PS1="$(powerline-shell --shell zsh $?)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" ]; then
install_powerline_precmd
fi
plugins=(
git pip pyenv virtualenv zsh-syntax-highlighting zsh-autosuggestions history-substring-search zsh-completions
)
source $ZSH/oh-my-zsh.sh
export LC_ALL="en_US.UTF-8"
export LANG=ja_JP.UTF-8
#---------------------- 以下,私的設定なので割愛してください ----------------------#
#historyファイル指定
HISTFILE=$HOME/.zsh-history
HISTSIZE=1000
SAVEHIST=10000
#コマンドじゃなければ cd する
setopt auto_cd
# 補完候補を一覧表示
setopt auto_list
# TAB で順に補完候補を切り替える
setopt auto_menu
# カッコの対応などを自動的に補完
setopt auto_param_keys
# ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash
# コマンドミスった時のcorrect
setopt correct
# 補完候補一覧でファイルの種別をマーク表示
setopt list_types
# 明確なドットの指定なしで.から始まるファイルをマッチ
setopt globdots
# ファイル名の展開でディレクトリにマッチした場合 末尾に / を付加
setopt mark_dirs
# 語の途中でもカーソル位置で補完
setopt complete_in_word
# カーソル位置は保持したままファイル名一覧を順次その場で表示
setopt always_last_prompt
# ビープを鳴らさない
setopt nobeep
# vcs有効化
setopt prompt_subst
# #以降をコメントとして扱う
setopt interactive_comments
# ヒストリの共有
setopt share_history
# ヒストリに追加されるコマンドが古いものと同じなら古いものを削除
setopt hist_ignore_all_dups
更にカスタマイズします.
mkdir -p ~/.config/powerline-shell && powerline-shell --generate-config >
以下の2ファイルを作成します.
from powerline_shell.themes.default import DefaultColor
class Color(DefaultColor):
USERNAME_FG = 15
USERNAME_BG = 4
USERNAME_ROOT_BG = 1
HOSTNAME_FG = 15
HOSTNAME_BG = 10
HOME_SPECIAL_DISPLAY = False
PATH_FG = 15
PATH_BG = 70
CWD_FG = 231
SEPARATOR_FG = 0
READONLY_BG = 1
READONLY_FG = 7
REPO_CLEAN_FG = 14
REPO_CLEAN_BG = 0
REPO_DIRTY_FG = 3
REPO_DIRTY_BG = 0
JOBS_FG = 4
JOBS_BG = 8
CMD_PASSED_FG = 255
CMD_PASSED_BG = 136
CMD_FAILED_FG = 255
CMD_FAILED_BG = 1
SVN_CHANGES_FG = REPO_DIRTY_FG
SVN_CHANGES_BG = REPO_DIRTY_BG
VIRTUAL_ENV_BG = 31
VIRTUAL_ENV_FG = 231
AWS_PROFILE_FG = 7
AWS_PROFILE_BG = 2
TIME_FG = 255
TIME_BG = 246
{
"segments": [
"virtual_env",
"aws_profile",
"ssh",
"cwd",
"git",
"git_stash",
"jobs",
"read_only",
"newline",
"set_term_title",
"svn",
"time",
"exit_code"
],
"cwd": {
"max_depth": 4,
"max_dir_size": 10,
"full_cwd": 1
},
"mode": "patched",
"theme": "~/.config/powerline-shell/original_color.py"
}
注意
- 仮想環境内にpowerline-shellがないとおかしくなりますので毎回
pip install
してください. - 文字化けする場合は,以下を参考にフォントを入れるとなおります.(自分は
Roboto Mono for Powerline
を使ってます)
Jupyter Notebookの設定
そのままだとJupyterが使えないので設定します.
以下のサイトのjupyterの設定以降を行えばJupyterを使えます.
参考:https://rf00.hatenablog.com/entry/2018/01/01/160820
※sshが切れるとJupyterが落ちちゃうので,tmuxを立ててその中でJupyterを使うことを推奨します.
Stack Driver Monitoring Agentを入れる
GCEのリソース監視にStack Driver Monitoring Agentをお勧めします.
入れると詳しいメモリー使用率などがこちらの右上のHOSTタブの隣のAgentタブから確認できるようになります.
(ただし,別途課金がかかるので注意)
公式の通りにインストールします.
デフォルトだと1分ごとにデータを送信しますが,課金量が気になるので3分毎にデータを送信するように変更します.
sudo vim /etc/stackdriver/collectd.conf
Interval 180 # Interval 60から変更
# 以下変更なし
sudo service stackdriver-agent restart