安裝環(huán)境
Remote: CentOS 7.4 x64 (django.example.com)
Python: Python3.6.5
Apache: Apache 2.4.6
Mod_wsgi: 4.6.4
Django: Django 2.0.4
一. 系統(tǒng)環(huán)境配置
1.關(guān)閉 iptables 和 selinux
# su - root
# service iptables stop
# setenforce 0
# vi /etc/sysconfig/selinux
修改
SELINUX=disabled
2.添加本地 host DNS
# vi /etc/hosts
127.0.0.1 django.example.com
二. Python 配置
1.安裝 python3.6.5 源及依賴包
# yum install epel-release -y
# yum groupinstall "Development tools" -y
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel -y
2.編譯安裝 python3.6.5 以及 pip package manager
# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz --no-check-certificate
# tar xf Python-3.6.5.tar.xz
# cd Python-3.6.5
# ./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
# make && make altinstall
3.安裝 virtualenv
# pip3.6 install --upgrade pip
# pip3.6 install virtualenv
三. Django 環(huán)境配置
1. 配置 Django virtualenv
# mkdir -p /var/www/html/django
# cd /var/www/html/django
# virtualenv -p /usr/local/bin/python3.6 .py3env
2. 開啟 virtualenv python3 環(huán)境
# source .py3env/bin/activate
3. 在此環(huán)境安裝 Django 相關(guān)模塊
# pip install django pymysql
四. Apache 配置
1. 安裝 apache package
# yum install httpd httpd-devel -y
2.安裝 mod_wsgi for python3
Tip:這里其實(shí)是一個遠(yuǎn)古巨坑, 網(wǎng)上 90% 以上資料的會粗心的直接使用 yum install mod_wsgi 去安裝 apache mod_wsgi 模塊, 這樣做其實(shí)最終 mod 模塊會調(diào)用本地默認(rèn)的 python2 的所有庫文件, 無論你后面如何配置 django 入口文件, apache 都不會使用我們配置的 virutalenv 下隔離的 python3, 導(dǎo)致 apache 無法調(diào)用 python3 而報(bào)錯. 這里小伙伴要注意哦.
# pip install mod_wsgi
3.導(dǎo)出 apache 所需的 mod_wsgi 模塊
# mod_wsgi-express install-module
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"WSGIPythonHome "/var/www/html/.py3env"
4.配置 apache 配置文件
# vi /etc/httpd/conf/httpd.conf
末行添加:
LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
# vi /etc/httpd/conf.d/django.conf
Alias /static /var/www/html/django/static
<Directory /var/www/html/django/static>
Require all granted
</Directory>
<Directory /var/www/html/django/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIPythonHome "/var/www/html/django/.py3env"
Listen 8080
<VirtualHost *:8080>
ServerName django.example.com
WSGIDaemonProcess myproject python-path=/var/www/html/django/.py3env/lib/python3.6/site-pachages
WSGIScriptAlias / /var/www/html/django/myproject/wsgi.py
</VirtualHost>
5.重啟 apache 并設(shè)置開機(jī)自啟動
# systemctl restart httpd
# systemctl enable httpd
五. Django 項(xiàng)目配置
1. 保證 virtualenv python3 環(huán)境開啟
# source /var/www/html/django/.py3env/bin/activate
2.創(chuàng)建一個 Django 項(xiàng)目
# cd /var/www/html/django/
# django-admin startproject myproject .
3.添加 static 目錄
# vi myproject/settings.py
末行添加:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
4.創(chuàng)建本地 SQLlite 文件
Tip:這里使用 SQLlite 代替其他數(shù)據(jù)庫作為我們項(xiàng)目的 DB
# ./manage.py makemigrations
# ./manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK
5.創(chuàng)建項(xiàng)目管理員賬戶
# ./manage.py createsuperuser
Username (leave blank to use 'root'): root
Email address: admin@admin.com
Password:
Password (again):
Superuser created successfully.
6.生成項(xiàng)目靜態(tài)文件目錄
# ./manage.py collectstatic
7.修改 wsgi 入口文件
# vi myproject/wsgi.py
import os
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
sys.path.append('/var/www/html/django')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
8.添加ALLOWED_HOSTS
# vi myproject/settings.py
Update:
ALLOWED_HOSTS = ['django.example.com']
9.修改項(xiàng)目屬主和權(quán)限
# chmod -R 755 /var/www/html
# chown -R apache:apache /var/www/html
查看最終目錄下的生成的項(xiàng)目文件
# ls -l
-rwxr-xr-x 1 apache apache 38912 Apr 16 15:04 db.sqlite3
-rwxr-xr-x 1 apache apache 541 Apr 16 14:50 manage.py
drwxr-xr-x 3 apache apache 4096 Apr 16 15:21 myproject
drwxr-xr-x 3 apache apache 4096 Apr 16 15:05 static
最終瀏覽器訪問 django 項(xiàng)目
Tip:保證 windows 本地添加 django 服務(wù)器的 HOST 域名
django 測試頁面
項(xiàng)目主頁, 輸入之前創(chuàng)建的管理員賬號密碼
項(xiàng)目后臺
Finished...
轉(zhuǎn)載|本文由(showerlee)原創(chuàng)
原文鏈接:http://www.showerlee.com/archives/2511
公告通知
自動化運(yùn)維班锚扎、架構(gòu)師班洞翩、區(qū)塊鏈正在招生中
各位小伙伴們检号,歡迎試聽和咨詢: