将网站系统按生产条件标准进行部署,部署方案采用目前流行的Nginx+Gunicorn
。
部署环境
- CentOS 7.1 64bit
- Python 3.6.5
项目准备
首先需要把自己本地的项目放到服务器上面来,我使用的是 Github 克隆项目,这种从代码库克隆的方式是比较推荐的,因为可以让服务器上面的项目保持跟代码仓库中同步。首先安装git
# yum install git
接着新建项目文件存放目录webapps/blog
# mkdir -p /webapps/blog
进入目录并克隆远程仓库代码
# cd /webapps/blog
# git clone https://github.com/leeyis/jbt_blog.git jbt_blog
上面这句 git 的命令是意思是将 jbt_blog.git 这个项目克隆到本地并命名为 jbt_blog,当然,项目的名称你可以按照自己的喜欢去命名。
为了保证公网访问能成功,还要开放服务器80端口,本文中服务器为CentOS7.1,执行如下命令开放80端口(已开放的可以忽略这一步)
# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-port=80/tcp --permanent
重启防火墙
# firewall-cmd --reload
查看服务器端口开放情况
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh http
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
可以看到80端口已开放。
部署过程
1.创建系统用户
默认root用户权限太大,为降低系统安全风险,我们需要单独新建一个系统用户来运行我们的web应用,该用户使用有限的权限来运行这个web应用。
首先新建系统组webapps
,然后为应用创建一个用户,名字叫做jbt
,附给系统组webapps
# groupadd --system webapps
# useradd --system --gid webapps --home /webapps/blog jbt
2.创建虚拟环境
虚拟环境的创建使用Virtualenv
工具,它可以在系统中创建一个独立的Python环境,多个应用之间彼此不受影响,这样不同的应用使用的依赖库就不会相互冲突。安装虚拟环境之前需要用到pip
这个包管理工具,如果服务器上没有的可以参考这篇文章http://jinbitou.net/2016/11/13/2148.html
进行安装,这里就不做说明了。
执行如下命令创建虚拟环境jbt_env
# cd /webapps/blog/
# virtualenv jbt_env
Using base prefix '/usr/local'
New python executable in /webapps/blog/jbt_env/bin/python
Installing setuptools, pip, wheel...done.
执行如下命令激活虚拟环境
# source jbt_env/bin/activate