本篇介绍在CentOS中部署一个前后端不分离的Django项目。
概述
对于前后端不分离项目,参考下图:
第一步
mariadb数据库相关
yum安装mariadb
1
yum install mariadb-server mariadb -y
启动数据库
1
2
3
4
5
6
7
8
9
10
11systemctl start mariadb
补充:
启动/停止/状态/重启 数据库
systemctl start/stop/status/restart mariadb
查看端口:
netstat -ltunp
查看端口状态:
netstat -tunlp | grep 3306
改变密码:
set password=password('123456');
导出windows的数据库,传给Linux
Windows中:
导出数据命令:
1
2
3导出指定数据库的数据到 数据库名.sql 中:
mysqldump -uroot -p 数据库名 > 数据库名.sql
ps:使用cmd,使用powershell 会出错哦。。。传输到Linux中:
1
对于小文件使用 lrzsz 工具就可以,直接将文件拖到xshell中,或者使用rz
在Linux中导入数据:
方式一:
1
2
3
41. 创建一个数据库
create database 数据库名
2. 执行导入数据的命令
mysql -uroot -p 数据库名 < 数据库名.sql
- 方式二:
1
2
3
4
5
6
7
登录数据库之后,用命令导入数据
1. 创建一个数据库
create database 数据库名
2. 使用该数据库
use database 数据库名
3. 读取SQL文件,写入数据
mareiadb> source 数据库名.sql;
第二部
准备python3环境,以及虚拟环境
- 下载并编译 python3:
- 详见博客
- 使用virtualenvwrapper工具 来管理虚拟环境
- 待补充!!!
使用mkvirtualenv命令,创建新的虚拟环境,用于启动crm
1
2
3
4
5
6
7
8
9
10创建:
mkvirtualenv 虚拟环境名称
补充:
mkvirtualenv 虚拟环境名 #创建虚拟环境
lsvirtualenv #列出虚拟环境的名字
workon 虚拟环境名字 #激活或切换虚拟环境
lssitepackages #列出虚拟环境中的模块信息,其实就是
cdvirtualenv #进入虚拟环境家目录
cdsitepackages #进入虚拟环境第三方模块目录拷贝 django 代码,到Linux机器
解决 django 项目运行所需要的环境依赖,django等模块,以及pymysql
方式一:
- 直接运行,根据报错逐个安装。
方式二:
- 从windows的项目中导出所需要的模块
1
pip freeze > requirements.txt # requirements.txt文件是python程序员都认识的模块依赖文件
- 在Linux中使用
-r
参数,来指定依赖文件
1
pip install -r requirements.txt #指定依赖文件安装,读取文件中所有的模块信息
出现的问题:ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
解决办法:
升级工具并没有起作用,发现是以前的一些无关模块,就直接删除了。
第三步
uWSGI相关
通过 pip 安装
1
pip3 install -i https://pypi.douban.com/simple uwsgi
通过uwsgi命令去启动django
启动方式1(只是练习用):
1
2
3
4
5通过命令和参数形式
语法是:
uwsgi --http :8000 --module 项目名.wsgi
--http指定http协议启动socket服务端,可以通过浏览器直接访问
--module 是找到crm项目第二级目录下的wsgi.py 文件启动方式2:
通过配置文件方式启动,线上是这么使用的
uwsig的配置文件 uwsgi.ini1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
391. 创建配置文件
touch uwsgi.ini
2.写入如下内容 (uwsgi.ini内容如下)
[uwsgi]
# Django-related settings
# the base directory (full path)
# 填写django项目的绝对路径,第一层
chdir = /opt/.../django项目名
# Django's wsgi file
#填写crm项目第二层目录中的wsgi文件
module = 项目名.wsgi
# the virtualenv (full path)
#填写解释器的安装绝对路径(虚拟环境)
home = /root/Envs/虚拟环境名称
# process-related settings
# master
master = true
# maximum number of worker processes
#指定uwsgi的多进程数量,指定为cpu的核数即可(填cpu的4倍数量)
processes = 4
# the socket (use the full path to be safe
#指定crm启动的协议,当你和nginx结合进行反向代理,就用unix-socket协议 ,这种方式无法直接访问,只能通过nginx反代
socket = 0.0.0.0:8000
#指定http协议启动,不安全,没有意义,只是自己调试使用
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
3.指定uwsgi.ini配置文件启动
uwsgi --ini uwsgi.ini # 参数 --ini是指定文件的意思收集django的所有静态文件,丢给nginx去处理
打开 django的settings.py,修改为如下行
1
2
3
4
5+ STATIC_ROOT='/opt/项目目录.../项目名static/' #加上这个参数就行了
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]通过命令收集django的所有静态文件
1
python3 manage.py collectstatic
第四步
使用nginx做反向代理
安装nginx
1
yum install -y nginx
修改配置文件 nginx.conf
1 | 注意: server{}多虚拟主机是自上而下的加载顺序 |