Django项目ubuntu一体化部署
1.前言
其实在创业之初,白手起家的阶段,网站的日流量不过100,这个时候采用分布式部署不是不行,不过会多花点钱。but,我们可以做两手准备,先使用一台机子进行一体化部署,等到日流达到性能瓶颈的时候再用分布式,这可以为你省下一大笔设备维护费。
一体化部署:数据库,项目,nginx在一台机子上
2.配置mysql数据库
ubuntu系统是基于Debain的,所以我们安装软件用apt
# 在Ubuntu上安装mysql服务器
apt install mysql-server
# 进入mysql控制台
mysql -uroot -p
这里失败的话可能是系统环境变量出错了或者没安装上
——如果需要导出数据,则可用mysqldump命令(终端)
cd xxx # mysql文件的bin目录下
mysqldumo -uroot xxx(数据库名)>xxx(导出到哪里) -p
——如果需要导入数据
mysql -uroot -pxxx(密码) xxx(数据库名)<xxx(sql文件位置)
在django连接数据库的时候,可能出现Access denied for user ‘root’@‘localhost’,原因可能是不同数据库版本加密算法不同,所以需要改一下mysql密码
mysql -uroot -p # 进入mysql
mysql >use mysql # 进入mysql库
mysql >ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新的密码'
3.配置django项目
3.1 下载虚拟环境
apt install virtualenv
3.2 安装python
apt install python3 # 安装python
apt install python3-pip # pip包,一般会默认安装
3.3 构建虚拟环境
mkdir /envs # 创建一个envs文件夹,用于存放不同虚拟环境
virtualenv /envs/nb # 创建一个python虚拟环境
source /envs/nb/bin/activate # 激活虚拟环境
3.4 复制你的django项目到任意文件夹下
3.5 django项目配置
安装依赖包
pip freeze > requirements.txt # 虚拟环境下
更改setting文件,这个根据你的配置来
运行测试,看看能不能正常完成
pyton manage.py runserver xxx你的ip/端口
4.配置uwsgi
pip install uwsgi # 安装uwsgi
4.1 配置uwsgi(ini文件),这里用我的项目举例
[uwsgi]
# uwsgi的应用端口,也就是进入网站的ip和端口
# 如果直接使用,则用http
http = localhost:8080
# 如果用nginx,则用socket
# socket = localhost:8080
# 项目目录
chdir = ./
# django项目的wsgi文件
wsgi-file = xxx/project/wsgi.py
# 获取uwsgi统计信息的服务地址
status = localhost:9191
# pid信息和log信息
daemonize = uwsgi.log
pidfile = uwsgi.pid
# 用于存放静态文件
# 使用前先收集静态文件 python manage.py collectstatic
static-map = /static=xxx/project/file
4.2 收集静态文件
# 这里我收集的文件放在项目根目录下的file文件 xxx/project/file
python manage.py collectstatic
4.3 常用uwsgi命令
uwsgi --ini uwsgi.ini # uwsgi以之前的ini文件配置运行
uwsgi --stop xxx/project/uwsgi.pid # 关闭uwsgi,pid文件是上面ini文件里pid信息的储存地址
ps -ef | grep uwsgi # 查看uwsgi进程
kill -9 pid(进程pid) # 强制关闭进程
uwsgi --reload uwsgi.pid # 重启uwsgi
4.4 运行测试
先在uwsgi.ini配置文件第一部分uwsgi的应用端口改成http
http = localhost:8080
打开浏览器,访问localhost:8080即可
5.nginx配置
5.1 安装nginx
apt install nginx
5.2 一些命令
systemctl status nginx # 查看进程
systemctl enable nginx # 设置开机自启动
systemctl start nginx # 开启nginx
nginx -s stop # 关闭nginx
5.3 nginx配置
在/etc/nginx/nginx.conf,打开conf文件
...
http{
...
server{
listen 8888; # 应用端口
server_name localhost; # 服务器名字
location / { # 用uwsgi的固定配置
include uwsgi_params;
uwsgi_pass localhost:8080; # uwsgi的应用端口
}
}
...
}
...