LoginSignup
0
0

More than 3 years have passed since last update.

CentOS7+Anaconda+Django+ApacheでWebサーバを立てる

Last updated at Posted at 2020-09-28

Anacondaで作った画像処理プログラムをApache+Djangoで動かしたくなったので簡単な自分用メモ。SSLとかセキュリティ的なことは全くしていません。

CentOS7のインストール

公式サイトから、centos7のx86_64をクリックして、CentOS-7-x86_64-DVD-2003.isoをインストールして、USBメモリに焼いていきます。4.7GBなので、DVD-Rだと無理そう。
https://www.centos.org/download/

イメージが入っているUSBをインストールしたいPCに挿して、CentOSインストーラを起動していきます。
起動すると、言語の設定など、いろいろ出てくると思いますが、ソフトウェアの設定で、「GNOME Desktop」を選択するようにすると使いやすいと思います。
ネットワークとホスト名の設定で、ホスト名を設定できますが、後で変更できるのでデフォルトでもいいですが、ドメイン名を含んだFQDN形式で設定すると尚いいと思います。
そのままインストールをしていきます。
この辺の説明に関してはCentOSのインストールにわかりやすく書いてあります(筆者もこれを見ながらインストールしました)。
途中でrootのパスワードを設定しますが、必ず覚えておきましょう。

Apacheのインストール

無事にCentOSがインストールできたら、ターミナル(端末)を起動しましょう。ここではApacheをyumというコマンドでインストールしていきます。

$ su - 
パスワード: (rootのパスワード)
# yum list | grep httpd
httpd.x86_64
httpd-devel.x86_64
httpd-manual.noarch
httpd-ttools.x86_64
(以下いろいろ)

# yum -y install httpd httpd-tools httpd-devel httpd-manual
(インストール)

# yum list installed | grep httpd
httpd.x86_64
httpd-devel.x86_64
httpd-manual.noarch
httpd-ttools.x86_64

# systemctl start httpd
# systemctl status httpd
(ここで、● httpd.service - The Apache HTTP Server)みたいなのが出てきたら正常に起動しています。)

ここからは自動起動の設定
# systemctl enable httpd
# systemctl is-enabled httpd
enabled

80番ポートのオープン
# iptables -I INPUT 7 -p tcp --dport 80 -j ACCEPT
# service iptables save

# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload
success
# getenforce
Enforcing
# vi /etc/selinux/config
enforcing から disabled に変更します
SELINUX=disabled

一度パソコンを再起動します

# getenforce
Disabled

これで大丈夫です。ここまでできたら、

# ifconfig
enp3s0: flags=***
        inet 192.168.***.***  netmask 255.255.240.0
        (いろいろ)

でIPアドレスを確認して、ブラウザにhttp://192.168.〇〇〇.〇〇〇などのように入力して、Testing 123...というウェルカムページが表示されていれば完了です。

Anacondaのインストール

Anacondaをインストールするときに、バージョン管理ツールのpyenvを入れます。

パッケージのアップデート
# yum update -y

pyenvをgitから取得
# cd /usr/local/bin
# git clone git://github.com/yyuu/pyenv.git ./pyenv

アクセスできるようにパスを設定
# echo 'export PYENV_ROOT="/usr/local/bin/pyenv"' >> ~/.bashrc
# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
# echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# source ~/.bashrc
# exec $SHELL -l
# pyenv --version
pyenv 1.2.20-7-gdd62b0d

こうなれば、pyenvのインストールは完了です。
それでは、Anacondaをインストールしていきます。

# pyenv install --list | grep anaconda
(パッケージがいろいろ出てくるので最新版を取得しましょう)
(私は後で使うモジュールと合わせるためにanaconda3-4.4.0を選びました)
# pyenv install anaconda3-4.4.0
# pyenv rehash
# pyenv global anaconda3-4.4.0
# pyenv version
anaconda3-4.4.0 (set by /usr/local/bin/pyenv/version)
# python -V
Python 3.6.1

