前言
所有步骤全部参考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/
- 创建如下目录
/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
- 在www.zhoublog.kim/目录下创建虚拟环境env/
cd ~/sites/www.zhoublog.kim
virtualenv --python=python3 env
virtualenv 是工具名,--python=python3 来指定克隆 Python3 的环境,env为创建的虚拟环境目录(实际名字可以随意)
创建完后要检查是否成功创建了虚拟环境目录。可以使用ls
,看到当前目录下有一个env
表示创建成功
- 使用git clone 命令将代码从github上clone下来
cd ~/sites/www.zhoublog.kim
git clone git@github.com:rookie250/detail.git
会clone一个工程,工程名叫detail
网友评论