Conoha

家にLinuxを入れようかなと思ったけど、
バックアップやなんや、面倒だなという気がしたので、クラウド利用を検討。

#クラウド、VPSどれにするべきか？
AWSもAzureもしばらくは無料で使えそうなので、しばらくはそれでもいいかな、、、
しかし、よく見てみると無料分を越えると、自動で課金されるらしい。
いやー、勝手にそんな費用増えると嫌だな、、、、

ということで、VPSを使用することにする。
候補はさくらインターネットとConoha
・料金はそれほど変わらない
・自動バックアップが可能
・何かのサービス動かそうとした時に、テンプレートがある。
ということで、Conohaを使用。

#Conohaで使用するOS
トップページから、アカウントを作成。
クレジットカードを登録し、プランを選択。
後でスケールしてもいいかと思い、月970円のものを選択。
OSは少し悩んだ...
Windowsなんか使う気は無いけど、Linuxは一杯あるよな、、、、
1.機械学習するなら、ubuntuがいいんだろうけど、そもそも機械学習させるためのリソースが
あまり使えない。
2.アプリのテンプレートはCentOSは結構あるけど、ubuntuは少ない。
ということで、CentOSに。

```
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 
```

#CentOS起動後
rootのパスを設定して、CentOS起動。
今だに、Web上にいるんだけど、、、、コンソールはどこだ？
横にコンソールボタンがあったんで、これを押すと、ターミナルが、、、
しかし、まだWeb上での話。
rootでログインし、ユーザアカウントを作る。

#ssh設定
普段はクライアントはmacなので、もちろんターミナルから使用したい。
でも、sshは不要に公開したくない。
conohaのサポートページをの通りに、やり方が書いてあった。
一旦、/etc/ssh/sshd_configを変更。

以下の部分をyesにすれば良いらしい。

```
PasswordAuthentication no
ChallengeResponseAuthentication no
```

よく見てたら、PasswordAuthenticationはもともとyesになってるが、、、、
まあいいや、ChallengeResponseAuthenticationだけyesにして、sshdを再起動する。

Macからssh ユーザ名@IPアドレスでアクセス。
ログイン可能。

mac(ローカル)で、公開鍵を作成する。

```
cd ~/.ssh
ssh-keygen -t rsa -b 2048
```

なんかごちゃごちゃ出てくるが、全てEnterを押し続け、
id_rsaとid_rsa.pub
が作成された。
作成された公開鍵(id_rsa.pub)をサーバへ転送する。

```
scp id_rsa.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys
```

サーバ(リモート)側に.sshディレクトリがなくてエラーに....
サーバ側に入り直して、.sshを作成。
もう一度、scpほにゃららを実行。
今度はうまくいった。

```
ssh ユーザ名@IPアドレス
```

おい、パスワード聞かれるじゃないか、、、、
色々調べていると、サーバ側で作成した、.sshディレクトリおよび、authorized_keysの
パーミッションがgroup、otherに読み取りとかついてるとダメらしい。
全部削除

```
chmod go-rwx .ssh
chmod go-rws .ssh/authorized_keys
```

これでようやく、パスワードなしで入れる様に。
/etc/ssh/sshd_configを修正。

```
PasswordAuthentication no
ChallengeResponseAuthentication no
```

#サービス再起動

```
service sshd restart
```

とりあえず、これで、macから直接ログインできる。。。。
毎回 ssh うんちゃらって書くの面倒なので、
alias作成しといた。

#さて、開発系は、、、、

インストールされているものを見てみたが、開発系のものが一切はいっていない。
emacsもgitもない、、、、
とりあえずインストール

```
$ sudo yum -y groupinstall "Development tools"
$ sudo yum install emacs
# init.elをローカルからコピー
$ scp ~/.emacs.d/init.el conoha:~/.emacs.d/init.el
```
emacsは24.3か、、、、

#python関係
yumがpython2に依存しているらしいので、pyenvを入れる。
pyenv, anacondaのインストール

```
#必要なモジュールをインストール
$ sudo yum -y install zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel
#pyenvを取得(pyenvってただのシェルスクリプトだったのね)
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
#anacondaインストール
$ pyenv install anaconda3-5.3.1
#anacondaに切り替える
$ pyenv global anaconda3-5.3.1
```

#Go関連
インストール、emacsでgo-modeが使用できるように。

```
$ sudo yum -y install golang
# emacs内部で go-modeを追加
# M-x package-list-packages
# M-x package-install go-mode
```

#docker
dockerはデフォルトのレポジトリにあるのだが、、、

