美文网首页
python django blog 下: 部署与优化

python django blog 下: 部署与优化

作者: dc630f46ee2d | 来源:发表于2017-11-19 16:42 被阅读0次

前言

所有步骤全部参考http://zmrenwu.com/post/2/ 自己结合自己的电脑和主机的差异性做个笔记而已,最好去看原版教程

搭建服务器

远程登录服务器

我使用的是搬瓦工vps作为自己的服务器,进入搬瓦工的可视化后台管理查看服务器后台ip和ssh端口号,在自己的电脑上使用命令行SSH(一种网络协议,用于计算机之间的加密登录)来登录我们的服务器。这里使用的系统是Ubuntu64位。

ssh root@65.49.224.37 -p 26421

第一次连接会如下显示

The authenticity of host '[65.49.224.37]:26421 ([65.49.224.37]:26421)' can't be established.
ECDSA key fingerprint is SHA256:TbDf02szpEtziV/5YYuzdI9iLgWSf3mQM+F5OyDvOHE.
Are you sure you want to continue connecting (yes/no)? yes

因为这是第一次登录,ssh无法判断远程的服务端是否是正确的,在这里如果有人中间截获了你的登录请求,并且模拟ssh服务端的话,你的密码就会泄漏(中间人攻击),所以ssh会询问你:远程服务端的指纹是:xxxx,是不是确定登录。
选择yes,ssh会把该服务端的信息存到本地的~/.ssh/known_hosts文件中,那么下次登录就不会再询问了.

之后,会弹出要求你输入远程服务器的root账号的密码

root@65.49.224.37's password: 

如果忘记了,可以在搬瓦工可视化管理后台重新设置一下


屏幕快照 2017-11-19 下午3.00.26.png

然后回到自己的电脑命令行输入刚才设置的root账号密码,此后命令行变成下面这样,表示成功登录远程服务器

root@ubuntu:~#

此后我们对服务器的所有操作都通过这种方式进行

安装软件

使用root账户直接操作不太安全,我们首先要创建一个有超级权限的新用户。按照教程输入即可。

# 在 root 用户下运行这条命令创建一个新用户,zhou 是用户名
# 我取的用户名是 zhou
# 选择一个你喜欢的用户名,不一定非得和我的相同
root@localhost:~# useradd -m -s /bin/bash zhou

# 把新创建的用户加入超级权限组
root@localhost:~# usermod -a -G sudo zhou

# 为新用户设置密码
# 注意在输密码的时候不会有字符显示,不要以为键盘坏了,正常输入即可
root@localhost:~# passwd zhou

# 切换到创建的新用户
root@localhost:~# su - zhou

# 切换成功,@符号前面已经是新用户名而不是 root 了
zhou@localhost:~$

在mac下我们使用homebrew包管理工具来安装软件,对于ubuntu 也有一个类似的软件工具叫apt-get.使用它可以方便的在命令行安装各种软件。

如果是新服务器的话,最好先更新一下系统,避免因为版本太旧而给后面安装软件带来麻烦。运行下面的两条命令

zhou@localhost:~$ sudo apt-get update
zhou@localhost:~$ sudo apt-get upgrade

然后,安装需要的软件

zhou@localhost:~$ sudo apt-get install nginx
zhou@localhost:~$ sudo apt-get install git python3 python3-pip
zhou@localhost:~$ sudo pip3 install virtualenv

注意这里安装python3-pip可能会出现错误.即安装后使用pip3命令不能成功执行sudo pip3 install virtualenv

zhou@ubuntu:~$ sudo sudo pip3  isntall virtualenv
Traceback (most recent call last):
  File "/usr/bin/pip3", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2708, in <module>
    working_set.require(__requires__)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 686, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==1.5.4

出现这种情况后 我打算先卸载pip3

sudo apt-get remove python3-pip

依然无效。最后发现是ubuntu12.04版本太老了,找不到pip3源。请教网友后换了ubuntu16.04。再次进入搬瓦工可视化节目,install new os选ubuntu14的版本。

购买域名

