記事にはアフィリエイト等のPRが含まれます。/2023年6月、ブログデザインを変更しました。一部見づらい部分は順次修正していきます。

PythonでWebアプリを作ってみたいので無知識でVPSを借りて奮闘してる

前回までのあらすじ
PythonでWebアプリを作ってみたくなった。勉強する過程をメモしていく。

こんな感じで、Webアプリを作るなら公開するところまで持っていきたいし、他の人にも使ってもらえるものを作りたい。
定額でVPSを使ってみることができそうな「さくらVPS」を契約してみた。

この記事は、初めてVPSを触る者がOSをインストールしたりファイアウォールの設定に手こずったりする話。
というのは建前で、自分がまたVPSを新しく借りたときのために、手順をメモしておく。

目次

OSを入れて最小限のセキュリティとか設定

OSインストール

さくらVPSの会員メニューからやる。
このときrootのパスワードを作るのでメモとかする。

更新があれば更新もしておく。

RLoginをパソコンに入れる

Windows10ユーザーなので、こういうやつが要る。
さくらVPSの会員メニューからVNCコンソールも開けるけど、rootでログインできなくしたり、パスワードのみのログインをpermitしたりしたのを確認できるので、RLoginは入れて正解。

入れれたら、RLoginからrootでログイン。

さくらVPS上のパケットフィルタをオフ&ファイアウォールを有効に

・さくらVPSの画面でパケットフィルタをオフに
・ファイアウォールを有効に(systemctl start firewalld.service 。状態確認は systemctl status firewalld.service)

一般ユーザーの作成・sudoできるように

・一般ユーザーを作成 (useradd xxxx の後、passwd xxxxと打ってからパスワードを入力)
・sudoを使えるように(usermod -G wheel xxxx)
・一般ユーザーでログインしなおしておく

鍵を作ってSSHログインできるようにする

手順は ▶ 【ssh】公開鍵認証 設定~接続まで/はしくれSEめも が詳しい。
公開鍵を作る、秘密鍵をコピペしておく。
自分のメモ帳かなんかに秘密鍵をコピペしてrsa_idとか適当な名前をつけてPCに保存。

RLoginからSSH鍵を使ってログインしてみる。
今までのログインのところを編集してSSH鍵をクリックしてさっきのrsa_idを選択してからログインする。

sudo vi /etc/ssh/sshd_config で書き換えてパスワードログインやrootをpermit

sudo vi /etc/ssh/sshd_config でパスワードログインのとこをnoにする、rootログインを禁止にして再起動→ログインできるか確認

できたら、再びsudo viしてポート番号を変更して再起動→ログインできるか確認

さくらVPSのVNCコンソールから、ファイアウォールのポート番号を設定してファイアウォールをrestart
(ファイアウォールを事前に停めておいたらRLogin状態からポート番号変更できそう。
今回はそのままでやってしまったので、VNCからrootでログインしてファイアウォールのポート番号を設定した)

RLoginから新しいポート番号でログインできるか試した。

アップデートの設定とかを人さまのサイトを参考に丸パクりさせていただく

  • OSの自動アップデート設定
  • SELinuxの無効
  • ロケールの変更

を、さくらVPSでDjangoアプリを公開する手順の備忘録 というnoteの5の最後をそのまま真似させていただいて設定しました。

Nginxを入れたりPython3.7入れたり

Nginxを入れる

適当にサイト参考にして入れた。yumです。

Apacheと迷ったけど、2019年の時点でNginxのほうがシェアが高いらしいのでNginxに。

さくらVPSを本契約に。

ほんとはNginx入れたあとSSL証明書とってhttpsにしたかったんだけど、独自ドメインを使うにはVPSの仮契約だとダメっぽい。
なのでVPSを本契約に。

待ち時間にPython3.7を入れる。

Python3.7を入れる

このページをそのまんま真似しました。
さくら VPS CentOS7 に Python3.7 をインストールしてみる

独自ドメイン取ってネームサーバ―の設定をする

独自ドメインを結局とる

「独自ドメイン取らなくてもいいよなーお試しだし」と思っていたけど、SSL証明書ともらう段になって色々ググってると、みんな独自ドメインを取ってるっぽいので、
一応独自ドメインを取った。

