4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS7+Apache2.4+Python3.6でとりあえず動かす

Last updated at Posted at 2020-01-01

捨ててもいいCentOSでとにかく動かしたいとき。

python3はvirtualenvでインストールした方が良い。

(追記)

最後にDockerfileを書いた。この手順をDockerfileに書き直しただけ。出来上がるイメージは600MBとかになるので、重すぎると思う。

alpineで作り直したらまだ軽くなるか。flaskをプロダクション環境で動かす時のベストプラクティスが知りたい。

Versions

CentOS

CentOS Linux release 7.6.1810 (Core)

HTTPD

httpd-develもインストールする。

httpd-tools-2.4.6-90.el7.centos.x86_64
httpd-2.4.6-90.el7.centos.x86_64
httpd-devel-2.4.6-90.el7.centos.x86_64

PYTHON

yum install python3で入れる

Python 3.6.8

ポイント

  • mod_wsgiyumでインストールしない。
    • python27のものが入ってしまう。
    • pip3 install mod_wsgiでインストールする
    • これをインストールするときにgccが必要になる。
yum install httpd httpd-devel python3 python3-devel gcc -y
pip3 install mod_wsgi
  • HTTPDのconf
    • LoadModuleで、上でインストールした物を指定する。これがApacheが動かすPythonのバージョンとなる。
    • python-pathsite-packagesまで含めたPathを指定する
    • 親玉confにListen 8080をちゃんと指定しておく
[root@ryo httpd]# cat /etc/httpd/conf.d/userdir.conf
<VirtualHost *:8080>
    ServerName example.com

    LoadModule wsgi_module /usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
    WSGIDaemonProcess ml user=vagrant group=vagrant threads=5 python-path=/usr/local/lib64/python3.6/site-packages
    WSGIScriptAlias / /opt/tryml/ryo/wsgi.wsgi

    <Directory /opt/tryml/ryo/>
        WSGIProcessGroup ml
        Order deny,allow
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>
  • wsgiのファイルを作る

import sys, os
sys.path.insert(0, os.path.dirname(__file__))
from sebserver import app as application

参考

Dockerfile

FROM centos:7
COPY ["*.py", "wsgi.wsgi", "requirements.txt", "/var/www/html/"]
RUN yum install httpd httpd-devel python3 python3-devel gcc -y; pip3 install -r /var/www/html/requirements.txt; mkdir /var/www/html/static; chown apache:apache /var/www/html/*
COPY templates/sample.html /var/www/html/templates/
COPY docker/py.conf /etc/httpd/conf.d/
COPY docker/httpd.conf /etc/httpd/conf/
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
4
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?