django ubuntu16.04 python3 apache搭建django后端环境
先讲一下事情的来龙去脉,因为很想把自己的垃圾网站迁移到django上面去,一直在服务器端配置环境,但是奈何网上的教程都很旧,自己费尽千辛万苦才找到了一个教程,但是还是有一些不足的地方,现在写一篇博客与大家分享。
1.ubuntu16.04自带python3.5,所以不用安装python3
2.安装pip3
sudo apt install python3-pip
3.安装python3虚拟环境
sudo pip3 install virtualenv
4.创建虚拟环境
virtualenv mynewenv
5.**新虚拟环境
source mynewenv/bin/activate
6.安装django
pip3 install django
7.我是在本地建好一个django初始项目的时候上传到服务器的,具体方法就是用pycharm新建一个django项目,然后绑定服务器并上传,具体步骤如下:
最后在tools-->developments-->upload至服务器即可
8.上传成功后进入项目根目录
cd myproject
sudo vim myproject/settings.py
9.为了简单我这里使用默认的SQLite数据库;配置静态文件目录,在文件尾添加:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
10.初始化SQLlite数据库
python3 manage.py makemigrations
python3 manage.py migrate
11.为项目创建管理员用户:
python3 manage.py createsuperuser
12.把静态文件放到static目录:
python3 manage.py collectstatic
上面命令在项目目录中创建了static目录.
13.如果开启了防火墙,打开8000端口:
sudo ufw allow 8000
14.测试Django项目,启动server:
python3 manage.py runserver 0.0.0.0:8000
使用浏览器访问:http://127.0.0.1:8000,应该能看到成功的页面了
浏览器访问:http://137.0.0.1:8000/admin,你就能通过前面创建的管理员账号进入后端页面了
15.配置apache:
sudo apt-get install python-pip apache2 libapache2-mod-wsgi
编辑默认Virtual Host配置文件:
sudo vim /etc/apache2/sites-available/000-default.conf
所有static的请求映射到Django项目的/static目录,在VirtualHost块中添加:
# 项目路径
Alias /static /home/snail/myproject/static
<Directory /home/snail/myproject/static>
Require all granted
</Directory>
配置apache有访问项目目录中wsgi.py的权限:
<Directory /home/snail/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Django建议使用daemon模式运行WSGI进程,配置WSGIDaemonProcess:
WSGIDaemonProcess myproject python-home=/home/snail/mynewenv python-path=/home/snail/myproject
WSGIProcessGroup myproject
WSGIScriptAlias / /home/snail/myproject/myproject/wsgi.py
注意替换上面的项目路径(snail是我的用户名,myproject是我的项目名),最后的应该是这个样子:
修正一些目录和文件权限:
chmod 664 ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject
如果你配置了防火墙,开启80、443端口:
sudo ufw delete allow 8000
sudo ufw allow 'Apache Full'
检查是否有语法错误:
sudo apache2ctl configtest
如果没有语法错误,重启Apache:
sudo systemctl restart apache2
大功告成!!这个时候输入你的服务器IP 地址或者域名你就可以访问你的网页啦!