```
$ yum info docker
利用可能なパッケージ
名前                : docker
アーキテクチャー    : x86_64
エポック            : 2
バージョン          : 1.13.1
リリース            : 96.gitb2f74b2.el7.centos
容量                : 18 M
リポジトリー        : extras/7/x86_64
要約                : Automates deployment of containerized applications
URL                 : https://github.com/docker/docker
ライセンス          : ASL 2.0
説明                : Docker is an open-source engine that automates the deployment of
                    : any application as a lightweight, portable, self-sufficient
                    : container that will run virtually anywhere.
                    : 
                    : Docker containers can encapsulate any payload, and will run
                    : consistently on and between virtually any server. The same
                    : container that a developer builds and tests on a laptop will run at
                    : scale, in production*, on VMs, bare-metal servers, OpenStack
                    : clusters, public instances, or combinations of the above.
```
どうも、バージョンが古い様子。最近のdockerはdocker-ceという名前になっていて、バージョン番号体型もyy.mm.ddとなっている。

```
# docker-ceはyumのデフォルトのレポジトリに存在しないので、レポジトリを追加
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# インストール実行
$ sudo yum install docker-ce
# 自動起動設定
$ systemctl start docker
$ systemctl enable docker
# 稼働確認
$ sudo docker run -it centos echo Hello-World
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
8ba884070f61: Pull complete 
Digest: sha256:b5e66c4651870a1ad435cd75922fe2cb943c9e973a9673822d1414824a1d0475
Status: Downloaded newer image for centos:latest
Hello-World
# sudoじゃないと、起動できないのね(/var/run/docker.sockを通じて通信するが、これが見れない)
# sudoじゃなくても起動できるように、自分のアカウントをdockerグループに追加
# いつできたのか知らないけど、/var/run/docker.sockのグループがdockerになってた。
$ sudo usermod -aG docker xxxxx(自分のID)
# ログインしなおして、実行してみる
$ docker run -it centos echo Hello-World
Hello-World
```
#.NET関連

```
# microsoft key登録
$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
$ sudo yum update
$ sudo yum install dotnet-sdk-2.2
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
  インストール中          : dotnet-host-2.2.5-1.x86_64                               1/7 
  インストール中          : dotnet-hostfxr-2.2-2.2.5-1.x86_64                        2/7 
  インストール中          : libicu-50.1.2-17.el7.x86_64                              3/7 
  インストール中          : dotnet-runtime-deps-2.2-2.2.5-1.x86_64                   4/7 
  インストール中          : dotnet-runtime-2.2-2.2.5-1.x86_64                        5/7 
  インストール中          : aspnetcore-runtime-2.2-2.2.5-1.x86_64                    6/7 
  インストール中          : dotnet-sdk-2.2-2.2.204-1.x86_64                          7/7 
This software may collect information about you and your use of the software, and send that to Microsoft.
Please visit http://aka.ms/dotnet-cli-eula for more information.
Welcome to .NET Core!
---------------------
Learn more about .NET Core: https://aka.ms/dotnet-docs
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs

Telemetry
---------
The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous and doesn't include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

Configuring...
--------------
A command is running to populate your local package cache to improve restore speed and enable offline access. This command takes up to one minute to complete and only runs once.
  検証中                  : aspnetcore-runtime-2.2-2.2.5-1.x86_64                    1/7 
  検証中                  : dotnet-runtime-deps-2.2-2.2.5-1.x86_64                   2/7 
  検証中                  : libicu-50.1.2-17.el7.x86_64                              3/7 
  検証中                  : dotnet-runtime-2.2-2.2.5-1.x86_64                        4/7 
  検証中                  : dotnet-host-2.2.5-1.x86_64                               5/7 
  検証中                  : dotnet-hostfxr-2.2-2.2.5-1.x86_64                        6/7 
  検証中                  : dotnet-sdk-2.2-2.2.204-1.x86_64                          7/7 

インストール:
  dotnet-sdk-2.2.x86_64 0:2.2.204-1                                                      

依存性関連をインストールしました:
  aspnetcore-runtime-2.2.x86_64 0:2.2.5-1       dotnet-host.x86_64 0:2.2.5-1            
  dotnet-hostfxr-2.2.x86_64 0:2.2.5-1           dotnet-runtime-2.2.x86_64 0:2.2.5-1     
  dotnet-runtime-deps-2.2.x86_64 0:2.2.5-1      libicu.x86_64 0:50.1.2-17.el7           

完了しました!
```
なんか、RPMDBの警告とか出てるけど、、、、問題ないのか不明だ、、、