1.部署准备
1.腾讯云服务器(Ubuntu 16.04系统)
在购买了腾讯云服务器成功之后,腾讯云的站内信会将系统的登录名:Ubuntu,以及登录初始密码发给你。
2.本地需要的软件工具
1. Xshell 远程操作服务器实例
通过Xshell,打开软件→【文件】→【新建】→【新建会话,输入云服务器的公网ip,用户名:ubuntu,登录初始密码】即可连接到云服务器。
为了方便安装包,从用户ubuntu切换为root用户:
代码语言:javascript复制sudo -i
2. filezilla 用于将打包成zip包的项目压缩文件包,上传到云服务器的 /home/ubuntu目录下
3.Navicat for Mysql 用于同步本地和服务器的数据库
3.本地项目准备
1.django项目
1.settings.py配置
1.settings.py中配置公网ip才允许访问:
代码语言:javascript复制ALLOWED_HOSTS = ['公网ip']
2.settings.py中追加静态文件路径配置代码:
代码语言:javascript复制STATIC_ROOT=os.path.join(BASE_DIR,'static')
STATICFILES_DIR=[os.path.join(BASE_DIR,'static'),] #这一条在开发阶段就可以添加
3.settings.py中关闭开发调试模式:
代码语言:javascript复制DEBUG = False
2.生成requirements.txt
代码语言:javascript复制pip freeze >requirements.txt
3.将chaoyuecun项目打包成zip包
2.同步数据库
1.在云服务器安装Mysql数据库
1.服务器安装Mysql5.7(目前默认安装的Mysql就是5.7版本的)
代码语言:javascript复制apt-get install mysql-server
y
#设置数据库密码,跟本地的数据库密码设置为相同的就可以,省着在项目的settings中麻烦再特意做修改了
apt-get install mysql-client
apt-get install libmysqlclient-dev
y
2.修改服务器数据库配置文件,使之允许远程连接
代码语言:javascript复制vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 英文输入环境下,敲 i 键,进入插入模式
#上下左右键移动光标,注释掉 bind-address = 127.0.0.1
#英文输入环境下,敲Esc键,输入:wq 保存退出
3.设置远程连接密码
代码语言:javascript复制mysql -u root -p
#输入密码(不显示),登录mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
quit;
#重启mysql服务
/etc/init.d/mysql restart
2.使用Navicat,将本地数据库传到腾讯云服务器
1.建立连接
连接本地:点击左上角控制面板的【连接】→选择【MySQL】→随便取个连接名字,测试连接,提示连接成功即可。
连接服务器:点击左上角控制面板的【连接】→选择【MySQL】→随便取个连接名字,输入云服务器的公网pi,用户名:root,密码123456,点击测试连接,提示连接成功即可。
2.传输数据
选择本地要传输到服务器的数据库,然后选择数据库连接,点击开始,确定,然后等待传输完成,关闭。
3.查看是否上传成功
代码语言:javascript复制mysql -u root -p
#输入密码
show databases;
#查看本地数据库是否上传上来了
quit;
4.修改服务器数据库配置文件,使之不允许远程连接
代码语言:javascript复制vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 英文输入环境下,敲 i 键,进入插入模式
#上下左右键移动光标,将注释掉的 bind-address = 127.0.0.1 恢复
#英文输入环境下,敲Esc键,输入:wq 保存退出
代码语言:javascript复制#重启mysql服务
/etc/init.d/mysql restart
3.上传项目并且运行
1.安装python3.6
因为腾讯云的Ubuntu16.04默认安装的python版本是2.7和3.5,而在本地开发时,用的是python3.6,所以需要下载安装python3.6
1.相关依赖,防止因为缺少依赖报错,安装一遍保平安:
代码语言:javascript复制apt-get install openssl
apt-get install libssl-dev
y
apt-get install libc6-dev gcc
y
apt-get install -y make build-essential zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm tk-dev
2.安装python3.6
代码语言:javascript复制add-apt-repository ppa:jonathonf/python-3.6
#回车
apt-get update
apt-get install python3.6
y
3.将默认的Python 链接指向Python3.6
代码语言:javascript复制cd /usr/bin
rm python
ln -s python3.6 /usr/bin/python
python -V
2.项目上传
1.使用FileZilla上传项目的zip包到ubuntu目录下
2.解压
代码语言:javascript复制cd /home/ubuntu
ls
unzip gg.zip
3.配置虚拟环境
1.创建虚拟环境
代码语言:javascript复制#安装虚拟环境
apt-get install python3-venv
y
#在当前目录下,创建一个python3.6的虚拟环境,取名为env36
python3 -m venv env36
. env36/bin/activate
#进入虚拟环境
#退出虚拟环境 deactivate
2.在虚拟环境中安装依赖库
代码语言:javascript复制cd gg
pip3 install -r requirements.txt
4.测试运行项目
1.运行项目:
代码语言:javascript复制python manage.py runserver 0.0.0.0:8000
2.在安全组打开8000端口
3.浏览器访问:
代码语言:javascript复制http://公网ip:8000/xadmin/
4.退出运行状态:
代码语言:javascript复制Ctrl键 C键
4.安装和配置uwsgi
1.安装uwsgi到真实(非虚拟环境)环境下
代码语言:javascript复制#退出虚拟环境
deactivate
cd ..
apt install python3-pip
y
pip3 install uwsgi
2.使用uwsgi启动项目
1.运行项目
代码语言:javascript复制uwsgi --chdir /home/ubuntu/gg --home /home/ubuntu/env36 --http :8000 --module gg.wsgi
2.浏览器访问:
代码语言:javascript复制http://公网ip:8000/xadmin/
3.退出运行状态:
代码语言:javascript复制Ctrl键 C键
3.配置uwsgi
1.创建ini文件
代码语言:javascript复制mkdir gg_uwsgi #创建一个目录,专门存放uwsgi的相关文件
cd gg_uwsgi/
vim gg.ini #创建一个ini文件
2.编辑ini文件
进入编辑模式:
代码语言:javascript复制i #进入编辑模式
输入内容:
代码语言:javascript复制[uwsgi]
chdir = /home/ubuntu/gg
home = /home/ubuntu/env36
module = gg.wsgi:application
master = True
processes = 4
harakiri = 60
max-requests = 5000
socket = 127.0.0.1:8000
uid = 1000
gid = 2000
pidfile = /home/ubuntu/gg_uwsgi/master.pid
daemonize = /home/ubuntu/gg_uwsgi/gg.log
vacuum = True
保存退出
代码语言:javascript复制Esc键 输入:wq 回车 #保存并退出
4.通过ini启动uwsgi
1.执行通过ini启动项目命令:
代码语言:javascript复制uwsgi --ini /home/ubuntu/gg_uwsgi/gg.ini
2.执行检验是否启动了多线程:
代码语言:javascript复制ps -aux | grep uwsgi
代码语言:javascript复制uwsgi --reload /home/chaoyuecun_uwsgi/master.pid #重启
uwsgi --stop /home/chaoyuecun_uwsgi/master.pid #停止