mod_wsgi 4.7.1 install とdjango環境設定
前回の続きで、Apacheとpythonの橋渡しをしてくれるmod_wsgiのinstallです。これもソースコードからinstallします。
うまく、wgetで取得できなかったので、Webブラウザ経由でここから取得しました。
- ソースコード展開
$ cd /usr/local/src
$ tar xzvf mod_wsgi-4.7.1.tar.gz
$ cd mod_wsgi-4.7.1
このディレクトリにmod_wsgi-4.7.1関連のソースコードが展開されます。 - build/install
$ ./configure CFLAGS=-fPIC --with-python=/usr/local/bin/python3
$ make
$ sudo make install
ここからapacheとmod_wsgiを関連付けるの設定になります。
- httpd.conf
/usr/local/src/apache2/conf/httpd.confに下記を追記します。
LoadModuleが記載されている最後に下記を追記します。
LoadModule wsgi_module modules/mod_wsgi.so
最後にwsgi module関連を設定するため外部ファイルへincludeを追記します。<IfModule wsgi_module>
Include conf/extra/wsgi.conf
</IfModule>
2カ所追記してhttpd.confを保存します。 - extra/wsgi.conf
/usr/local/src/apache2/conf/extra/wsgi.confを新規作成します。
djangoでの環境を下記とします。
アプリのディレクトリを/hoge/hoge/application
wsgi.pyのあるディレクトリを/hoge/hoge/application/application/wsgi.py
WSGIScriptAlias / /hoge/hoge/application/application/wsgi.py
WSGIPythonPath /hoge/hoge/application
<Directory /hoge/hoge/application/application/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /hoge/hoge/application/static/
<Directory /hoge/hoge/application/static>
Require all granted
</Directory> - apacheを再起動
$ sudo /usr/local/apache2/bin/apachectl stop
$ sudo /usr/local/apache2/bin/apachectl start
最後に、設定してみたけど動かない場合は、下記を確認するといいと思います。
- apacheの設定は記載ミスがあったりするので、http -tでチェックしてくれます。
- apahceのログファイルは、/usr/local/apache2/logsにerror.logに出力されています。
- python + djangoでの問題もあるかもしれません。そんなときは、下記のコマンドで単独で起動してみましょう。
$ python manage.py runserver
これでエラーが出力される場合は、python + djangoの問題の可能性が高いです。pipでのinstallが異なっている可能性があります。確認してみてください。 - 最後にエラー出力でわからない場合は、エラーメッセージをgoogle検索してみるといいでしょう。何かしらのヒントになるかもしれません。
下記サイトを参考にしました。ありがとうございます。
Apache 2.4 install
前回に引き続き、tinker board sで、djangoでの実行環境を構築します。
始めに関連するライブラリをinstallします。
ファイルを作成したり、コピーするので、作業ユーザに関しては、適宜権限を付与してください。
apr
- ソースコードを取得
$ cd /usr/local/src
$ wget http://www.us.apache.org/dist/apr/apr-1.7.0.tar.gz -
ソースコードを展開
$ tar xzvf apr-1.7.0.tar.gz
※apr-1.7.0のディレクトリにソースコードが展開されます。 - build/install
$ cd apr-1.7.0
$ ./configure --prefix=/usr/local/lib/apr-1.7.0
$ make
$ sudo make install
※/usr/local/lib/apr-1.7.0にライブラリ等々がコピーされます。
apr-util
- ソースコードを取得
$ cd /usr/local/src
$ wget http://www.us.apache.org/dist/apr/apr-util-1.6.1.tar.gz - ソースコードを展開
$ tar xzvf apr-util-1.6.1.tar.gz
※apr-util-1.6.1のディレクトリにソースコードが展開されます。 - build/install
cd apr-util-1.6.1
./configure --prefix=/usr/local/lib/apr-util-1.6.1 --with-apr=/usr/local/lib/apr-1.7.0/
make
sudo make install
pcre
- ソースコードを取得
$ cd /usr/local/src
$ wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz - ソースコードを展開
$ tar xzvf pcre-8.44.tar.gz
※pcre-8.44のディレクトリにソースコードが展開されます。 - build/install
$ cd pcre-8.44
$ ./configure
$ make
$ sudo make install
apache
- ソースコードを取得
$ cd /usr/local/src
$ wget http://ftp.jaist.ac.jp/pub/apache/httpd/httpd-2.4.43.tar.gz - ソースコードを展開
$ tar xzvf httpd-2.4.43.tar.gz
※httpd-2.4.43のディレクトリにソースコードが展開されます。 - build/install
$ cd httpd-2.4.43
$ ./configure --with-apr=/usr/local/lib/apr-1.7.0 --with-apr-util=/usr/local/lib/apr-util-1.6.1 --with-pcre=/usr/local
※ここで、先にインストールしたaprとapr-utilとpcreのライブラリのディレクトリを指定します。
$ make
$ sudo make install
apacheの起動
- 設定ファイルを変更します
/usr/local/apache2/conf/httpd.confにあるServerNameを環境に合わせて変更します。 - apacheを起動します
$ sudo /usr/local/apache2/bin/apachectl start - ネットワークにつながっている他のPCからブラウザからアドレスをhttp:// ServerName もしくは、tinker board sに割り振られているIPアドレス http:// xxx.xxx.xxx.xxxに指定するとapacheのページ("It works!"の文字列が表示)が表示されます。
※port番号が1024以上であれば、ユーザ権限でも起動できます。
次は、mod_wsgiをinstallします。
mod_wsgi
前回、Pythonをインストールしたので、次はmod_wsgiをインストールしてみた。
が、エラーが表示され、起動できない。
/mod_wsgi-py37.cpython-37m-arm-linux-gnueabihf.so: unexpected reloc type 0x03
よくよく考えてみた。
ソースコードでPythonはインストールしたが、他のモジュール(特にmod_wsgi)は、apt-getだった。おそらくapt-getしたmod_wsgiとソースコードでインストールしたPythonで問題が発生しているようだ...
apt-getはすべてのアプリやライブラリでこれらの問題(ライブラリのバージョンが異なることで動作しないとか、依存するアプリやライブラリがインストールされていない...)を解決して提供しているわけだ。
Python3.7.7 環境構築
Tinker Board S(Debian)でPythonの最新環境(3.7.7)作成するとき、
./configure --enable-optimizationsをつけてコンパイルすると下記のエラーメッセージが出る。
error: the control flow of function ‘PyCurses_ConvertToString.isra.0’ does not match its profile data (counter ‘arcs’) [-Werror=coverage-mismatch]
検索すると、どうも--enable-optimizationsのオプションに問題があるようだ。
下記コマンドでPython3のinstallができる。
./configure --enable-shared LDFLAGS=-Wl,-rpath,
sudo make/make altinstall
sudo ln -fns /usr/local/bin/python3.7 python3
あとは、pipやらvirtualenvして問題なし。
このサイトが参考になりました。ありがとうございます。
https://www.mk-mode.com/blog/2020/01/05/debian-10-python-3-7-installation-by-src/#