项目部署
基于ubuntu16.04系统, 使用Gunicorn + Nginx 进行部署,云服务器为阿里云
OK! 准备好上面我们就开始部署了
本人是用django2.0 和 python3.5 搭建博客的
阿里云服务器 —>此处为已备案
- 购买阿里云服务器
系统选择为 Ubuntu16.04 - 设置安全组
官网有提示 - 购买域名
首次备案是个让人头疼的事,别心急,慢慢等,哈哈, 可以先把项目部署上去通过ip访问,高效,值得推荐 - 远程连接
连接之后添加用户,因为root用户下部署代码不安全ssh root@公网ip
#新建用户 useradd -m -s /bin/bash 你的用户名 #将新用户加入超级权限组 usermod -a -G sudo 你的用户名 #设置密码 passwd 你的用户名 然后我建议重新登陆到新的用户
环境安装
- 先更新 apt 相关源
sudo apt-get update
- 安装中文语言包
sudo apt install language-pack-zh-hans #因为阿里云上面是纯净版的ubuntu 默认是英语
- 安装mysql
新手注意,安装时要记得设置mysql登陆密码,有个白框提示apt-get install mysql-server apt-get install libmysqlclient-dev
- 安装虚拟环境
注意:如果是添加的新用户,需要切换用户,最好重新登陆一下pip install virtualenv pip install virtualenvwrapper #如果提示失败,前面加sudo
- 使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下:
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace source /usr/local/bin/virtualenvwrapper.sh
- 使编辑后的文件生效
source ~/.bashrc
- 创建虚拟环境
mkvirtualenv django_py3 -p python3 #指定为python3版本
requirements文件
-
在本地项目中生成当前虚拟环境的所有依赖包
pip freeze > requirements.txt
-
上面的虚拟环境创建好之后,通过requirements文件,把所有依赖包安装到服务器上
pip install -r requirements.txt #一定要在虚拟环境下执行
拷贝本地项目到阿里云服务器
scp -r 本地文件路径 用户名@公网ip:远程保存路径
如果你的项目在github上面,直接在服务器创建文件夹 git clone 也是一样的
有了项目之后
- 在虚拟环境中安装上面的依赖包
- 创建生产环境的配置文件
不要问为什么,一切为了安全#settings 文件下 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost ', '.你的域名']
- 创建数据库
create database 项目中设置的数据库名 charset=utf8;
- 迁移数据库
注意:如果本地有迁移数据的话先删除掉#cd 到manage.py目录 python manage.py makemigrations python manage.py migrate
收集静态文件
-
在项目设置文件中添加配置信息
STATIC_URL = '/static/' # 加入下面的配置 STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_ROOT 指明了静态文件的收集目录,即项目根目录(BASE_DIR)下的 static 文件夹。
-
执行收集
python manage.py collectstatic
创建后台管理用户
python manage.py createsuperuser
安装nginx
-
安装
sudo apt-get install nginx
-
启动与停止
/etc/init.d/nginx start #启动 /etc/init.d/nginx stop #停止 权限不够加sudo
-
配置文件
编辑文件:/etc/nginx/sites-available/defaultserver { # 监听80端口 listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { # 请求转发到gunicorn服务器 proxy_pass http://127.0.0.1:5000; # 请求转发到多个gunicorn服务器 # 设置请求头,并将头信息传递给服务器端 proxy_set_header Host $host; # 设置请求头,传递原始请求ip给 gunicorn 服务器 proxy_set_header X-Real-IP $remote_addr; } location /static { alias /此处填写你收集静态文件的路径,下面会提到/; } ... }
安装Gunicorn
- 安装
#在创建的虚拟环境中安装 pip install gunicorn
- 运行
# -w: 表示进程(worker) -b:表示绑定ip地址和端口号(bind) gunicorn -w 2 -b 127.0.0.1:5000(ip是在nginx配置里面对应的) 运行文件名称:项目程序实例名 例如:gunicorn -w 2 -b 127.0.0.1:5000 myblog.wsgi:application
此时启动了 nginx 和 gunicorn 后,通过域名就可以访问到自己的项目了