由于任务需要,在公司服务器部署的nginx+django服务要在阿里云上也部署一份,防止因公司断网儿服务无法访问;阿里云是ubuntu14.04+apache2.4的环境,需要安装需要的环境加以部署。
ubuntu14.04 默认python 2.7 ,现需要环境为python 3.5,需要安装python3.5
- sudo add-apt-repository ppa:fkrull/deadsnakes
- sudo apt-get update
- sudo apt-get install python3.5
更改python3默认为3.5,因为服务器自带python2.7和python3.4
sudo ln -s /usr/bin/python3.5 /usr/bin/python3
安装pip(我是用源码安装,将源码放在一个文件中,安装后删除)
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
安装virtualenv环境(创建一套“隔离”的Python运行环境,只需要一个目录,不用的话直接删掉,方便快捷)
pip3 install virtualenv
mkdir myproject(在目录下创建一个文件夹)
cd /myproject
创建独立的python运行环境
virtualenv --no-site-packages venv
source venv/bin/activate (运行该环境)
安装django
pip install django
安装apache mod-wsgi 扩展
sudo apt-get install libapache2-mod-wsgi-py3
配置apache虚拟目录
vim /etc/apache2/site-available/site.conf
<VirtualHost *:80>
ServerName chinaipv6.org
ServerAlias www.chinaipv6.org
ServerAdmin [email protected]
WSGIScriptAlias / /var/www/chinaipv6/v6monitor/v6monitor/wsgi.py
WSGIDaemonProcess chinaipv6 lang=en_US.UTF-8 python-home=/var/local/project python-path=/var/www/chinaipv6/v6monitor # lang=en_US.UTF-8 解决‘ascii‘ codec decode byte)xe5 in position的错误(编码错误)python-home 指向python虚拟环境 python-path 指向django项目目录
WSGIProcessGroup chinaipv6 #(可以不写)
Alias /static /var/www/chinaipv6/static #(静态文件位置)
<Directory /var/www/chinaipv6/v6monitor/v6monitor>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/chinaipv6.error.log
CustomLog ${APACHE_LOG_DIR}/chinaipv6.access.log combined
</VirtualHost>
apache载入虚拟目录配置文件
a2ensite site.conf
service apache2 restart
将django项目放入对应 的web目录下,浏览器访问
错误解决 :
1.
mod_wsgi 模块版本要和运行环境的python保持一致或者高于运行环境的python,之前我的操作 sudo apt-get install libapache2-mod-wsgi-py3,是在没有安装python3.5的时候,py3的默认版本是python3.4,可以删除模块重新下载,或者使用python3.4的虚拟环境
2. 没有静态文件,网站打开很乱,没有布局,多半是静态文件没有生效。
- 确保你的配置文件中的路径是正确的
- 确保你的settings.py中的文件设置正确
- 收集静态文件 python manage.py collectstatic