CentOSな VPS 上にCloud9 IDEをインストールする手順(走り書き)
こんにちわ。DuelMaster@イナトレです。本書は自分が作業したときの走り書きメモになります。細かいところを振り返って検証してないので、抜けがあったり正しくない部分があるかもしれませんが、ご承知起きください。その代わり本記事は 100 円有料記事ですが、全記事無料で読むことができます。参考になりましたらコーヒー代と思って購入いただけると喜びます😊
さて、タイトルに興味を持って本記事を読んでくださる皆様は、おそらく何かしらの Bot を動かしておられる方々であろうことかと思います。ちょっと前に下記ツイートが目に止まりました。
さて、皆さんの多くの方は AWS Cloud9 で Bot を動かされていることでしょう。でも強 Botter の方々は VPS でより反応速度が早い VPS を借りて Bot を動かしておられることでしょう。何を隠そう私も ataruzo サービス移設に伴ってちょっと前に AWS 東京リージョンから、とある VPS へお引越しをしたところです。どこを使っているかくらいはご自身で調べるべきだと思うので書きませんが、簡単に調査するなら httping が便利でしょう。
● AWS 東京リージョン
$ httping https://api.bitflyer.jp/v1/board
Auto enabling SSL due to https-URLPING api.bitflyer.jp:443 (/v1/board):
connected to 23.10.0.212:443 (589 bytes), seq=1 time= 55.92 ms
connected to 23.10.0.212:443 (589 bytes), seq=2 time= 27.31 ms
connected to 23.10.0.212:443 (589 bytes), seq=3 time= 20.07 ms
connected to 23.10.0.212:443 (589 bytes), seq=4 time= 29.54 ms
connected to 23.10.0.212:443 (589 bytes), seq=5 time= 73.17 ms
● とある VPS
$ httping https://api.bitflyer.jp/v1/board
Auto enabling SSL due to https-URL
PING api.bitflyer.jp:443 (/v1/board):
connected to 23.2.143.239:443 (589 bytes), seq=4 time= 16.39 ms
connected to 23.2.143.239:443 (625 bytes), seq=5 time= 9.62 ms
connected to 23.2.143.239:443 (624 bytes), seq=6 time= 9.52 ms
connected to 23.2.143.239:443 (589 bytes), seq=7 time= 11.43 ms
connected to 23.2.143.239:443 (625 bytes), seq=8 time= 9.29 ms
connected to 23.2.143.239:443 (625 bytes), seq=9 time= 10.45 ms
もっともリクエストの反応速度が良ければ必ず勝てるわけではありませんが、環境的には一歩先を行くことができるでしょう。
VPS に Cloud9 IDE をインストールする手順
さて、VPS に Cloud9 IDE をインストールする手順です。Cloud9 って AWS のサービスじゃないの?と思った方はもうちょい情報収集のアンテナを高くしたほうが良いかもしれません。Cloud9 はむしろ Amazon が買収したサービスの1つでしかなく Cloud9 IDE というオリジナルのプロダクトが存在しています。話が逸れるので細かく書きませんが、あの便利な Cloud9 AWS 相当の環境を自分が借りた VPS に構築することができます。
以下、ほぼ素の状態の VPS の場合を想定した手順です。OS 的には CendOS を想定しています。ubuntu 等の場合は yum でなく apt-get で読み替えていくとよく似た手順で行けるんじゃないかなと思います。
sudo yum -y install git
sudo yum -y install glibc-static
sudo yum -y install epel-release
sudo yum -y install nodejs npm --enablerepo=epel
sudo yum -y groupinstall -y development
sudo mkdir /opt/workspace
sudo chmod 777 /opt/workspace
sudo mkdir ~/.c9
sudo chmod 777 ~/.c9
cd /usr/local/src
sudo chmod 777 /usr/local/src
git clone git://github.com/c9/core.git c9sdk
cd c9sdk
sudo scripts/install-sdk.sh
node ./server.js -p 8080 -a user:password -w /opt/workspace/ --listen サーバのIPアドレス
上記を実行した後に、自分のブラウザから http://IPアドレス:8080/ とアクセスしてみてください。以下のような画面が表示されるはずです。
※アクセスできない場合には firewalld.service などを設定してポートの許可が必要となります。以下参考にしてください。
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --permanent --add-service=https --zone=public
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload
さてアクセスできましたでしょうか?
ユーザ名とパスワードは、起動時に設定した文字列 "user" と "password" を入力します。以下のような画面に遷移するはずです。
※もちろん適宜自分しか知り得ない文字列に置き換えてくださいね!
ローディングが終わると、おなじみの Cloud9 の画面が表示されます。AWS Cloud9 と異なるところといえば、デフォルトテーマの色が異なること程度でしょうか。
さてこれでした準備ができました。ここまでの情報であれば、他のブログなどでも見つかりますが、ここから一歩先に行ってみましょう。
まずはこのままですとターミナルを閉じて ssh セッションが切れた時点で Cloud9 IDE に接続できなくなってしまいます。forever 経由でサービスを起動するように変更しましょう。※単語がわからない方はググって調べてみてください。
sudo npm install -g forever
cd /usr/local/src/c9sdk/
forever start server.js -p 8080 -a user:password -w /opt/workspace/
さて、これで ssh セッションが切れても Cloud9 IDE サービスは動き続けるようになりました。余力がある方はサーバ起動時に起動するサービスとして登録しても良いでしょう。
ちなみに停止したいときは以下のコマンドを実行します。
forever stopall
Cloud9 IDE の SSL 対応
上記手順のままですと、すべての通信が http で非暗号化のままデータが流れています。つまり hacker が本気を出せば大切な取引所の key や secret が盗み放題です。
従って VPS に構築した Cloud9 IDE を利用したいなら、SSL 通信対応は絶対にやっておかねばならない作業です。
細かいことは説明を省きますのが、以下のような構成にすることで通信の SSL 化を実現します。一般的な WEB サービスでよく利用する構成なので覚えておいて損はないでしょう。
とりあえず独自ドメインと SSL 証明書をとりましょう。私が使っているのは ValueDomain と ssl-store いうサービスです。ValueDomain だけで独自ドメインも SSL 証明書も全部取得できますが SSL 証明書がお高いので ssl-store というところで SSL 証明書を購入しています。FujiSSL ってタイプは 1080 円/年と国内最安値でおすすめです。
アフィリンクじゃないので安心して飛んでいってください。
証明書に必要となる CSR と秘密鍵は ssl-store の画面から生成可能です。
さて、無事独自ドメインと SSL 証明書は揃いましたね?(え?揃っていない?ググって頑張って壁を乗り越えてください...)
まずは apache をインストールしましょう。source からインストールするのがポイントです。強者の方は nginx でも何でもお好きな http server をお使いください。
cd /usr/local/src
sudo yum -y install gcc make pcre pcre-devel wget
sudo yum -y install openssl-devel
sudo yum -y install expat-devel
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.7.0.tar.gz
tar -xvzf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=/opt/apr/apr-1.7.0
make
make test
sudo make install
cd ..
wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.6.1.tar.gz
tar -xvzf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/opt/apr-util/apr-util-1.6.1 --with-apr=/opt/apr/apr-1.7.0
make
make test
sudo make install
cd ..
wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.39.tar.gz
tar -xvzf httpd-2.4.39.tar.gz
cd /usr/local/src/httpd-2.4.39
./configure --prefix=/opt/httpd/httpd-2.4.39 --with-apr=/opt/apr/apr-1.7.0 --with-apr-util=/opt/apr-util/apr-util-1.6.1 --enable-mods-shared=all --enable-ssl --with-ssl=/bin/openssl
make
sudo make install
cd ..
mkdir /opt/httpd/httpd-2.4.39/ssl
これで /opt/httpd/httpd-2.4.39 に apache がインストールされました。
次に取得した SSL 証明書のキーファイル 3 点セット
・crt:証明書ファイル
・ca-bandle:中間証明書
・key:秘密鍵
を /opt/httpd/httpd-2.4.39/ssl/ に格納してください。user_domain は貴方が取得した独自ドメイン名で読み替えます。
/opt/httpd/httpd-2.4.39/ssl/user_domain.crt
/opt/httpd/httpd-2.4.39/ssl/user_domain.key
/opt/httpd/httpd-2.4.39/ssl/user_domain.ca-bundle
次に /opt/httpd/httpd-2.4.39/conf/httpd.conf を編集します。ファイルの一番最後に以下の定義を追加します。user_domain は貴方が取得した独自ドメイン名で読み替えます。
LoadModule ssl_module modules/mod_ssl.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Listen 443 https
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
<VirtualHost _default_:443>
ServerName user_domain:443
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /opt/httpd/httpd-2.4.39/ssl/user_domain.crt
SSLCertificateKeyFile /opt/httpd/httpd-2.4.39/ssl/user_domain.key
SSLCertificateChainFile /opt/httpd/httpd-2.4.39/ssl/user_domain.ca-bundle
BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
さて、ここまで来たら apache を起動してみましょう。
/opt/httpd/httpd-2.4.39/bin/apachectl start
無事エラーが出ず起動できれば成功です。エラーが出たならば、どこかしらがミスってるので、頑張って解決してください。もし記載手順にミスがあればご指摘いただけると助かります。
なんならサーバ起動時に自動起動するサービスとして登録しておくと、なお便利なことでしょう。
諸々成功している状態であれば https://独自ドメイン/ で Cloud9 IDE にアクセスできるようになっているはずです。
ここまでくれば、ほぼほぼ AWS Cloud9 と同じ感覚でセキュアに Cloud9 IDE を使うことができるはずです。あとは VPS 側の FireWall などを設定して、443 だけを開けておくなどセキュリティー面の設定をちゃんとしておけば宜しいかと。
おつかれさまでした。良き Bot ライフをお送りください。(≧∇≦)b
宣伝:BitMEX 向けの BOT フレームワークとかも記事にしてますので、宜しければご覧ください!
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?