見出し画像

VPS で Ubuntu に Cloud9 環境構築

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
※この記事では主に自分のメモ用として保存するために記事を書いています。
セキュリティー面の問題やその他諸々問題はあるかもしれませんが、そこはそれぞれ対応して下さい。(この記事ではrootでの作成例ですのでユーザーを作成等される場合はご自身でお願いします。)

ここで作成する環境は、自分のVPS内に直接Cloud9をGITから引っ張ってきて入れてます。
AWSと連携しているわけではありませんので、AWSにログインする手間がありません。
最後の方に出てくる http://000-00-000-000:8080/ide.html というURLにブラウザで繋ぐことが出来る端末であればBOTの起動管理も出来るので便利です。

内容は2020/12/16日現在の物です。(2021/09/30更新済み)
今後アップデート等でこの手順通りでは使えない事が出てくるかもしれません。
この記事の手順によって、正確に稼働するという保証もございません。
不具合の出た場合でも、私の方でのフォローはしかねますのでご了承ください。
なお、当記事に掲載された情報の利用により発生した又は当該情報に基づき行われた行為により発生したいかなるトラブル・損失・損害に対しても、当方は責任を負いません。
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


追記
2021/09/30 コマンドと手順を一部修正(GCPでもほぼ問題なく環境が作れました)


現時点では、サーバー作成時にUbuntu 20.04 を選択して作成しています。
(もし不具合がある場合はバージョンを落としてもいいかと思います)

画像1

また、自分の場合BOTごとにサーバーを作ることが多いので【t3a.micro】を使用していますが、複数のBOTを1つのVPSで動かす場合は【t3a.small】とかでいいと思います。
自分はこの手順でConoHaとAWSに環境を作って使用しています。

VPSのスペックに関しては以下tweetでこの話題になったのでリンクを張っておきます。

https://twitter.com/yutas001/status/1336700330654924800?s=20


では、作成開始していきます。

以下、Tera Term などを使ってVPSに接続しターミナルに記入。
Tera Termの使用方法などは調べて下さい。

この手順ではrootで環境を作ってますので、セキュリティー面を考えてそれぞれ好きなようにユーザー設定してください。

ConoHaもAWSec2もこの手順でだいたい問題無いかと思います。

ConoHaの場合は次の手順は飛ばして【パッケージ一覧を更新】からで大丈夫です。
----------------------------------------------
AWS EC2 VPS 初期設定

IPv4 パブリック IPを使用してTera Termでログイン
ユーザー名:ubuntu
認証方式 秘密キー(作成してあるAWSのkey.pemを指定)

Ubuntuのrootパスワード設定

$ sudo passwd root
Enter new UNIX password:○○○○○○ ← 設定をしたいrootパスワード
Retype new UNIX password:○○○○○○ ← 設定をしたいrootパスワードを再度入力
passwd: password updated successfully

$ su -
Password: ○○○○○○ ← 設定をしたrootパスワード
#

The GRUB boot loader was previously installed to a disk that is no longer present, or whose unique identifier has changed for some reason. It is
と出たら【Tab】keyにて【OK】→【Yes】で大丈夫
----------------------------------------------


更新作業

パッケージ一覧を更新

# sudo apt update

Ubuntu のパッケージの更新 - dist-upgrade サブコマンド
パッケージを最新に更新、不要なパッケージの削除、カーネルの更新をしてくれます。
sudo apt upgrade という似たようなコマンドもあるが、そちらはパッケージを最新に更新するのみとなる。

# sudo apt dist-upgrade

パッケージを更新

# sudo apt upgrade

apt-getをアップデート

# sudo apt-get update

更新に伴い必要なくなったパッケージを削除

# sudo apt autoremove

とりあえず必用そうなのを一通りインストール

# sudo apt install gcc make python2.7 nodejs npm git


日本語言語設定

# sudo apt-get install language-pack-ja
# sudo update-locale LANG=ja_JP.UTF-8

ここで[Ctrl]+[D]でいったん終了してから、Ubuntuを再起動

 ​sudo reboot

タイムゾーンをJSTに変更

# sudo dpkg-reconfigure tzdata

