编程技术记录

世界你好!

记录下过程

安装Python3.6

正常情况下,Python3.6是自带的

$ sudo apt-get install python3.6

创建Python3虚拟环境

ubuntu自带Python2和Python3,默认情况下Python2的优先级高
需要虚拟一个Python3的环境

# 安装virtualenv
$ sudo apt-get install virtualenv

# 创建python3.6虚拟环境 -p指定python3.6解释器路径
$ virtualenv -p /usr/bin/python3.6  envPython3.6

# 激活Python3.6环境
$ cd envPython3.6
$ source bin/activate
#查看当前版本
$ python -V

注:

如果不使用虚拟环境,也可提升Python3.6的优先级
如果有多个Python3.x,调整Python3的优先级,使得3.6优先级较高
$ sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.5 1
$ sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.6 2

更改默认值,python默认为Python2,现在修改为Python3
$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python2 100
$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python3 150

查看当前版本
$ python -V

sudo apt-get install libapache2-mod-wsgi-py3

创建一个Django应用

安装Django

# 在激活的Python3.6虚拟环境中
$ pip install Django

创建一个项目

$ django-admin startproject DjangoProj

DjangoProj为项目名,项目名需要为合法的 Python 包名,如不能为 1a 或 a-b等。

创建成功后,会有一个DjangoProj文件夹,里面包含manage.py文件

创建一个应用

# 在激活的Python3.6虚拟环境中
$  cd DjangoProj
$  python manage.py startapp firstApp

安装Apache2 和 mod_wsgi

$ sudo apt-get install apache2
$ sudo apt-get install libapache2-mod-wsgi-py3

配置文件

/etc/apahce2/sites-available文件夹下创建配置文件,如firstApp.conf

# firstApp.conf
<VirtualHost *:80>
    #如果有域名,可以配置域名;没有域名,可以配置ip地址
    ServerName  hello.com
    ServerAlias  abcName
    #管理员联系方式
    ServerAdmin helloAdmin@hello.com

    #指定项目路径
    WSGIDaemonProcess abcName  python-home=/home/ubuntu/envPython3.6/
    WSGIProcessGroup abcName

    # 配置wsgi.py脚本路径  在使用Django创建的项目目录下面
    WSGIScriptAlias /firstApp  /home/ubuntu/envPython3.6/DjangoProj/DjangoProj/wsgi.py

    <Directory /home/ubuntu/envPython3.6/DjangoProj/>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
</VirtualHost>

使用VS Code Remote SSH打开文件时,可能会遇到权限问题,可以用如下命令修改相应文件夹的权限

变更所有者

$ sudo chown -R 当前用户名 /etc/apache2/sites-available/

修改wsgi.py

添加如下代码

import sys
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,PROJECT_DIR)

完整代码

import os

import sys
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,PROJECT_DIR)

from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoProj.settings')
application = get_wsgi_application()

激活配置文件

$ sudo a2ensite firstApp.conf
$ sudo systemctl reload apache2

© Beli. All Rights Reserved.