投稿日: | 最終更新日:
【Vagrant】Macに用意したAmazon Linux2 環境にsqlite3、nginxをインストール【オンプレミス】
VagrantのAmazon Linux2環境にsqlite3、Nginxをインストールします。
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を確認します。
②下記コマンドを実行します。
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のプロジェクトを作成し、テスト起動します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1