部署图书管理系统项目

部署准备

部署图书管理项目你将使用以下软件

  • 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端口,即可找到图书管理页面,且保证静态文件页面正常

相关推荐