设为首页 收藏本站
查看: 825|回复: 0

[经验分享] ubuntu 12.10 virtualenv & django

[复制链接]

尚未签到

发表于 2018-5-5 09:54:46 | 显示全部楼层 |阅读模式
一、安装apache及apache-python模块:



  • sudo apt-get install apache2
  • sudo apt-get install libapache2-mod-python2.7

二、apache python配置



  • vim /etc/apache2/conf.d/charset,取消AddDefaultCharset UTF-8的注释

  • vim /etc/apache2/mods-available/python.conf,添加:
  • <Directory /var/www/py>
  •         AddHandler mod_python .py  
  •         AddType text/html  .py  
  •         PythonHandler pytest
  •         PythonDebug On        
  • </Directory>

  • sudo ln -s /etc/apache2/mods-available/python.conf /etc/apache2/mods-enabled/python.conf

  • sudo vim /etc/apache2/sites-available/python,内容如下:   
  • <VirtualHost *:80>  
  •     DocumentRoot /var/www/py
  •     ServerName py   

  •     <Directory /var/www/py>
  •          AddHandler mod_python .py  
  •          PythonHandler pytest
  •          PythonDebug On
  •      </Directory>
  • </VirtualHost>

  • ln -s /etc/apache2/sites-available/python /etc/apache2/sites-enabled/python

  • mkdir -p /var/www/py
  • chown -R www-data:www-data /var/www/py    //用户apache运行的用户,默认是www-data
  • chmod -R 775 /var/www/py
  • sudo adduser dave www-data

  • sudo service apache2 restart
  • 访问:http://127.0.0.1

三、测试是否成功:

    sudo vim /var/www/py/pytest.py,注意要与<Directory>里的PythonHandler pytest名称相同:   


  • #!/usr/bin/python  
  • # -*- coding:utf-8 -*-
  • from mod_python import apache  

  • def handler(req):
  •         req.content_type = 'text/html'      //请求对象的类型
  •         req.write('<h1>hello!</h1>')      //req是请求对象,它有一个专有方法:write
  •         return apache.OK  

  • chown -R www-data:www-data pytest.py  
  • chmod 775 pytest.py

  • sudo service apache2 restart
  • 访问:http://127.0.0.1/py/pytest.py

四、virtualenv安装与配置



  • sudo apt-get install -y python-dev python-setuptools
  • sudo easy_install virtualenv virtualenvwrapper pip

  • sudo mkdir /home/dave/study/webapps    //所有virtualenv环境的工作总目录  
  • sudo chown -R www-data:www-data /home/dave/study/webapps
  • sudo chmod -R g+rw /home/dave/study/webapps

  • 添加如下行到~/.bashrc:
  • export VIRTUALENV_USE_DISTRIBUTE=1
  • export WORKON_HOME=/home/dave/study/webapps
  • source /usr/local/bin/virtualenvwrapper.sh
  • export PIP_VIRTUALENV_BASE=$WORKON_HOME
  • export PIP_RESPECT_VIRTUALENV=true
  • export PYTHONPATH=/usr/local/lib/python2.7:$PYTHONPATH

  • 然后source ~/.bashrc,如果报错,查看目录属主和权限

    创建虚拟环境,并安装相关软件:


  • cd ~/study/webapps  
  • mkvirtualenv firstenv
  • pip install &quot;django==1.4.5&quot;,
  • pip install MySQL-python     
  •   //在虚拟环境中安装相关软件,注意,安装mysql-python之前,首先要sudo apt-get install python-dev libmysqlclient-dev,否则会安装失败

  •   
  • 查看django是否安装成功:  
  • python,进入idle  
  • >>import django  
  • >>print django.VERSION  
  •     1.4.5

  virtualenvwrapper常规用法,参考:http://www.cnblogs.com/Phenix_Yang/archive/2012/05/08/2489724.html:   


  • cd webapps
  • mkvirtualenv  NAME    //创建虚拟环境
  • rmvirtualenv  NAME    //删除虚拟环境
  • lsvirtualenv                  //列出所有虚拟环境
  • workon  NAME             //进入指定虚拟环境,如果不指定NAME,则列出所有的虚拟环境
  • deactivate                   //退出当前虚拟环境

