2lu3のエンジニア技術アウトプット

AI,深層学習,機械学習,RescueSimulation,RoboCupJunior,neovimについて解説しています

ConohaでVPSサーバーを借りてApache2でウェブサーバーを構築!

VPSサーバーを借りて、ウェブサーバーを構築する手順について説明します!

前提

Windows 10 PCのsshは設定済み

この記事は現在進行系で開発中です。

単語説明

VPS

サーバーを借りるのには、いくつか種類があります。

名称 料金 管理者権限 主な使用用途
共用サーバー 安い X ブログ
VPS 普通 O プログラミング・サービス提供
専用サーバー 高い O 本格的なサービス提供

共用サーバー

  • 1つのサーバーを複数人で共有する
  • 管理者権限なし
    • ソフトを新しくソフトをインストールできない
  • ブログを公開する、ファイルを保存するといった用途がメイン
  • 処理時間の長いプログラムを実行すると止められる
  • 同じサーバーの他の人の使用状況によって、自分の使えるリソースが変わる
    • 例えば、他の人が10万PVのブログを運営していたら、自分のサーバーの処理が遅くなる

VPSサーバー

  • 1つのサーバーの中に仮想的に複数のサーバーを作成する
  • (割り当てられた仮想サーバーの)理者権限あり
    • ソフトのインストールが可能
  • メモリが予め割り当てられている
    • 性能が他の人の使用状況に左右されにくい

専用サーバー

  • サーバー丸々借りる
  • サーバー全体の管理者権限を持つ
    • 好きなように何もかもいじることができる
  • 性能は常に保証される

今回は、VPSサーバーを使用します。

アカウント登録

conohaのVPS公式サイトから、アカウント登録をします。SMS認証が必要です。

ssh通信するまで

VPS追加画面

下のように設定します。

パソコンのメモリは16GBとかありますが、サーバーは1GBでも機械学習とかしない限り大丈夫です。

リージョン(サーバーの場所) 東京
メモリ 1GB
OS Ubuntu

f:id:tlaloc:20200306150143p:plain

メモること

  • 逆引きホスト名(またはIPアドレス)
  • (サーバー追加したときに登録した)rootパスワード

とりあえずsshして初期設定

設定する内容は、以下の通り。

  • 通常のログイン用のユーザーを作成する
  • rootユーザーでログインできないようにする

通常のログイン用のユーザーを作成する

ssh root@上でメモした逆引きホスト名
// ユーザーの追加
sudo adduser 好きなユーザー名(今回はtlaloc)
// パスワードなどを聞かれるので入力

// ユーザーに管理者権限を付与
sudo gpasswd --add ユーザー名(今回はtlaloc) sudo

windowsから簡単にsshできるようにする

sshで公開鍵を作っていない人は、ssh-keygenでググってください。

Windowsの設定をする

Windows側の.ssh/configに以下のように記載

Host conoha
  HostName 上でメモしたホスト名
  User 上で作成したユーザー(今回はtlaloc)
  Port 22 (後で変更しますが、最初は22です)
  IdentityFile ~/.ssh/id_rsa(自分のid_rsaの場所に置き換えてください)

サーバー側の設定をする

Windows以下のコマンドを実行する。パスワードを聞かれるので、上でメモしたパスワードを入力します。

[注意点]

  • .ssh/id_rsa.pubは、id_rsa.pubへの相対pathを指定してください。
  • conohaは、.ssh/configHostで設定した名前です。
  • パスワードを聞かれるので入力してください
scp .ssh/id_rsa.pub conoha:~/.ssh/authorized_keys

これは、Windowsid_rsa.pubというファイルを、サーバーの~/.ssh/authorized_keysにコピーする操作です。

試してみる

ssh conoha

パスワードを聞かれることなくログインできたら成功です。

初期設定

セキュリティ関連

最低限することは、 * rootログインの拒否 * パスワード認証の無効化 * 使わないポートを閉じる

rootでログインできないようにする。

sudo vi /etc/ssh/sshd_config

yesをnoに変更

// 変更前: PermitRootLogin yes
PermitRootLogin no

これ以降(少なくともこの記事の範囲では)rootのパスワードを使用することはありません。 これより下でパスワードというときは、adduserで追加したユーザーのパスワードを指します

注: 何らかの原因で、作成したユーザーでログインができなくなったとき、conohaのコンソールからログインするときに使用するかもしれません。なので、rootのパスワードはどこかに保存しておいたほうが良いでしょう。

パスワード認証を許可しないようにする

sudo vi /etc/ssh/sshd_config
PasswordAuthentication no
// 変更前: #PasswordAuthentication yes

使わないポートを閉じる

// ufw の起動
systemctl start ufw

// ufwの有効化
sudo ufw enable

// sshに使うportのみ許可
// 空いている49152番から65535番の中から選ぶ
// この番号はどこかにメモっておいたほうが良い
sudo ufw allow 49157

// 追加した番号が許可されているか確認する
sudo ufw status

// 出力結果
To                        Action     From
--                         ------      ----
49157                  ALLOW   Anywhere
49157 (v6)           ALLOW   Anywhere (v6)

// 許可したport以外からは拒否する
sudo ufw default deny

// sshを受け入れる番号を変更する
sudo vi /etc/ssh/sshd_config

Port 49157
// 変更前: #Port 22

この状態で、先程の自分のPCの.ssh/configの中のポート番号を必ず新しいものに変更してください。

変更の反映

// sshを管理するソフトの再起動
service ssh restart

入れるかテスト

ssh conohaして入れるかどうか確かめてみましょう。 成功するまでは、すでに接続しているsshは切断しないようにしてください。

pyenv

複数のバージョンのpythonを使えるようにします。

pyenvを使わない場合、(例えば)3.6.9のバージョンの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 -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
source ~/.bash_profile
sudo groupadd developer
sudo gpasswd --add tlaloc developer
sudo visudo
// 以下を書き込む
Defaults exempt_group="developer"

sudo apt update -y
sudo apt upgrade -y
// Pythonのインストールに必要なライブラリー
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 -y

virtualenv

pyenvでは、複数バージョンのpythonを使えるようにしました。

virtualenvでは、フォルダごとにpythonにインストールしたライブラリを保存することが可能です。

git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile

Pythonのインストール&使用

このサイトを参考にしてください。

neovim

neovimのインストール

3.8.3は好きなバージョンに変更することが可能です。

pyenv install 3.8.3
pyenv virtualenv 3.8.3 neovim3
pyenv activate neovim3
pip3 install pynvim -y
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt update -y
sudo apt upgrade -y
sudo apt install neovim -y

deinのインストール

curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.cache/dein
rm installer.sh

サーバーとして使えるように

現在執筆中

apache2のインストール

UbuntuとApacheでウェブサーバを立てる

phpのインストール

PHP 7.4 を Ubuntu 18 / 19 などにインストールする方法 PHPのリリース日とサポート期限

https

Ubuntu 18.04でApacheの自己署名SSL証明書を作成する方法

【apache】conohaのUbuntu18.04にLet's EncryptでSSL設定するまで

その他

  • ssh-keygen -t rsa -b 4096 -C ""sshキーを作成(""内はメールアドレス

その他便利な設定

ファイルの検索で大文字小文字を検索しない

~/.inputrcに以下を記述

set completion-ignore-case on

コマンド一挙コピペ用

現在作成中

参考サイト