在阿里云可以方便的买一个域名,只是为了测试,随便注册一个域名即可,一些非常见后缀的域名非常便宜,一般 10元/年就能搞定。但注意一点根据工信部规定,以下后缀的域名需要实名认证后才能使用:

.cn/.com/.net/.top/.xyz/.vip/.club/.ren/.wang/.shop/.xin/.中国/.信息/.公司/.网络/.广东/.佛山

这通常需要花费几天的时间。所以如果只为了测试和学习部署的话,最好避开上述后缀的域名。域名的作用是绑定空间后用户不需要通过ip地址就可以访问,现在我们来绑定空间。

进入阿里云个人账户后台,查看到自己购买的域名


屏幕快照 2017-11-19 下午4.27.39.png

弹出页面点击快速设置解析


屏幕快照 2017-11-19 下午4.28.58.png
弹出页面输入服务器ip地址
屏幕快照 2017-11-19 下午4.29.16.png

启动 Nginx 服务

yangxg@localhost:~$ sudo service nginx start

部署

部署前项目设置

Django 项目中会有一些 CSS、JavaScript 等静态文件,为了能够方便地让 Nginx 处理这些静态文件的请求,我们把项目中的全部静态文件收集到一个统一的目录下,这个目录通常位于 Django 项目的根目录,并且命名为 static。为了完成这些任务,需要在项目的配置文件里做一些必要的配置:

blogproject/settings.py

# 其他配置...

STATIC_URL = '/static/'
# 加入下面的配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

BASE_DIR 是项目根目录,我理解就是manage.py所在目录

为了安全起见,在生产环境下需要关闭 DEBUG 选项以及设置允许访问的域名。打开 settings.py 文件,找到 DEBUG 和 ALLOWED_HOSTS 这两个选项,将它们设置成如下的值:

blogproject/settings.py

DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1', 'localhost ', '.zhoublog.kim']

项目还会依赖一些第三方 Python 库,为了方便在服务器上一次性安装,我们将全部依赖写入一个叫 requirements.txt 的文本文件中。激活本地的虚拟环境(如果你使用了虚拟环境的话),并进入项目的根目录,运行 pip freeze > requirements.txt 命令:

(blogproject_env) C:\Users\zhou\Workspace\blogproject>
pip freeze > requirements.txt

这里解释一下pip freeze是列出当前虚拟环境下的所有的第三方库。其实也是我们工程的所有依赖。> 是一个重定向命令会在用户当前目录下创建一个文件,并把第三方库写入到这个文件里面。

总结 在blogproject/settings.py中配置STATIC_ROOT,DEBUG,ALLOWED_HOSTS。将虚拟环境的第三方库倒入到根目录下requirements.txt。

设置服务器目录结构

sites/ 可以放不同的网站,www.zhoublog.kim/ 所有资源和代码都放在这里,下面有两个目录,一个是虚拟环境目录,存放虚拟环境,另外一个是我们的工程

/home/zhou/
    sites/
        www.zhoublog.kim/
            env/
            detail/
  1. 创建如下目录
/home/zhou/
    sites/
        www.zhoublog.kim/

使用下面这样的命令

cd ~ 
mkdir -p sites/www.zhoublog.kim

-p代表递归,会递归的创建sites 和它的子目录。不用-p 无法递归创建,要依次创建如下。

cd ~ 
mkdir sites
cd sites
mkdir www.zhoublog.kim
  1. www.zhoublog.kim/目录下创建虚拟环境env/
cd ~/sites/www.zhoublog.kim
virtualenv --python=python3 env

virtualenv 是工具名,--python=python3 来指定克隆 Python3 的环境,env为创建的虚拟环境目录(实际名字可以随意)
创建完后要检查是否成功创建了虚拟环境目录。可以使用ls,看到当前目录下有一个env 表示创建成功

  1. 使用git clone 命令将代码从github上clone下来
cd  ~/sites/www.zhoublog.kim
git clone git@github.com:rookie250/detail.git

会clone一个工程,工程名叫detail

相关文章

网友评论

      本文标题:python django blog 下: 部署与优化

      本文链接:https://www.haomeiwen.com/subject/grgsvxtx.html