部署图书管理系统项目
部署准备
部署图书管理项目你将使用以下软件
- nginx
- uWSGI
- CentOS7
- 部署图书管理项目文件
- virtualenv
- supervisor
WSGI、uWSGI
python web服务器开发使用WSGI协议(Web Server Gateway Interface)
python web项目默认会生成一个wsgi.py文件,确定好应用模块。
生产环境中使用的是uWSGI,实现了WSGI所有接口,C语言编写,效率很高的web服务器。
uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。
Nginx
使用nginx是为了它的反向代理功能,项目会通过Django+uWSGI+Nginx进行服务器线上部署。
CentOS
1.打包项目CRM文件夹,压缩文件
2.通过xftp、scp、lrzsz等上传文件至Centos服务器
Linux使用技巧
1.通过xshell或者iTerm等软件,多终端操作你的linxu,这样对uwsgi、nginx、项目代码调试的时候,避免来回切换目录,提供工作效率。
2.注意修改了linux软件的配置文件,都要重启服务才能生效。
Virtualenv
构建一个干净,隔离的python解释器环境,防止软件依赖,冲突等问题,建议使用。
Supervisor
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
开始部署
1、熟悉linux操作
linux基本命令操作, 省略.....
2、python3解释器的安装
参考博客: https://www.cnblogs.com/tiger666/articles/10312522.html
3、virtualenvwrapper工具的配置,解决虚拟环境问题
# 确认~/.bashrc配置文件里面的virtualenvwrapper配置 WORKON_HOME=~/Envs VIRTUALENVWRAPPER_VIRTUALENV_ARGS=‘--no-site-packages‘ VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 source /opt/python36/bin/virtualenvwrapper.sh # 新建并激活一个虚拟环境,用于图书管理系统项目 mkvirtualenv book_manage_env
4、安装配置MariaDB数据库,且创建数据库数据,迁移导入图书管理系统的数据
(1) 安装并启动MariaDB数据库
在CentOS7下,MariaDB就是mysql数据库,只是包名的不同
# 使用yum下载并安装mariadb yum install MariaDB-server MariaDB-client -y #启动mariadb服务端 systemctl start mysql
(2) 连接并授权root用户远程访问
# 使用客户端去链接mysql服务端 mysql -uroot -p 在linux上登陆mariadb # 注意1, linux的数据库,需要对root用户设置远程链接的权限, 密码是qishi3q grant all privileges on *.* to ‘%‘ identified by ‘qishi3q‘; # 授权所有的权限,在所有库,所有表 对 root用户在所有的主机上, 设置权限密码是qishi3q #刷新授权表 flush privileges; 注意2, linux的防火墙和selinux要关闭,否则windows去链接linux的3306端口可能被拒绝
(3) 导入图书管理项目的数据
在linux服务端,mysql,导入图书管理系统的数据 # 1.mysql数据的导出,与导入 这个命令是在linux/windows中敲的 mysqldump -u root -p --all-databases > book_manage.dump # 2.上传这个数据文件到linux数据库中 # 3.在linux的mysql,导入这个数据文件(需要在dump文件中指定数据库: use szday58) mysql -u root -p < /opt/book_manage.dump # 或者进入mysql中 进入数据库,使用命令: source /opt/book_manage.dump
5、进入虚拟环境并运行项目
测试使用linux的python解释器去运行项目 切换到 项目中运行(注意要解决解释器的模块问题,才能正常运转项目)
# 用127.0.0.1不行,只能本机访问,要想让所有人都能访问,必须要用0.0.0.0 python3 manage.py runserver 0.0.0.0:8000
然后就可以通过IP加端口进行访问了,如果这个IP是我的云服务器IP,那我们去面试的时候,就可以拿着这个项目给面试官在电脑上展示了,好有逼格啊~
彩蛋:现在有一个问题,我们通过10.0.0.7:8000才能访问项目,但是公网上的网站不是这样的啊,比如路飞学城,是通过域名进行访问的,我们还可以解析出路飞学城的网站服务器IP,通过地址也可以访问,但是后面没有加端口, 因为默认是用的80端口
虽然我们可以直接将端口改为80就没问题了, 那么问题来了:
1 django运行web界面默认用的是wsgiref单机模块,性能会比较低, 需要怎么解决?
uwsgi + django + nginx
2 我们要想再跑一个项目对外提供服务,该怎么办呢? 服务器只有一个80端口, 如何解决
nginx + uwsgi + django + supervisor
-完成nginx的安装配置,了解nginx.conf如何配置
-完成uWSGI命令学习,使用uWSGI启动knight项目,支持多进程
-完成nginx处理图书管理项目的静态文件
-最终效果
访问nginx的80端口,即可找到图书管理页面,且保证静态文件页面正常