2021年5月3日月曜日

WebARENA/VPSに、moshでリモート接続する。

mosh を使うと、リモート接続での作業が、とても快適になります。
切れないしレスポンスも良いので、もう、素のsshには戻れません。

mosh(モバイルシェル)とは

インストール
# apt install mosh

セキュリティグループ (VPSファイヤーウォール)
udp:60000,61000,ip4:0.0.0.0/0

リモート接続 (local -> VPS)
$ mosh --ssh="ssh -i .ssh/(鍵ファイル名).pem" ubuntu@(IPアドレス)

2021年5月1日土曜日

WebARENA/VPSで、Webサーバ構築

 格安VPSのWebARENAは、いつもインスタンスの在庫不足で、申込みが出来ませんでした。

https://arena.secure.customer.ne.jp/signup/vpsc/zone

たまたま、申込みが出来たので、Webサーバ構築の手順をメモしておきます。


申し込みページ

https://arena.secure.customer.ne.jp/signup/vpsc/zone


お客様番号とか、契約者IDとか、サービスIDとか、とても分かり辛いですが、適当に入力して申込み完了。手順は全然思い出せませんが..


インスタンスタイプ

・メモリ  1GB

・CPU   仮想1コア

・ディスク SSD 20GB


躓きどころ

・ログイン

 Ubuntuを選択した場合、初期ユーザ名は「ubuntu」です。

 「root」ではログインできません。

・セキュリティグループ

 要は、ファイヤーウォールです。

 デフォルトでは、全てのポートを閉じているので、設定必須です。


SSHで接続できれば、後は、いつものUbuntuです。


参考

http://yamayoshi.blogspot.com/2020/04/gcenginx-unitweb.html


$ sudo apt update

$ sudo apt upgrade

$ sudo apt install python3-venv python-pip


仮想環境 & Flaskインストール

$ cd

$ mkdir project1 && cd project1

$ python3 -m venv venv

$ source ./venv/bin/activate

V pip install Flask


アプリケーション

V nano main.py

--

from flask import Flask

application = Flask(__name__)

@application.route("/")

def index():

  return "Hello Project1!"

if __name__ == "__main__":

  application.run()

--


動作確認

V python3 main.py

 →コンソールをもう1つ開いて動作確認

  $ curl http://127.0.0.1:5000/


V deactivate


Nginx  (Webサーバ)

http://unit.nginx.org/installation/#ubuntu-1804


(インストール準備)

キー取得

$ sudo -i   *rootで作業

# curl -sL https://nginx.org/keys/nginx_signing.key | apt-key add -


リポジトリ追加 *Ubuntu18.04 = bionic

# nano /etc/apt/sources.list.d/unit.list

--

deb https://packages.nginx.org/unit/ubuntu/ bionic unit

deb-src https://packages.nginx.org/unit/ubuntu/ bionic unit

--


インストール

# apt update

# apt install unit unit-dev unit-python3.6


コンフィグ

https://unit.nginx.org/howto/flask/


ソケットの場所を調べる

# unitd --help

 --control ADDRESS

  set address of control API socket

  default: "unix:/var/run/control.unit.sock"


現在の設定をファイルに出力

# curl --unix-socket /var/run/control.unit.sock http://localhost/config/ > config.json


Flask用の設定

# nano config.json

--

{

 "listeners": {

  "*:80": {

   "pass": "applications/flask_app"

  }

 },

 "applications": {

  "flask_app": {

   "type": "python",

   "path": "/home/ubuntu/project1/",

   "home": "/home/ubuntu/project1/venv/",

   "module": "main"

  }

 }

}

--

*説明

 listeners: ポート *80(HTTP)

 type: 言語

 path: プログラムの場所

 home: 仮想環境の場所

 module: プログラム本体(ファイル拡張子を除く)


設定を上書き

# curl -X PUT --data-binary @config.json --unix-socket /var/run/control.unit.sock http://localhost/config


再起動

# service unit restart


ブラウザから動作確認。

おつかれさまでした。