ホーム >  AWS >  【Vagrant】Macに用意したAmazon Linux2 環境にsqlite3、nginxをインストール【オンプレミス】

投稿日:   |  最終更新日:

【Vagrant】Macに用意したAmazon Linux2 環境にsqlite3、nginxをインストール【オンプレミス】

AWSDjangoNginxPython

VagrantのAmazon Linux2環境にsqlite3Nginxをインストールします。

Django実行環境を構築

前回、AmazonLinux2の仮想環境にPythonパッケージをインストールしました。今回は、sqlite3をインストールします。

sqlite3

Amazon Linux 2ではデフォルトでsqlite3がインストールされています。しかし、現時点ではバージョンが3.7.17と少々古いです。Djangoをインストールして実行した際に、ライブラリのバージョンが原因で上手く実行できない場合があります。Python3には、デフォルトでsqlite3モジュールが含まれているのですが、どうやらPythonインタープリターのセットアップ時にOSにインストールされているsqlite3ライブラリを参照し、Pythonで対応するモジュールをインストールするという動きをしているようです。

また、PythonとDjangoのバージョンは対応関係があるのですが、それぞれのバージョンによっては、Pythonインタープリターがインストールするsqlite3モジュールのバージョンと、Djangoの内部モジュールからimportしているsqlite3のバージョンの間で齟齬が発生してしまう場合があるようです。そのため、Djangoを設定する前にOSのsqlite3ライブラリを最新化しておく必要があります。

Amazon Linux 2ではamazon-linux-extrasでライブラリを管理できますが、sqlite3は対応していないようなのでソースをダウンロードしてコンパイルする方法を取ります。

Nginx

Djnangoサイトのみならず、Webサイトを公開するときにはいろいろなサーバーが動いています。その中心となるのが「Webサーバー」と呼ばれる機能です。Apacheが有名で多く利用されていますが、今回は、処理速度や機能などが改善されているため、Nginx(エンジンエックス)を利用します。

uWsgi+Nginx

uWSGIは、ウェブサーバ(Nginx)とアプリケーションをつなぐインターフェースの役割を担います。これにより、フレームワークとサーバの実装が一般化され、アプリケーションの移植可能性が高まるなどのメリットがあります。

uWSGIは、WSGIアプリケーションとウェブサーバをつなぐサーバを指す。また、uWSGI、HTTP、そしてFastCGIなどのプロトコルを用いてウェブサーバと通信します。ここではuwsgiというサーバを利用して、uWSGIプロトコルによりウェブサーバと通信する(言葉が紛らわしいですが、uWSGIは文脈によってサーバを指したりプロトコルを指したりするので注意が必要です)。


作業の流れ

1.vagrantを起動して、Amazon Linux2にログインします。

2.Pythonパッケージをインストールします。

前回まで

今回の作業は、以下の続きです。

【仮想環境】MacにVirtualBoxをインストール【Mac】

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant 環境を作成【オンプレミス】

【Vagrant】MacにAWS公式のAmazon Linux2 Vagrant Boxを作成、起動【オンプレミス】

Vagrant】Macに用意したVagrantのAmazon Linux2 環境にVirtualBox Guest Additionsをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にPythonをインストール【オンプレミス】

【Vagrant】Macに用意したAmazon Linux2 環境にuwsgi、Django、Django Restframeworkをインストール【オンプレミス】

※今回の記事は、既にAmazonLinux2のVagrant環境を作成済みであるとします。

環境

私のPC環境は以下の通りです。

PC MacBook Air (Retina, 13-inch, 2019)
CPU 1.6 GHz デュアルコアIntel Core i5
メモリ 16 GB 2133 MHz LPDDR3
OS 10.15.2
VirtualBox 6.1.12r139181
Vagrant 2.2.9

仮想環境

仮想環境は以下の通りです。

OS Amazon Linux release 2 (Karoo)
Python 3.7.9
Django 3.2
djangorestframework 3.12.4
djangorestframework-jwt 1.11.0
django-cleanup 5.2.0
uWSGI 2.0.19.1

Vagrantのディレクトリ構成

  • ~/Work/
  • Vagrant/
  • AmazonLinux2/


