|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 forsaken 于 2016-3-9 16:37 编辑
最近一直在学习django做一些东西,在学习了基本架构之后就想在服务器上部署一下模拟真实运营环境,于是乎就遇见的各种各样的问题,在查阅的诸多资料后还算解决了一些,在这里做一些简单的记录吧,不过由于水平有限有些机理并没有完全掌握,在以后技术提高之后再进行修正。
我自己租了一台阿里云的服务器,使用的是ubuntu系统,不知道其他的系统是什么样,反正这个的刚开机的情况着实令人蛋疼。
首先里面默认安装了python2.7和python3.4
默认是使用的python2.7,不过他默认的安装版本可能有一些问题,所以我想安装最新的python3.5.1,那么第一个问题就来了,安装python!
那么第一步需要更新系统
如果不更新的话有一些依赖的环境将无法安装
安装好后,进入你想安装的位置比如安装在/home目录下
下载python,需要其他版本更改一下版本号就可以了
- $ wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
复制代码
解压
- $ sudo tar zxvf Python-3.5.1.tgz
复制代码
然后网上许多文章就开始讲进行编译安装了,不过仅仅这样可能会出现许多意想不到的bug,因为缺少相应的编译环境
- sudo apt-get install libpcre3 libpcre3-dev libssl-dev zlib1g-dev libffi-dev
复制代码
install后面都是需要依赖的编译环境,缺什么装什么,装不了的请升级系统,不过这可能只是一部分,其他的一些因为还没有碰到相应的情况,暂时这些就已经可以正常工作了,以后遇到了再进行修正。
安装了之后进入解压好的python目录
执行
- $ sudo ./configure --prefix=/home/python
复制代码
prefix后面是安装路径可自行定义
编译过程中可能会发现依旧有很多no,可能是依赖的环境还是不完整
完成后执行
稍等一会儿后执行
稍等片刻python就安装完成了
不过此时执行
仍旧是2.7
这里我是使用软连接来进行修改
- ln -s /home/python/bin/python3.5 /usr/bin/python
复制代码
当然该目录下如果已经存在了python链接,将其删除或重命名就可以了,当然pip也要链进去
软连接大致相当于windows下的快捷方式,一般可能在
- /bin
- /sbin
- /usr/bin
- /usr/sbin
- /usr/local/bin
复制代码
可以进这些目录下看一看管理一下自己的链接
至此在linux下就已经成功安装了python3.5.1
执行
应该就是3.5.1版本了
接下来就是配置服务器,我使用的是nginx+uwsgi
安装nginx等环境
- sudo apt-get install python-dev nginx
复制代码
安装uwsgi
当然之前需要安装django
pip安装的包都在
目录下,如果输入一些包的命令无效,可以将其用上面的方法使用软链接链到上面的某个目录中
在你的想要的目录下建立django项目
- cd /home
- django-admin.py startproject mysite
复制代码
然后建立一个应用吧
- cd mysite
- python manage.py startapp myapp
复制代码
现在就可以着手服务器的配置了
将uwsgi_params这个文件复制到项目目录下
它在这里
接下来写uwsgi的配置文件
在项目目录下建立一个.ini文件,就叫mysite.ini好了,当然名字可以随便取,写入如下配置信息
- [uwsgi]
- socket = /tmp/mysite.sock
- chdir = /home/mysite/
- wsgi-file = mysite/wsgi.py
- master = true
- processes = 2
- threads = 4
- chmod-socket = 666
- daemonize = /home/mysite/mysite.log
复制代码
sock文件夹是uwsgi与nginx连接的通道,将其放在/tmp目录下可避免权限问题,在其他目录下可能会因为权限问题引发500错误,所以如果在配置过程中出现500错误,可能就是因为权限问题,最后的daemonize是uwsgi的日志位置,出现错误应该第一时间查看日志,探究其真正的错误原因,我一开始就不会看日志走了不少弯路,直接搜索出现的问题给出的答案各式各样解决不了问题。。
然后就开始配置nginx文件,新建文件mysite.conf
- # the upstream component nginx needs to connect to
- upstream mysite {
- server unix:///tmp/mysite.sock;
- # server 127.0.0.1:8001
- }
- # Configuration of the server
- server {
- # the port your site will be served on
- listen 80;
- # the domain name it will serve for
- server_name * # substitute your machine's IP address or FQDN
- charset utf-8
- # max upload size
- client_max_body_size 75M; # adjust to taste
- access_log /home/mysite/access.log;
- error_log /home/mysite/error.log;
- # Django media
- location /media {
- alias /home/mysite/media;
- }
- location /static {
- alias /home/mysite/static;
- }
- # Finally. send all non-media requests to the Django server
- location / {
- uwsgi_pass mysite;
- include /home/mysite/uwsgi_params;
- }
- location = /favicon.ico{
- log_not_found off;
- }
- }
-
复制代码
upstream与sock文件夹相连接,server_name写域名或ip就好了,access_log和error_log是nginx的日志,出现异常应第一时间查看,最后的favicon.ico这个东西还没有研究过是做什么的,但如果没使用过这个东西也不添加这段语句的话会出现404错误,所以先把它关掉。
之后将这个配置文件连接到nginx下
- ln -s /home/mysite/mysite.conf /etc/nginx/sites-enabled/mysite.conf
复制代码
可执行
来检测是否有语法问题
接下来对django项目配置文件settings.py进行修改
这是为了省事就直接用‘*’来匹配所有,更多的写法还是看官方的文档吧~
如果是在生产环境应将
如果是测试阶段可以改为True
最后加入静态文件配置目录
- STATIC_ROOT = '/home/mysite/static/'
复制代码
保存完成
进入项目目录
运行
重启服务器
部署静态文件
- python manage.py collectstatic
复制代码
至此应该就可以正常工作了,如果有问题多多查看日志,我在部署过程中就出现了404和500错误,主要原因是python安装不完整,sock权限问题,favicon.ico这个东西的问题,和settings.py未进行设置。存在的问题可根据日志进行逐一排查。静态文件每次进行修改都需要执行部署静态文件的语句。 |
评分
-
查看全部评分
|