部署图书管理系统项目
部署准备
部署图书管理项目你将使用如下软件html
- nginx
- uWSGI
- CentOS7
- 部署图书管理项目文件
- virtualenv
- supervisor
WSGI、uWSGI
python web服务器开发使用WSGI协议(Web Server Gateway Interface)python
python web项目默认会生成一个wsgi.py文件,肯定好应用模块。mysql
生产环境中使用的是uWSGI,实现了WSGI全部接口,C语言编写,效率很高的web服务器。linux
uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要作的就是把HTTP协议转化成语言支持的网络协议。好比把HTTP协议转化成WSGI协议,让Python能够直接使用。nginx
Nginx
使用nginx是为了它的反向代理功能,项目会经过Django+uWSGI+Nginx进行服务器线上部署。web
CentOS
1.打包项目CRM文件夹,压缩文件面试
2.经过xftp、scp、lrzsz等上传文件至Centos服务器sql
Linux使用技巧
1.经过xshell或者iTerm等软件,多终端操做你的linxu,这样对uwsgi、nginx、项目代码调试的时候,避免来回切换目录,提供工做效率。shell
2.注意修改了linux软件的配置文件,都要重启服务才能生效。数据库
Virtualenv
构建一个干净,隔离的python解释器环境,防止软件依赖,冲突等问题,建议使用。
Supervisor
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它能够很方便的监听、启动、中止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它从新拉起,很方便的作到进程自动恢复的功能,再也不须要本身写shell脚原本控制。
开始部署
一、熟悉linux操做
linux基本命令操做, 省略.....
二、python3解释器的安装
参考博客: https://www.cnblogs.com/tiger666/articles/10312522.html
三、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
四、安装配置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 root@'%' 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
五、进入虚拟环境并运行项目
测试使用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端口,便可找到图书管理页面,且保证静态文件页面正常