[アジア(Asia)]-[東京(Tokyo)]を選択して[Enter]キーを押す。

日本語マニュアルのインストール

# sudo apt -y install manpages-ja manpages-ja-dev

この時にエラーが出た場合は

# sudo apt update
# sudo apt -y install manpages-ja manpages-ja-dev

で大丈夫かと思われます。

コマンドを英語モードで実行するには?
デフォルト設定をそのままにして、特定のコマンドだけを英語モードで実行させたければ、そのコマンドの直前にロケール指定を付けて、「LANG=en_US.UTF8 date」のようにして実行する。

NTP(18.04TLS 時間同期

/etc/systemd/timesyncd.conf を編集

# vi /etc/systemd/timesyncd.conf

以下を追記

[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com

コメントアウトを外して情報通信研究機構のNTPサーバを設定する。

iで編集に移行

[Time]
NTP=ntp.nict.jp
#FallbackNTP=ntp.ubuntu.com

Escキーで編集モードから抜けて :wq で保存

# apt purge ntp

NTP再起動

# sudo systemctl restart systemd-timesyncd.service

確認

# sudo systemctl status systemd-timesyncd.service

以下のような感じで表示されればOK

root@000-00-000-000:~# sudo systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
  Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Active: active (running) since Sat 2019-10-12 12:12:14 JST; 15s ago
    Docs: man:systemd-timesyncd.service(8)
Main PID: 705 (systemd-timesyn)
  Status: "Synchronized to time server 133.243.238.163:123 (ntp.nict.jp)."
   Tasks: 2 (limit: 504)
  CGroup: /system.slice/systemd-timesyncd.service
          mq705 /lib/systemd/systemd-timesyncd

Oct 12 12:12:14 000-00-000-000 systemd[1]: Starting Network Time Synchronization...
Oct 12 12:12:14 000-00-000-000 systemd[1]: Started Network Time Synchronization.
Oct 12 12:12:14 000-00-000-000 systemd-timesyncd[705]: Synchronized to time server 133.243.238.163:123 (ntp.nict.jp).


CTRL+C で抜ける


PyEnv導入

Build系のパッケージを入れる

# sudo apt install -y gcc 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 liblzma-dev

PyEnvを持ってくる

# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

*~/.bashrcに追記

# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
# echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
# echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

bashrcの設定を読み込む

# exec $SHELL


Pythonを入れる

以下の好きなバージョンを入れる
基本は3.9.7で問題無いと思う

# pyenv install 3.7.3
or
# pyenv install 3.8.0
or
# pyenv install 3.9.7

以下のような表記になればOK

root@〇〇〇-〇〇-〇〇〇-〇〇〇:~# pyenv install 3.8.0
Downloading Python-3.8.0.tar.xz...
-> https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
Installing Python-3.8.0...
Installed Python-3.8.0 to /root/.pyenv/versions/3.8.0

常用するPythonのバージョンを指定(上で導入した物を選べばOK)

# pyenv global 3.7.3 
or
# pyenv global 3.8.0 
or
# pyenv global 3.9.7 

pip 系のインストール

# pip install colorama
# pip install requests

等(後から追加できるのでここで全部入れる必要は無いです)

pipの更新がある時は

# /root/.pyenv/versions/3.9.7/bin/python3.9 -m pip install --upgrade pip

等のコマンドで対応(ターミナルに表示されるのでそれをコピペでOK)


Cloud9をインストール、起動

# git clone git://github.com/c9/core.git c9sdk
# cd c9sdk
# scripts/install-sdk.sh

以下のように表示されればOK

-----------------------------------------------------
Success!
run 'node server.js -p 8080 -a :' to launch Cloud9

workspace作成(workspaceの部分はお好きなように)

# mkdir workspace

ディレクトリが作成出来てるかの確認

# ls -ld workspace

以下のように表示されればOK

root@000-00-000-000:~/c9sdk# ls -ld workspace
drwxr-xr-x 2 root root 4096 Oct 12 15:35 workspace
# cd


VPS上でcloud9を立ち上げっぱなしにする。

forever をインストールする。(passwordを聞かれたら入力してEnter)

# apt install npm
# sudo npm install -g forever

ここでエラーが出る場合は以下を参照にnpmを最新のものに更新する

# npm install -g n
# n latest
# node -v
# npm update -g npm
# npm update -g

最新にしてしまうとエラーが出る時は

# n v13.13.0
# n

でバージョンを13.13.0とかにしておくと大丈夫そう。

foreverの再インストール

# sudo npm install -g forever

forever を使ってcloud9を起動させる。

# forever start ~/c9sdk/server.js -l IPアドレス -p 8080 -w ~/workspace/ -a ユーザー:パスワード
例. # forever start ~/c9sdk/server.js -l 123.45.678.901 -p 8080 -w ~/workspace/ -a yutas:abcd1234

以下の様に表示されればOKです。

root@000-00-000-000:~/c9sdk# forever start ~/c9sdk/server.js -l 000-00-000-000 -p 8080 -w ~/workspace/ -a root:pass
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: /root/c9sdk/server.js

これでTeraTermは終了してもOK

補足
forever実行中ものをの表示したい場合
# forever list
Cloud9 IDE を停止する場合
# forever stop ~/c9sdk/server.js


ブラウザでVPS上に作成したcloud9にログイン

以下URLをブラウザで開く。

http://000-00-000-000:8080/ide.html
000-00-000-000の部分は自分のIPアドレス


現環境の確認

# python --version
# which python
# pip --version


以下個人的メモ

Cloud9画面の左の歯車をクリックし
【Show Home in Favorites】【Show Hidden Files】にチェックを入れてターミナルを開いて

# cd ~
# ln -s / root

するとworkspaceにrootディレクトリを表示出来る

画像2

これ結構便利です。


個人的に入れる(よく使う)物リスト。(上から順番に入れとけばだいたいOK)

# cd
pip install simplejson
pip install datetime
pip install ccxt

pip install pybitflyer
pip install websocket-client
pip install -U websocket-client
pip install selenium
pip install requests
pip install pandas
pip install BeautifulSoup4
pip install colorama
pip install matplotlib
pip install numba

pip install discord.py
pip install aiohttp
pip install -U aiohttp
pip install pytz
pip install bravado
pip install numpy
pip install Pillow
pip install plotly
pip install bitmex
pip install jwt
pip install python-dateutil
pip install pyyaml
pip install sortedcontainers
pip install oauthlib
pip install watchdog
pip install mysql-connector
apt install mysql-server mysql-client
pip install influxdb
pip install rainbow_logging_handler
pip install dictdiffer

httpingインストール

# sudo apt-get update -y

# sudo apt-get install -y httping

# httping -V

コマンドメモ

# httping -c 100 https://api.bitflyer.com/v1/getmarkets

# httping -c 100 http://api.bitflyer.com/v1/ticker

# httping  -s  -Y --offset-yellow 80 --offset-red 100 -c 10 https://api.bitflyer.com/v1/getmarkets

[Ctrl+C]で終了

キャッシュ削除関連

参考URL
https://hodalog.com/clear-memory-cache-or-swap-in-linux/

メモリの使用状況を確認するコマンド

# vmstat -S m

ページキャッシュのみクリア

# sync; echo 1 > /proc/sys/vm/drop_caches

dentryとinodesのクリア

# sync; echo 2 > /proc/sys/vm/drop_caches

ページキャッシュとdentry、inodesのクリア

# sync; echo 3 > /proc/sys/vm/drop_caches

スワップキャッシュをクリア

# swapoff -a && swapon -a



以上でConoHaとAWSへのCloud9導入は問題無いかと思います。
他は使ってないのでわかりませんが、おそらく大丈夫かと。。。




Twitterもやってます^^

- - - - - - - - - - - - - - - - - - - - - - - - - -
【迷探偵ゆうたす】を気軽にフォローしてくださいね♪
:……:……:……:……:……:……:……:……:……:……:
■最新情報はTwitterにて配信中♪
https://twitter.com/yutas001?lang=ja
:……:……:……:……:……:……:……:……:……:……:


おすすめの記事

TradingView(トレーディングビュー)登録手順解説!
無料体験で全機能お試し!





サポートして下さる皆さんへ! 本当に感謝です☆ これからも良い内容の記事を書いていければと思います^^