AmazonLinux2仮想環境へログイン

①「ターミナル」を開いて下記のコマンドを入力します。

cd ~/Work/Vagrant/AmazonLinux2

②下記のコマンドを入力して仮想環境を起動します。

Vagrant up

③下記のコマンドを入力してログインします。

vagrant ssh

sqlite3をインストール

①SQLiteの公式ページから最新バージョンのソースのURLを確認します。

SQLite Download Page

②下記コマンドを実行します。

wget https://www.sqlite.org/2021/sqlite-autoconf-3350500.tar.gz
tar xvfz sqlite-autoconf-3350500.tar.gz
cd sqlite-autoconf-3350500

③下記コマンドでこんパイルします。

./configure --prefix=/usr/local
make
sudo make install

④シンボリックリンクを設定してPATHを通します。

# 古い方のsqlite3のファイル名を変更
sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
# ディレクトリに新しいsqlite3へのシンボリックリンクを作成
sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
echo export LD_LIBRARY_PATH="/usr/local/lib" >> ~/.bash_profile
source ~/.bash_profile

最新版のインストールは出来ましたがパスが通っていないので、実行時に古いバージョンのSQLite3の方が参照・実行されてしまいます。不要なファイルを削除したり、新しいSQLite3にパスを通す作業をします。

⑤バージョンを確認します。

sqlite3 --version
3.35.5 2021-04-19 18:32:05 1b256d97b553a9611efca188a3d995a2fff712759044ba480f9a0c9e98fae886

⑥次にSQLiteがインストールされたか確認します。

sudo find / -name sqlite3
/tmp/python-build.20210429222414.4107/Python-3.8.2/Doc/includes/sqlite3
/tmp/python-build.20210429222414.4107/Python-3.8.2/Lib/sqlite3
/usr/bin/sqlite3
/usr/lib64/python2.7/sqlite3
/usr/lib64/python3.7/sqlite3
/usr/local/bin/sqlite3
/usr/local/lib64/python3.7/site-packages/django/db/backends/sqlite3
/home/vagrant/sqlite-autoconf-3350500/sqlite3

nginxをインストール

①Amazon Linux 2 の場合 nginx は「yum」では無く「amazon-linux-extras」でインストールします。なお、2021年5月現在でトピック名の指定は「nginx1」だそうです。(以前は「nginx1.12」)

sudo amazon-linux-extras install nginx1

②インストールが完了したら起動してみます。

sudo systemctl start nginx

以下のコマンドで起動が成功したか確認します。「active」になっていればOKです。

sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2021-05-02 12:07:16 JST; 18s ago
  Process: 10293 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 10290 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 10289 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 10296 (nginx)
   CGroup: /system.slice/nginx.service
           ├─10296 nginx: master process /usr/sbin/nginx
           └─10297 nginx: worker process

nginxの基本的な操作方法

# 起動
$ systemctl start nginx

# 再起動
$ systemctl restart nginx

# 停止
$ systemctl stop nginx

③Nginxの自動起動設定します。

sudo systemctl enable nginx.service

以下のコマンドで自動起動にできたか確認します。

systemctl is-enabled nginx.service
enabled

仮想環境にIPアドレスを振ってsshでログイン

Vagrantで立ち上げた仮想環境にIPアドレスを振ります。

①Vagrantからログアウトします。

exit

②以下のコマンドでSSH接続情報を確認できます。

vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/Username/Work/Vagrant/AmazonLinux2/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

③Vagrantを停止します。

vagrant halt

以下のパスにある「Vagrantfile」を編集します。

/Users/Username/Work/Vagrant/AmazonLinux2/

以下の設定を追加します。

Vagrant.configure("2") do |config|
  config.vm.box = "amzn2-2.0.20200722.0-x86_64"
  config.vm.network "private_network", ip: "192.168.33.10"
end

④Vagrantを起動します。

vagrant up

⑤Macのブラウザを開き、「192.168.33.10」にアクセスします。すると、以下のようにNginxのトップページが表示されます。

次回

Djangoのプロジェクトを作成し、テスト起動します。

【Vagrant】Macに用意したAmazon Linux2 環境にDjangoプロジェクト作成【オンプレミス】


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告