ubuntu python3.5 django1.8.5 apache2.4 wsgi mysql部署django项目

     如题,以上就是我的部分环境,之所以说是部分环境,因为我的服务器上还有python2.7,python3.4。这些东西的确让人很头疼,因为在这过程中,你可能遇到各种各样无法解释的错误,可最后你还是解决了。

     我用的是阿里云服务器,一开始便有python2.7和python3.4,而且旧版本是不可以删除的,它包含了新版本可能会使用的一些东西,可我本地开发使用的是python3.5,所以我又安装了python3.5。我使用源码编译安装(你可以去官网下载源码),为了解决以后部署静态文件时可能出现的ImportError: No module named zlib问题(zlib模块是用来压缩或者解压缩数据,以便保存和传输。它是其他压缩工具的基础)
       在正确的安装了zlib之后            http://download.csdn.net/detail/yytudou123/6639315下载
      编译Python时执行步骤:
     ./configure --with-zlib就这句(注意看一下上面的输出,它包含python3.5的默认安装位置)
                                                     make
                                                     sudo  make install
当然如果你以后遇到这样的问题,你也可以重新编译安装python。之后在控制台输入python,看一下版本,如果是2.7,或者是3.4,而不是你想要的3.5,那可能是你忘记设置python3的软连接了,软连接能够让你键入python时运行你所希望的python版本。(#mv /usr/bin/python /usr/bin/python2.7 //当前python的版本为2.7所以是python2.7 
#ln -s /usr/local/bin/python3.5 /usr/bin/python 
          输入#python -V,即可查看当前默认python版本 
          默认的python成功指向3.5.0以后,yum不能正常使用,需要修改yum的配置文件  
          #vi /usr/bin/yum 
          把文件头部的#!/usr/bin/python改成#!/usr/bin/python2.7 //改为之前的老版本号 
          保存退出,yum即可正常使用。如若有其他命令、软件不能正常使用,仿照yum配置文件的修改方法,修改其配置          文件即可。 )


     然后是pip,不对,是pip3,在linux系统,python3.x对应的pip工具是pip3,使用sudo apt-get install python3-pip应该就能安装成功了。(这里有我没搞明白的一件事:一开始pip3默认安装到了python3.4的目录下--pip3 -V显示对应3.4的python,使用pip3 install 的包都安装到了3.4使用的dist-packages下,而在默认的3.5却没有--我用python命令行下导入django包显示没有改模块。。。当初我的解决办法是拷贝包内容到3.5的site-packages文件夹下,cp -r /usr/local/lib/python3.4/dist-packages/. /usr/local/lib/python3.5/site-packages/ ,但就在刚才,我输入pip3 -V,却显示对应的python是3.5...我猜是因为我昨天使用zlib重新安装了python3.5)。这些做完后你就可以下载任何你想要的python模块了。


     接着是apache2服务器。我用的是官网下载的源码进行安装。这个在百度知道上有教程,(但那个教程有个地方打错了,浪费了我十几分钟时间。。)方法如下:
          
1.下载依赖包:
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz  wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz  wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip

2.解压依赖包 (unzip 可使用 sudo apt-get install unzip 下载)
tar -xzvf apr-1.4.5.tar.gz
tar -xzvf apr-util-1.3.12.tar.gz
unzip pcre-8.10.zip

3.安装apr-1.4.5
进入安装目录
cd /opt/apr-1.4.5/
安装及编译
./configure --prefix=/usr/local/apr
make && make install

4.进入安装目录 安装apr-util
cd /opt/apr-util-1.3.12/
安装及编译
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make && make install

5.进入安装目录 安装pcre
cd /opt/pcre-8.10/
安装及编译
./configure --prefix=/usr/local/pcre
make && make install

重新安装apache
6.进入安装目录
cd /opt/httpd-2.4.10/
安装及编译
需要用--with参数指定我们刚才安装的依赖包位置
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
make && make install
     好的,恭喜你把apache安装好了,你可以去apache目录下的conf目录中的httpd.conf文件中看看它默认的配置,读一读它的注释,改一改端口号之类的。在bin目录下运行./apachectl start, 运行成功后 然后用浏览器访问一下,出现it worked即可。


       接着你需要安装wsgi模块http://blog.csdn.net/dodouaj/article/details/50267519 这是我之前遇到的一个坑。。。./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/bin/python3 配置之后执行make && make install  (apxs使用你安装的apache下面的apxs,python使用python3的软连接,貌似使用python的软连接就报错了,我不明白,明明都是指向3.5的----在控制台输入python 和python3都会显示3.5版本python)。成功后你会在apache目录下面的modules下面看到你的mod_wsgi.so文件,这个东西就是那堆c代码安装后的结果。
        然后是发布(部署)代码,wsgi.py基本不用改东西,setting.py需要改一些,我的项目使用git pull放在了/path/to 目录下。


设置static文件:
STATIC_ROOT =  "/path/to/DiningHouse/static"   # 我们新建文件夹(这个文件夹好像被放到我的工程里面了,不过没关系,好跟其他工程区分) 这个文件夹用来收集我们工程中所有install app的静态文件

配置完之后运行python manage.py collectstatic,(我记得是这个命令)如果报语法错误,尝试把python替换成python3.5 python3.4 试试就能成功。如果是zlib模块的错误,就按照最上面的,重新安装一下python3.5


之后我们配置一下项目在apache中的wsgi  打开apache安装目录下的conf 中的httpd.conf文件,加入以下内容
          
# django project

Alias /media/ /path/to/DiningHouse/media/
Alias /static/ /path/to/DiningHouse/static/

<Directory /path/to/DiningHouse/static>
Require all granted
</Directory>

<Directory /path/to/DiningHouse/media>
Require all granted
</Directory>

WSGIScriptAlias / /path/to/DiningHouse/DiningHouse/wsgi.py
WSGIPythonPath /path/to/DiningHouse

<Directory /path/to/DiningHouse/DiningHouse>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
如果你是用的apache是比2.4旧的版本,把Require all granted替换成 Allow from all 。
     最后是数据库的事情。sudo apt-get install mysql-server,如果是用的阿里云服务器,

默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log

首先登录: mysql -u root -h localhost -p

use mysql                #打开mysql数据库

 

#将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip

     update user set host='%' where user='root' and host='localhost';

     flush privileges;        #刷新权限表,使配置生效

     然后我们就能远程连接我们的mysql了。

如果您想关闭远程连接,恢复mysql的默认设置(只能本地连接),您可以通过以下步骤操作:

     use mysql                #打开mysql数据库

     #将host设置为localhost表示只能本地连接mysql

     update user set host='localhost' where user='root';

     flush privileges;        #刷新权限表,使配置生效

备注:您也可以添加一个用户名为yuancheng,密码为123456,权限为%(表示任意ip都能连接)的远程连接用户。命令参考如下:

     grant all on *.* to 'yuancheng'@'%' identified by '123456';

     flush privileges;
) 
对于阿里云服务器 !!!! vim /etc/mysql/my.cnf       注释掉绑定的locahost 否则只能local才能连接数据库,远程无法连接
    最后还有一个坑,在linux系统下,有人说apache2服务器无法连接在本机上的mysql数据库服务!而且也不能修改apache2的用户权限为能够连接mysql服务,总之比较坑。更可恶的是,我直接在python控制台下使用pymysql也不能连接本机的数据库。。。(总是没反应,很久后出现连接超时),好吧,我们使用另一台服务器上的数据库服务,这样就可以了(而且最好数据库服务跟服务器分开)。最后调试一下,配置配置日志什么的。

          祝你一切顺利。

谢谢众多博主。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值