pip常规用法:

    pip安装软件时,都是到pypi网站中去找,而pypi只搜集软件包的链接,问题在于链接可能失效,所以pip也是有坑的。



  • pip freeze                                   //列出所有已经安装的软件包  
  • pip search django                     //查找名字中带django的软件包  
  • pip install django                      //安装django,默认安装最新版  
  • pip install &quot;django==1.4.5&quot;    //安装软件包时指定版本,还可以使用<、<=、>、>=来指定版本范围,如pip install &quot;django>1.4 <1.5&quot;  
  • pip install -U django                 //升级django  
  • pip uninstall django                 //卸载django

五、在virtualenv中创建django项目和应用:

    django版本:1.4.5

    网络上的django文章,大部分都是比较老的,可以参考,但是最好还是去看官方文档。   

    1、进入虚拟环境,并创建一个项目:



  • workon firstenv  
  • cd firstenv  && django-admin.py startproject mysite   
  •    
  •   //startproject命令 创建一个名为mysite的项目,项目的目录名称也是mysite,位于firstenv目录下  
  •   //mysite目录结构:  
  •     mysite/  
  •         manage.py  
  •         mysite/  
  •             __init__.py  
  •             settings.py  
  •             urls.py  
  •             wsgi.py

    最外层的那个mysite/,是项目mysite的目录,目录下包括一个manage.py命令行工具和一个mysite的目录

    里层的那个mysite/,目录下有一个__init__.py,说明它是一个python包,使用时像一般的python包一样导入,如:import mysite.settings

   

    2、启动内置web服务器进行测试:

    python manage.py runserver

    访问:http://127.0.0.1:8000

    //为了方便开发,django内置了一个轻量级的web服务器,它可以监测代码的变动,自动reload,使我们在开发时可以直接修改代码而不需要重启web服务。但是不要把它部署到生产环境中。

    //新增文件不能触发reload,需要重启web服务

   

    3、配置数据库和TimeZone:

    vim firstenv/mysite/mysite/settings.py,

    修改DATABASES配置段,略

    修改TimeZone配置段,略

    修改完成后,运行如下命令为项目在数据库中创建相应表:python manage.py syncdb

   

    4、创建一个应用(app):

    在manage.py的同级目录下执行命令:python manage.py startapp polls

    //也可以把app创建到项目目录下,做为mysite的子模块

    //项目与应用(project和app),一个web站点的project,是该站点的一系列app和配置文件的集合;app是实现站点某一功能的python包。

    //project的配置文件为apps提供了一个运行环境,project下的多个app可以共用project的配置信息,如数据库配置、模板位置等。

   

    5、把app注册到settings,在INSTALLED_APPS配置段中末尾添加前面创建的app:polls,如下:



  • vim firstenv/mysite/mysite/settins,

  • INSTALLED_APPS = (  
  •     ...  
  •     ...  
  •     'polls',  
  • )

   

    6、创建数据模型(Model):   


  • vim firstenv/mysite/polls/models.py,输入:

  • class Poll(models.Model):  
  •     question = models.CharField(max_length=200)
  •     pub_date = models.DateTimeField('date published')

  •     def __unicode__(self):  
  •         return self.question

  • class Choice(models.Model):
  •     poll = models.ForeignKey(Poll)
  •     choice = models.CharField(max_length=200)
  •     votes = models.IntegerField()

  •     def __unicode__(self):
  •         return self.choice

     //上述类创建两个数据模型:Poll和Chioce

    //Model是存在于应用(app)之中的,因此要使用数据模型要首先创建django应用

    //每一个model类,可以认为是一个数据库表,每一个model类包含了一些参数,如前面的question、pub_date等,这些参数代表着数据库表的一个个字段;数据库使用前面在settings中定义的数据库

    //models.CharField、models.IntegerField等,指定了字段的类型

    //ForeignKey指定了外键约束关系

   

    把数据模型同步到数据库:   


  • python firstenv/mysite/manage.py validate     //验证创建的数据模型是否有效无误

  • python firstenv/mysite/manage.py sqlall polls  
  •   //查看把数据模型提交给数据库时执行的sql语句,它并没有真正执行sql语句
  •   //查看一下这里的显示,表名会自动转换成小写;数据模型会自动创建主键ID;外键约束字段名末尾会自动添加'_id'

  • python firstenv/mysite/manage.py syncdb
  •   //把数据模型提交给数据库,创建相应的表
  •   //这条命令可以执行任意次数,它只创建库中没有的表,同名表不会执行创建动作

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-456053-1-1.html 上篇帖子: ubuntu中常用的一些命令 下篇帖子: UBuntu更改被背景色
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表