独自ドメインはたいてい1年目はめっちゃ安い(特にxyzとか)ので、取った。

ネームサーバの設定をする

このあたりで3日ほど、「ネームサーバって何?」「DNSサーバとどう違うの?」とぐちゃぐちゃ悩んだり調べたりした。

Xドメインで取ったドメインを、さくらVPSに移管せずに使うには、

  • いつものさくらVPSのコントロールパネル(VNCコンソールとか出すとこ)の左側のメニューの「ネームサーバ―登録」を押す。(さくらインターネットの会員メニューが開かれる。これ。)
  • 左のメニューの「ネームサーバ新規登録」を選び、一番下の空欄に取得したドメイン名を入れて「送信する」
  • すると、同じく左メニューの一番上「ドメインリスト」に表示されるようになる
  • 「ゾーン編集」をクリックして、遷移した画面の左側の「変更」をクリック
  • NS(ネームサーバ)の欄に ns1.dns.ne.jp. とns2.dns.ne.jp. を入れる。A(ホストのIPアドレス)のとこには、さくらVPSで取ったサーバのIPアドレスを入れる

ということをまずやって、そのあと

  • Xドメインの会員メニューにログイン
  • トップページ下のほうの「ご契約一覧」から該当ドメインの「ドメインパネル」を選択
  • 下にスクロールしていくと【 ネームサーバー情報 】というのがあるので、【設定変更】をクリック
  • ネームサーバ―1とネームサーバ―2に ns1.dns.ne.jp. とns2.dns.ne.jp. を入れる。

って感じ。

これでURLにアクセスした人はさくらのネームサーバからIPアドレスを教えてもらえます。

確認

普通のブラウザで、URL欄にドメイン名を入れて、Welcome to CentOS~みたいなのが出れば、なんとなくネームサーバの設定はOK。

正しく確認するにはhostコマンドを使うといいっぽい。
参考▶ CentOS 7のNginxにLet’s Encryptを導入してサイトをHTTPS化する方法 > 1. ホスト名の正引き確認

Let’s EncryptにSSL証明書を発行してもらうあたり

ファイアウォールにhttp接続とhttps接続を許可

# firewall-cmd –add-service=http –permanent

# firewall-cmd –add-service=https –permanent

# firewall-cmd –reload

こんな感じ。

certbotをインストール

ここでepelをインストールしたんだったかな…。記憶が薄いけど、

# yum install epel-release

# yum install certbot

の2つでcertbotをインストールしました。確かコマンドは先ほども挙げたnoteに書いてあったのを真似した。

SSL証明書をもらう

sudo systemctl stop nginxでNginxを止めてから、

# certbot certonly –standalone -d (取ったドメイン名)

で、Acceptしたり、メールは要らないよってNoしたりして。無事もらえました。

CentOS 7のNginxにLet’s Encryptを導入してサイトをHTTPS化する方法 > 5. サーバー証明書の作成 を見ながらやりましたが、wwwを外したドメイン名のみ。

上記URLの 5.4のdhparam用ファイルの作成もそのまま真似してやりました。

NginxでSSL通信の設定

設定ファイルは色々探した結果、 /etc/nginx/nginx.conf に設定が書いてありました。

まずhttps接続のところにSSL証明書を参照してもらうように

server {
listen 443 ssl;

の下に

ssl_certificate      /etc/letsencrypt/live/ドメイン名/fullchain.pem;
ssl_certificate_key     /etc/letsencrypt/live/ドメイン名/privkey.pem;

を追記。

# nginx -t

でokが出るのを確認して、Nginxを再起動。

https://ドメイン名 にアクセスしてURLのとこに鍵マークが出ればOK。

httpからhttpsに自動でリダイレクトされる設定

これもやりました。Nginxを再起動。

http://ドメイン名 にアクセスして、https://にリダイレクトされたらOK。

次の課題はindex.htmlやDjangoのview関数からhello worldすること

長くなってきたので記事を分けます。

このあとはindex.htmlに何か書いてみて表示させたり、
Djangoをインストールしてビュー関数からhello worldを表示させたりしたい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次