阿里云部署django Ubuntu 12.04.5 + Apache2.2 + django1.8
来源:互联网 发布:商场广播软件 编辑:程序博客网 时间:2024/04/30 12:07
阿里云部署django Ubuntu 12.04.5 + Apache2.2 + python3.3 + django1.8 + Mysql 5.5.46
vsftpd 安装与配置
apt-get update apt-get install vsftpd
ftpd: version 2.3.5
修改 /etc/vsftpd.conf
#anonymous_enable=YES 注释,避免匿名登录 local_enable=YES write_enable=YES # 没有这个会报550的权限错误
修改 /etc/ftpusers, 删除 root, 确保可以以root进行远程登录(我是新手,不知道这样的风险大不大)
apache2 安装与配置
apt-get install apache2 apache2-dev # Server version: Apache/2.2.22 (Ubuntu)
安装python3.3
直接在本地下载好,ftp进阿里云, Python-3.3.6.tgz, 是所以用3.3是因为3.4的mod-wsgi总是装不好
sudo apt-get install openssl sudo apt-get install libssl-dev tar zxvf Python-3.3.6.tgz cd Python-3.3.6 ./configure # 我是默认安装,可以增加 --prefix=/path/ 自定义安装目录 make make install # 安装 pip wget https://bootstrap.pypa.io/get-pip.py python3 setup.py install #
安装 django1.8
pip3 install django==1.8
django建立项目,请自行搜索,不再赘述
安装mysql
sudo apt-get install mysql-server sudo apt-get isntall mysql-client sudo apt-get install libmysqlclient-dev
django1.8 中的mysql 只支持 MySQLdb, 而python3 没有MySQLdb这个包,这里我们用pymysql代替,需要做小小的修改在 settings.py 同一文件夹下的 init.py 下添加
import pymysqlpymysql.install_as_MySQLdb()
需要将django默认的sqlite3修改为mysql,将下面代码替换settings.py 的DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'database_name', 'USER': 'database_user', 'PASSWORD': 'database_pwd', 'HOST': '', 'PORT': '', }}
安装 mod-wsgi
pip3 install mod-wsgi
将django目录写入 /etc/apache2/httpd.conf
ServerName 你的ipWSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.pyWSGIPythonPath /path/to/mysite.com<Directory /path/to/mysite.com/mysite><Files wsgi.py>Order deny,allowAllow from all# Require all granted# If you are using a version of Apache older than 2.4, replace Require all granted with Allow from all and also add the line Order deny,allow above it.</Files></Directory>Alias /robots.txt /path/to/mysite.com/static/robots.txtAlias /favicon.ico /path/to/mysite.com/static/favicon.icoAlias /media/ /path/to/mysite.com/media/Alias /static/ /path/to/mysite.com/static/<Directory /path/to/mysite.com/static>Require all granted</Directory><Directory /path/to/mysite.com/media>Require all granted</Directory>
重启apache apache2ctl restart
报错
Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configurationAction 'configtest' failed.
需要 安装 libapache2-mod-wsgi
sudo apt-get install libapache2-mod-wsgisudo a2enmod wsgisudo service apache2 restart
输入网址
报错 403 Forbidden
修改django文件权限
sudo chmod -R 755 path
报错找不到 django.core.wsgi
修改 /etc/apache2/httpd.conf文件,加入
WSGIPythonPath /usr/local/lib/python3.3/site-packages/这里是 python3 package的地址,可以用python sys.path查看
继续报错, Could not import settings ‘myproject.settings’ (Is it on sys.path?): No module named settings
都把人给整疯了,查找资料发现 wsgi.py 应该加入以下代码(参考http://www.ziqiangxuetang.com/django/django-deploy.html)
import osfrom os.path import join,dirname,abspathPROJECT_DIR = dirname(dirname(abspath(__file__)))#3import sys # 4sys.path.insert(0,PROJECT_DIR) # 5os.environ["DJANGO_SETTINGS_MODULE"] = "blog.settings" # 7from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()
第 3,4,5 行为新加的内容,作用是让脚本找到django项目的位置,也可以在sitename.conf中做,用WSGIPythonPath,想了解的自行搜索, 第 7 行如果一台服务器有多个django project时一定要修改成上面那样,否则访问的时候会发生网站互相串的情况,即访问A网站到了B网站,一会儿正常,一会儿又不正常(当然也可以使用 mod_wsgi daemon 模式,点击这里查看)
报错 Non-ASCII character
好奇怪,按说 python3 不应该有编码的问题,可还是出现了,无奈 文件首行加入 #coding=utf-8
报错 Invalid command ‘WSGIScriptAlias’, perhaps misspelled or defined by a module not included in the server configurationAction ‘configtest’ failed.
解决
sudo apt-get install libapache2-mod-wsgi
sudo a2enmod wsgi
sudo service apache2 restart
报错 无法导入 某模块
Request Method: GET
Django Version: 1.8
Exception Type: ImportError
Exception Value:
cannot import name _imaging
Exception Location: /usr/local/lib/python3.3/site-packages/PIL/Image.py in , line 66
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:
[‘/var/www/web’,
‘/usr/local/lib/python3.3/site-packages’,
‘/usr/lib/python2.7’,
‘/usr/lib/python2.7/plat-linux2’,
‘/usr/lib/python2.7/lib-tk’,
‘/usr/lib/python2.7/lib-old’,
‘/usr/lib/python2.7/lib-dynload’,
‘/usr/local/lib/python2.7/dist-packages’,
‘/usr/lib/python2.7/dist-packages’]
解决
这里发现python的版本居然是 python2.7,怪不得上面的编码也会出错,原来是mod_wsgi的版本不对,于是 将python3的so文件拷贝到apache下
cp /usr/local/lib/python3.3/site-packages/mod_wsgi/server/mod_wsgi-py33.cpython-33m.so /usr/lib/apache2/modules/mod_wsgi.so
重启apache
apache2ctl restart
搞定
- 阿里云部署django Ubuntu 12.04.5 + Apache2.2 + django1.8
- ubuntu python3.5 django1.8.5 apache2.4 wsgi mysql部署django项目
- Python3.5 Django1.8 apache2.4 Ubuntu 配置mod_wsgi模块
- Django1.7+Apache2.4部署
- 阿里云Ubuntu 16.04部署Python Django REST framework
- 阿里云Ubuntu上通过nginx+uwsgi部署Django
- Django1.10+Apache2.4+mod_wsgi+python3.5部署
- Windows下Django1.6 + Apache2.2 + mod_WSGI 配置部署
- Windows下Django1.6 + Apache2.2 + mod_WSGI 配置部署
- django学习日记--在ubuntu apache2上部署django
- 阿里云ECS ubuntu 14.04部署python3+django(1.8.2)+uwsgi+nginx
- OpenShift Python Django 部署(Python3.3 + Django1.5)
- Django项目用mod_wsgi部署到Apache2, Ubuntu 14.04
- ubuntu环境下python3-django部署到 apache2
- CentOS6.5+Django+Nginx+MySQL+uwsgi 阿里云环境部署
- 阿里云上CentOS6.5部署Django+nginx+uwsgi
- ubuntu 安装 apache2.2+mod_wsgi+Django
- ubuntu 13.04 安装 apache2.2+mod_wsgi+Django
- html冷门知识
- linux常用小技巧三
- double free or corruption (fasttop)产生
- eclipse中选中一个单词 其他相同的也被选中 怎么设置
- android之APN详解
- 阿里云部署django Ubuntu 12.04.5 + Apache2.2 + django1.8
- iOS Newbie - Xcode 7 & iOS 9 自定义UISearch Bar
- 没有界面faster-rcnn 跑demo.py
- Request与Response常用方法总结
- C++:类与对象5(矩形的面积与周长)
- 临界区,互斥量,信号量,事件的区别
- Java中int与Integer的使用区别
- CTreeCtrl 控件使用总结
- PHP事务