一、版本问题
python3.5 + anaconda env +Django 1.11.16 +Apache
2.4.6+Ubuntu14.04
二、切换python版本
Ubuntu16.04系统自带python版本为2.7,这里先将python版本替换3.5。
第三步是为了以后用python3的时候直接输入python,而不用每次都输入python3。如果需要用的python2的地方直接使用python2 程序名
sudo apt-get install python3.5
sudo rm /usr/bin/pythons
udo ln -s /usr/bin/python3 /usr/bin/python
三、安装pip
安装pip的目的是为了方便安装python相关插件
sudo apt-get install python3-pip
四、安装Django
直接使用pip进行django的安装,注意指定django的版本。
sudo pip install Django==1.11.16
django-admin -version //查看版本
五、安装Apache2
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi-py3
apachectl -v //查看是否安装成功
六、在Apache上部署Django
1.创建dijango项目
cd /home/slave01/gncc
django-admin startproject gravityWeb //创建gravityWeb项目
【出现的问题】
1.pycharm中使用的是虚拟环境,最好不要用
解决方法:此时可以换成conda下的env环境
2.SDK问题,不能新建python环境
解决方法:环境名重复,删去重复的python环境,只保留一个
2.创建静态文件和模板存放目录
创建静态文件static、模板templates、数据文件dataSet等,拷贝之前static下的文件
cd gravityWeb
mkdir static/dataSet/templates
python manage.py collectstatic
//将Django资源包中必须的静态文件复制到static文件中,这其中包括admin界面展示必须的样式表、图片及脚本。
修改gravityWeb/gravityWeb/settings.py文件,添加下列语句
STATICFILES_DIRS = (
os.path.join(BASE_DIR,’static’),
os.path.join(BASE_DIR,’static/css’),
os.path.join(BASE_DIR,’static/js’),
os.path.join(BASE_DIR,’static/html’),
os.path.join(BASE_DIR,’static/json’),
os.path.join(BASE_DIR,’static/bootstrap-3.3.5’),
os.path.join(BASE_DIR,’static/bootstrap-datetimepicker’),
os.path.join(BASE_DIR,’dataSet’),
)
3.创建虚拟主机配置文件
在/etc/apache2/sites-available目录下创建gravityWeb.conf配置文件,配置文件的名字要和项目名字相同。
sudo vim /etc/apache2/sites-available/gravityWeb.conf
编辑配置文件
`<VirtualHost *:8080> //服务器端口号为8080
ServerName 本机IP地址或访问的网站名 #记得在settings的ALLOWED_HOST=[加上本机IP或访问的网站名]
DocumentRoot /home/slave01/gncc/gravityWeb #项目的目录
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log.combined
Alias /static/ /home/slave01/gncc/gravityWeb/static/
#文件授权---静态文件
<Directory /home/slave01/gncc/gravityWeb/static/>
Require all granted
</Directory>
#文件授权---模板文件
<Directory /home/slave01/gncc/gravityWeb/templates/>
Require all granted
</Directory>
#文件授权---数据文件
<Directory /home/slave01/gncc/gravityWeb/dataSet/>
Require all granted
</Directory>
#通过wsgi.py 连接apache2和你的Django项目
WSGIScriptAlias / /home/slave01/gncc/gravityWeb/gravityWeb/wsgi.py
<Directory /home/slave01/gncc/gravityWeb/gravityWeb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
编辑/etc/apache2/mods-available/wsgi.conf,在文件中添加一行
sudo vim /etc/apache2/mods-available/wsgi.conf添加项目地址
WSGIPythonPath /home/slave01/gravityWeb
编辑/etc/apache2/ports.conf,修改apache的监听端口
sudo vim /etc/apache2/ports.conf
修改端口 Listen 8080
4.激活网站
cd /etc/apache2/sites-available
sudo a2ensite gravityWeb.conf
5.重启apache2服务器
sudo /etc/init.d/apache2 restart
6.整个部署工作全部完成,在浏览器输入本机IP地址:8080查看
可以输入localhost:8080/index进入主页
【出现的问题】
- apache部署django,引入numpy出现import error 错误
解决方法:由于Apache调的是整体环境的包,不会调conda中安装的numpy/pandas,所以在conda中安装numpy/pandas无用,需要在终端执行命令sudo apt-get install
python3-numpy 和sudo apt-get install python3-pandas
2.template isnot exist,找不到index.html文件
解决方法:settings下的添加一句
Templates=[
DIR = [os.path.join(BASE_DIR,‘templates’)]
]