これでAnacondaのインストールは完了です。

Djangoのインストール

Djangoを使いたいのでインストールしていきます。

condaのアップデート
# conda update conda
# conda update --all
# conda install django

せっかくなので、仮想環境を作っていきます。

# source create -n django
# source activate django

ちなみに仮想環境を抜けるときは

# source deactivate django

としましょう。

実際にdjangoが使えているか確認します。

# cd /var/www/
ここの名前はkomonじゃなくて、好きな名前でいいです(mysiteなど)
# django-admin startproject komon
# cd komon
# python manage.py makemigrations
# python manage.py migrate
# python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

*月 **, 2020 - **:**:**
Django version 3.1, using settings 'komon.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-

として、http://127.0.0.1:8000 をブラウザで打ち込んでみて、ロケットのようなウェルカムページが表示されていれば完了です。

では実際に文字を表示させていきます。

# python manage.py startapp myapp
# cd myapp
# vi views.py -> 編集
# vi urls.py  -> 編集
views.py
from django.shutcuts import render
# create your views here.
from django.http import HttpResponse

def index(request):
  return HttpResponse("Hello, World!")
urls.py
from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
]
# cd ..
# cd komon
# vi urls.py  -> 編集
# vi settings.py  -> 編集
urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
  path('admin/', admin.site.urls),
  path('', include('myapp.urls')),
]
settings.py
DEBUG = False  <- TrueからFalseにする
ALLOWED_HOSTS = ['*']

INSTALLED_APPS - [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'myapp',  <- 追加
]

ROOT_URLCONF = 'komon.urls'

WSGI_APPLICATION = 'komon.wsgi.application'

これで設定は終わりです。

WSGIのインストール

djangoのインストールまでは比較的できると思いますが、つまづくのがこのWSGIのインストールです。Apacheはデフォルトでpythonに対応していないので、wsgiを用いて、djangoを認識するようにするようなものらしいです。
これまでyumでいろいろインストールしてきましたが、yumでインストールするとCentOSにデフォルトで入ってるpython2系と結びつくらしいので、pipを使いましょう。

# pip install mod_wsgi
# python -c "import sys;print(sys.path)"
['','/usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python36.zip', 
'/usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6', 
'/usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6/lib-dynload', 
'/usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packages']
と出るので、
/usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packagesを次のコマンドで打ち込みます。

# ls /usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packages/mod_wsgi/server/
mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
のとなるので、
/usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
を覚えておきましょう。

ここから、先ほど作ったDjangoのプロジェクトとつなげていきます。

# cd /etc/httpd/conf.d/
# vi django.conf

ここには、何も書かれていないまっさらなテキストになるので、以下を記述していきます。

django.conf
LoadModule wsgi_module /usr/local/bin/pyenv/versions/anaconda3-4.4.0/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so (さっきのやつ)
ServerName 192.168.***.*** (IPアドレス)
WSGIScriptAlias / /var/www/komon/komon/wsgi.py
WSGIPythonPath /var/www/komon:/usr/local/bin/pyenv/versions/anaconda3-4.4.0/bin/python

<Directory /var/www/komon/komon>
  <Files wsgi.py>
    Require all granted
  </Files>
</Directory>
# systemctl restart httpd

ブラウザを起動して、http://192.168.〇〇〇.〇〇〇を入力して、Hello, World!を表示されていれば大丈夫です。同一ネットワークであれば、他のパソコンからもみることができると思います。
続きは, https://qiita.com/hinoma/items/9c57a1cf214ebf137ace

参考にしたURL・サイト

https://www.rem-system.com/centos-install/
https://hombre-nuevo.com/python/python0032/
https://engineers.weddingpark.co.jp/?p=1031
https://qiita.com/dekosuke-menti/items/e416f198980c0fd6e75b

冒頭にも書きましたが、セキュリティ的なことは全くやっていません。エラーなどはmod_wsgiに関する部分を占めると思うので、エラーコードなどチェックしていくといいと思います。

0
0
0

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
0
0