自作したpython botプログラムを24時間稼働させるためにレンタルサーバーの契約を検討していたのですが、ブログで使っているConoha Wingを流用できました。
ConoHa WingのサーバーにはCentOS系Linuxが入っており、sshで接続してコマンドラインから操作可能です。今回の記事ではpythonプログラムを動かすためにminicondaを導入する方法を紹介します。
ConoHa Wing上でconda環境構築する方法
1. ConoHaからSSHキーを取得(サーバー側の準備)
まずはConoHaにログインして『サーバー管理』→『SSH』→『+ SSH Key』の順にクリックします。
登録方法は自動生成、ネームタグは特に理由が無ければデフォルトの日付で大丈夫です。そのまま保存をクリックします。
最後にダウンロードをクリックしてプライベートキーを入手します。このプライベートキー(pemファイル)は絶対に他人に公開しないでください!悪意のある第三者に渡るとサーバーを不正利用される恐れがあります。
以上でConoHa Wingのサーバー側の準備は終わりです。
2. SSHでConoHa wingサーバーに接続
ここから先はWSLのコマンドラインで操作していきます。
pemファイルのアクセス権限を強化
入手したpemファイルをアクセスキーとしてsshでサーバーに接続できるのですが、その前にpemファイルのアクセス権限の変更が必要です。ダウンロードしたままそのまま使うと、”Permissions 0644 for ‘xxxxx.pem’ are too open.”というエラーメッセージが返ってきます。
ターミナルからpemファイルのディレクトリに移動して以下のコマンドでアクセス権限を変更します。
$ chmod 600 xxxxx.pem # アクセス権限の変更
$ ls -l # アクセス権限の確認
-rw------- 1 [user] [usergroup] [other] ----- xxxxx.pem
出力の先頭が”-rw——-“となっていれば[user]にしか読み込み、書き込み権限がないことを意味しています。アクセス権限について詳しく知りたい方はこちらのQiitaの記事が大変参考になります。
Linuxの権限確認と変更(chmod)(超初心者向け) – Qiita
SSH接続
再びブラウザからConoHaのサイトに行き、先ほど登録したsshの内容を確認します。
上記のユーザー名、ホスト名、ポート番号、それに加えてpemファイルのパスを使って以下のコマンドを入力すれば、サーバーに接続できます。
$ ssh [ユーザー名]@[ホスト名] -p [ポート番号] -i [pemファイルのパス]
入力後にコマンド先頭のユーザー名がConohaのものに変わっていれば成功しています!私のケースでは接続と同時にperl関連のエラーメッセージが数行出てきますが、perlを使う予定はないので無視しています。
SSH接続コマンドの簡略化
毎回上記の長いコマンドを入力するのは手間なので、簡易入力する方法も紹介します。
.sshの配下にconfigファイルを作成します。WSLの場合はhome直下に”.ssh”の隠しディレクトリがあります。
$ cd ~/.ssh
$ vim config
configに以下を追記します。ここ指定するpemファイルのパスは絶対パスにしましょう。
## ConoHa Wing
Host conoha # 簡略名
Hostname [ホスト名]
User [ユーザー名]
Port [ポート番号]
IdentityFile [pemファイルのフルパス]
configファイルを作成後は以下の簡略コマンドでsshに接続可能です。
$ ssh conoha # configのHost行で指定した簡略名
これで毎回ユーザー名などを確認する必要がなくなります。sftpで接続する際もここで指定した簡略名が使用できます。
3. サーバー上でminiconda環境構築
ここからはサーバー上にminicondaをインストールしていきます。Anacondaは容量が大きい割に使わないパッケージが多すぎるのと商用利用有償化の件もあって、私はminiconda派です。
$ wget --no-check-certificate https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ sh Miniconda3-latest-Linux-x86_64.sh
....
[Enterキーを押しながらポリシーを読んでいく]
["yes"と入力]
[install先の指定]
["yes"と入力]
....
これでインストール完了です。wgetでshファイルをダウンロードする際に”–no-check-certificate”オプションを指定していないとエラーになります。(理由は理解していません汗)
condaを有効にするためにssh再接続し、condaコマンドが使えることを確認しましょう!これでpython系のbotプログラムをサーバー上で運用する準備が整いました。あとは皆さんのコードをローカルからsftpなどで転送して、サーバー上で実行してみましょう!
Botプログラム運用時の注意点
ConoHa Wingサーバーでは定期的に指定したプログラムを実行させるcronが使えます。Pythonコード上でsleepを使った無限ループを構成するのではなく、cronで定期的にプログラムを実行させるようにしましょう。
最初は無限ループで作ったのですが、実際にプログラムをサーバー上で動かしたら1日1回ぐらいの頻度で定期的にキルされてました。
またCPUやメモリを食うプログラムを走らせると、自分のブログが重くなってしまう恐れがあるので注意してください。
コメント