#環境構築するまでの流れ
備忘録として記録します。
##そもそもなんでLinuXか
###①無料で使える
WindowsOSをインストールするのには1台当たり約15,000~20,000円
LinuxはOSインストール費用は無料
###②ソフトも大体無料
###③中身を弄れる
OSの本質を勉強することができる。
もちろん中身を弄って壊れることもある。
その時は無料でOSを再インストールできるのが強み
###④サーバを自由に建てることができる
サーバの多くはLinuxで動いている。
例)AWSもLinux上で動いている
###⑤古いPCでもサクサク動く
Linuxはとても早く動く。
それは不要なものをそぎ落としている軽量OSであるため。
##centOSを選択
###理由① 業界のデファクトスタンダード
デファクトスタンダードはRHEL(RedHatEnterpriseLinux)。
しかし、ライセンス料が決して安くはない。
そのためRHELのクローンであるcentOS(CommunityEnterpriseOperatingSystem)を使う。
###理由② 情報量が豊富
私用しているユーザが多いため、情報が多く存在する。
そのため勉強もしやすい。
##環境構築
###サーバ選定
WebARENAのVPS(Virtual Private Server)クラウドを契約しました。
理由は料金面が主です。
###サーバにssh接続
ssh(Secure Shell)とはネットワークに接続された機器を遠隔操作し、管理するための手段。
VPSはほとんどの場合、遠隔操作が主になる。
そのため、万が一悪意を持ったユーザがサーバにログインできてしまうと悪用される。
そこでsshを利用して、対象のユーザのみがログインできるようにする。
###①インストール確認
まずはTeraTermを使ってルートユーザでログイン。
(WebARENAのマニュアルを参照)
#openssh-serverがインストールされているかの確認
# yum list installed | grep ssh
libssh2.x86_64 1.4.3-10.el7_2.1 @base/7.4.1708
openssh.x86_64 7.4p1-11.el7 @base/7.4.1708
openssh-clients.x86_64 7.4p1-11.el7 @base/7.4.1708
openssh-server.x86_64 7.4p1-11.el7 @base/7.4.1708
インストールOK。
無かった場合、
# yum -y install openssh-server
でインストール。
###②設定の確認
# vi /etc/ssh/sshd_config
PermitRootLogin yes
⇒noに変更
理由:rootユーザでのログインを拒否するため。(セキュリティ面)
PasswordAuthentication
⇒yesに変更
理由:ユーザからのログインを許可するため
最後に:wqで保存
###③サービスの起動
# systemctl start sshd.service
# systemctl status sshd.service
Active: active (running)
になっていればOK
###④ファイアウォール設定
ssh用のポートが解放されているか確認。
# firewall-cmd --list-all
Servicesの欄にsshが入っていればOK
###⑤ユーザ作成
rootログインを制限したため、新規ユーザを作成
# useradd admin
# passwd admin
これでユーザログインできるはず…
しかし、できず。
方法を変えます。
https://hackers-high.com/linux/easy-ssh-publickey-authentication/
を参考にしました。
# su admin
#sshキーの生成
$ ssh-keygen -b 2048 -C [任意のコメント]
#どこに生成するか聞かれる
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
⇒そのままEnter
Created directory '/home/admin/.ssh'.
⇒初期設定のディレクトリに生成
Enter passphrase (empty for no passphrase):
⇒独自のパスフレーズを設定
####公開鍵の登録
cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
#不要なキーを削除
$ rm -f id_rsa.pub
####秘密鍵をクライアント側に持ってくる
$ cat id_rsa
#—–BEGIN RSA PRIVATE KEY—– から —–END RSA PRIVATE KEY—– までをコピーして、クライアントで作成したファイル id_rsa にペーストすればOK。
#サーバ側の秘密鍵を削除
$ rm -f id_rsa
#sshdを再起動して設定を反映
$ systemctl restart sshd
teratermから
ユーザ名:admin
パスワード:設定したパスフレーズ
秘密鍵;生成したファイル
でユーザログインを確認。
※セキュリティ的に少し疑問が残るため、この方法以外でユーザログイン出来た方は教えていただけると幸いです。
##pythonのインストール
まず現時点でインストールされているpythonのバージョンを確認。
$ python --version
Python 2.7.5
古いバージョンですね。最新版をインストールしていきます。
その前に作成したユーザにsudoのインストール権限を与えます。
#root権限で実行
#wheelというグループに所属していればsudoが使える
# usermod -aG wheel admin
#adminに変更
$ groups
admin wheel
⇒OK!
それではpythonをインストールしていきます。
#pyenvを使ってpythonのバージョンを切り替える。
#pyenvはpythonバージョン管理ツール
$ git clone https://github.com/pyenv/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
$ source ~/.bash_profile
#設定が完了したのでpyenvのバージョンをチェック
pyenv --version
pyenv 1.2.21-5-gdb939bb
次に任意のディレクトリにpythonをインストールします。
自分は以下のディレクトリとしました。
$ mkdir /home/admin/python_install
/home/admin/python_install
#インストールできるpythonのバージョンを確認
$ pyenv install --list | grep 3.9
3.9.0
3.9-dev
3.9.1
miniconda-3.9.1
miniconda3-3.9.1
#最新の3.9.1をインストール
$ pyenv install 3.9.1
#失敗しました。以下エラー。
Downloading Python-3.9.1.tar.xz...
-> https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
Installing Python-3.9.1...
BUILD FAILED (CentOS Linux 7 using python-build 1.2.21-5-gdb939bb)
Inspect or clean up the working tree at /tmp/python-build.20201212114831.8867
Results logged to /tmp/python-build.20201212114831.8867.log
Last 10 log lines:
checking for python... python
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "linux"
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/python-build.20201212114831.8867/Python-3.9.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
pythonをインストールためのパッケージがなかったようです。
#必要なパッケージのインストール
$ sudo yum -y install xz bzip2 sqlite-devel gcc openssl-devel readline-devel zlib-devel
$ sudo yum -y install libffi-devel
再度pythonをインストール
$ pyenv install 3.9.1
無事インストール完了。
$ python -V
Python 2.7.5
まだ、pythonのバージョンは切り替わってないのでここを変更します。
$ pyenv rehash
#globalを使うとシステム全体に変更を適用できる
#一部のみの場合はlocalを使用
$ pyenv global 3.9.1
$ python -V
Python 3.9.1
無事、pythonのバージョンを変更できました。
####pythonの動作確認
$ python
>>>print("Hello World")
Hello World
OKですね。