一、环境说明:
ubuntu-17.10.1-desktop 64位
二、查看系统自带python默认版本,以及系统中python版本
1.命令行下输入: python, 可以查看python默认版本,输出为 python2.7.3
2.命令行下输入:whereis python, 可以查看python的路径,我的环境下python有三个版本,分别是:python2.7.2, python3.6, python3.7
三、将 系统默认的python版本改为我们想要的版本,如:我想将默认版本改为python3.6
1.命令行下执行:update-alternatives --install /usr/bin/python python /usr/bin/python2.7.3 1
2.命令行下执行:update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
3.命令行下执行:python 【查看当前python的默认版本】
4.命令行下执行:update-alternatives --list python 【列出可用的Python替代版本】
四、安装pytho3-pip并更改python的pip默认安装依赖路径
1.命令行下执行:sudo apt-get install python3-pip
2.查看pip默认安装依赖路径
1)命令行执行:python -m site,可以得到结果:sys.path, USER_BASE, USER_SITE, ENABLE_USER_SITE
*USER_BASE, USER_SITE其实就是用户自定义的启用Python脚本和依赖安装包的基础路径
2) 命令行执行:python -m site --user-site 查看pip默认安装依赖路径
3.修改pip默认安装依赖路径
1)命令行输入:python -m site -help 【显示要修改的文件site.py的路径】
2)命令行修改site.py文件中USER_SITE的路径【我设置的是 python3.6下的dist-package路径】
3)测试安装
五、apache2安装
1.命令行执行:sudo apt-get install apache2
2.浏览器输入:http://localhost
3.修改apache2的默认端口号
1)命令行执行:whereis apache2 【查找apache2, 找到/etc/apache2】
2)打开/etc/apache2/ports.conf,将端口80改为8001
3)打开/etc/apache2/sites-enabled/000-default文件,将VirtualHost *:80修改成VirtualHost *:8001
4)命令行执行:sudo /etc/init.d/apache2 restart 【重启apache服务】
5)浏览器输入:http://localhost:8001
六、安装mod-wsgi
1.命令行执行: sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
七、配置python dajngo环境
1.sudo pip3 install virtualenv 【下载依赖】
2.cd ~/myproject 【切换至项目文件夹跟目录下】
3. virtualenv myprojectenv 【创建python虚拟环境】
4.source myprojectenv/bin/activate 【激活虚拟环境】
5.pip install django 【虚拟环境中下载依赖】
6.初始化数据库
cd ~/myproject
./manage.py makemigrations
./manage.py migrate
7.为项目创建管理员用户:./manage.py createsuperuser
8.把静态文件放到static目录 :./manage.py collectstatic
9.如果开启了防火墙,打开8000端口:sudo ufw allow 8000
10.测试Django项目,启动server: ./manage.py runserver 0.0.0.0:8000
11.浏览器输入:http://server_domain_or_IP:8000
八.配置apache
1. 打开配置文件: sudo nano /etc/apache2/sites-available/000-default.conf
2.所有static的请求映射到Django项目的/static目录,在VirtualHost块中添加:
<VirtualHost *:80>
. . .
Alias /static /home/sammy/myproject/static
<Directory /home/sammy/myproject/static>
Require all granted
</Directory>
</VirtualHost>
3. 配置apache有访问项目目录中wsgi.py的权限:
<VirtualHost *:80>
. . .
Alias /static /home/sammy/myproject/static
<Directory /home/sammy/myproject/static>
Require all granted
</Directory>
<Directory /home/sammy/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
4. Django建议使用daemon模式运行WSGI进程,配置WSGIDaemonProcess:
<VirtualHost *:80>
. . .
Alias /static /home/sammy/myproject/static
<Directory /home/sammy/myproject/static>
Require all granted
</Directory>
<Directory /home/sammy/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-home=/home/sammy/myproject/myprojectenv python-path=/home/sammy/myproject
WSGIProcessGroup myproject
WSGIScriptAlias / /home/sammy/myproject/myproject/wsgi.py
</VirtualHost>
*注意替换上面的Python虚拟环境路径和项目路径
5. 修正一些目录和文件权限:
chmod 664 ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject
6. 如果你配置了防火墙,开启80、443端口:
sudo ufw delete allow 8000
sudo ufw allow 'Apache Full'
7. 检查Apache配置文件是否有语法错误:
sudo apache2ctl configtest
Output
. . .
Syntax OK
8. 如果没有语法错误,重启Apache:
sudo systemctl restart apache2
9. 现在使用浏览器访问 http://your_doamin_or_IP:port测试Apache-Django部署是否成功: