部署图书管理项目需要以下软件

  • 项目文件(django项目文件夹)
  • 数据库文件(django项目对应的数据库文件)
  • centos7(linux本体)
  • nginx(反向代理以及静态文件收集)
  • uWSGI(代理服务器与后端的application应用服务器之间的中间件)
  • virtualenv(虚拟环境)
  • supervisor(自动守护)

1.项目部署

1.1 项目文件上传

上传图书管理系统项目到linux服务器上

  • Lrzsz工具进行上传
  • xftp工具进行上传(推荐方式)
  • scp命令

在/opt/目录下传输项目文件,数据库文件同样存放在这个文件夹下

1.2 虚拟环境配置virtualenv

通过virtualenvwrapper工具的配置,解决虚拟环境问题

创建虚拟环境mkvirtualenv book_manage_env

1.3 数据库安装

在centos7本体下安装配置mariadb数据库,且创建数据库数据,迁移导入图书管理系统数据

  • 安装mariadb数据库(和mysql一模一样只是为了免费)
  • 导出开发过程中的book_manage项目的数据
    • 第一种方法:使用navicat导出,转储SQL文件,(如果需要数据则使用结构与数据,反之则使用结构)
    • 第二种方法,使用mysqldump命令, 此命令适用于windows和linux下
  • 将数据导入到服务器mariadb数据库中
    • 进入数据库,先创建一个数据库book_manage   (create database book_manage)
    • 进入此数据库   use book_manage
    • 导入数据库  source /opt/book_manage.sql
  • 允许root用户远程登陆数据库
    • 第一种方法, 在初始化数据库的时候,就允许root用户远程登录
    • 第二种方法 使用SQL语句进行授权(grant all privileges on *.* to root@"%" identified  by "你的密码";)

-测试使用linux的python解释器去运行项目 切换到 项目中运行(注意要解决解释器的模块问题,才能正常运转项目)

1.4 uWSGI配置

完成uWSGI命令学习,使用uWSGI启动图书管理系统项目,支持多进程

1.4.1 安装Uwsgi

(1)使用pip安装uwsgi模块

pip3 install uwsgi

(2)创建一个测试文件testuwsgi.py, 运行简单的uWSGI站点

第一步vim /opt/book_homework/testuwsgi.py 写入以下文件

def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]

第二步 使用uwsgi命令启动此文件

uwsgi --http :9000 --file testuwsgi.py

第三步 在浏览器通过IP加端口进行访问

(3)使用uwsgi.ini文件,简单的命令就可以将uwsgi启动起来

cd /opt/book_manage
vim uwsgi.ini

写入配置文件

[uwsgi]
# Django-related settings
# the base directory (full path)
# 写上项目的绝对路径
chdir = /opt/book_manage
# Django's wsgi file
# 填写找到django的wsgi文件,填写相对路径,以chdir参数为相对路径
module = book_manage.wsgi
# the virtualenv (full path)
# 填写虚拟环境的绝对路径
home = /root/Envs/book_manage_env/
# process-related settings
# master
#启动uwsgi主进程
master = true
# maximum number of worker processes
processes = 1
# the socket (use the full path to be safe
#如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数
socket = 0.0.0.0:8000
#如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数
http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

使用uwsgi命令指定配置文件启动,单个项目是可以这么启动

uwsgi -ini /opt/book_homework/uwsgi.ini

1.5 nginx配置

1.5.1 收集django静态文件

收集django静态文件

vim /opt/book_homework/book_homework/settings.py

加入一行配置,静态文件

STATIC_ROOT='/opt/static'

回到django项目主目录下(有manage.py文件的目录), 输入命令进行收集静态文件

python3 manage.py collectstatic

1.5.2 配置nginx与uwsgi结合

下图为/opt/nginx112/conf/uwsgi_params文件

1.5.3 修改nginx的配置文件/opt/nginx112/conf/nginx.conf

添加以下配置

location / {
# nginx自带ngx_http_uwsgi_module模块,起到nginx和uwsgi交互作用
# 通过uwsgi_pass设置服务器地址和协议,将动态请求转发给uwsgi处理
include /opt/nginx112/conf/uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
root html;
index index.html index.htm;
} *************************************************************************************************************
location /static {
alias /opt/static;
}

如图配置

nginx.conf全部配置文件如下

worker_processes  1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
  # nginx反向代理uwsgi
server {
listen 80;
server_name qishijd.com;
location / {
# nginx自带ngx_http_uwsgi_module模块,起到nginx和uwsgi交互作用
# 通过uwsgi_pass设置服务器地址和协议,将动态请求转发给uwsgi处理
include /opt/nginx112/conf/uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
root html;
index index.html index.htm;
}
# nginx处理静态页面资源
# 当用户请求是qishijd.com/static/的时候, 就会进入这个location匹配
# 通过alias参数进行路径别名,让nginx去/opt/static底下去找静态资源
     location /static {
alias /opt/static;
}
     # nginx处理媒体资源
     location /media{
alias /opt/nginx112/media;  
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

1.5.4 平滑重启nginx

/opt/nginx112/sbin/nginx -s reload

1.5.5 确保uwsgi已经正常启动

这个主要是用于守护进程

/root/Envs/book_manage/bin/uwsgi --ini /opt/book_manage/uwsgi.ini
ps -ef | grep uwsgi

在浏览器访问http://192.168.1.44已经可以正常访问,静态文件也可以正常加载了,修改数据也没有问题, 说明数据库连接正常

2.安装配置supervisor

supervisor 是基于 python 的任务管理工具,用来自动运行各种后台任务,当然你也能直接利用 nohup 命令使任务自动后台运行,但如果要重启任务,每次都自己手动 kill 掉任务进程,这样很繁琐,而且一旦程序错误导致进程退出的话,系统也无法自动重载任务。

这里我们要配置基于virtualenv的supervisor,但是请注意:由于supervisor在python3下无法使用,因此只能用python2去下载!!!!!!

2.1 安装suprvisor

安装suprvisor

easy_install supervisor  # 这个是python2下面的安装模块命令,等同于python3下面的pip

如果没有easy_install这个命令,就需要安装setuptools工具

yum install python-setuptools

2.2 使用命令生成supervisor.conf配置文件

echo_supervisord_conf > /etc/supervisord.conf

2.3 在/etc/supervisord.conf末尾添加上如下代码

[program:book_manage]
command=/root/Envs/book_manage_env/bin/uwsgi /opt/book_manage/uwsgi.ini
stopasgroup=true # 如果发现关闭supervisor进程后,结束uwsgi进
killasgroup=true # 程无效,就需要加上这两个参数

如图所示

2.4 启动supervisor, 完成uWSGI启动django,nginx反向代理

supervisord -c /etc/supervisord.conf

2.5 upervisor启动命令参数有两种

# 任务管理命令如下:有两种,一个是参数形式, 一个是交互式
# 参数形式
supervisorctl -c /etc/supervisor.conf stop/start/restart all
supervisorctl -c /etc/supervisor.conf start crm_knight # 交互式形式
supervisorctl -c /etc/supervisor.conf

2.6 重新加载supervisor(了解即可)

一、添加好配置文件后

二、更新新的配置到supervisord    

supervisorctl update
三、重新启动配置中的所有程序 supervisorctl reload
四、启动某个进程(program_name=你配置中写的程序名称) supervisorctl start program_name
五、查看正在守候的进程 supervisorctl
六、停止某一进程 (program_name=你配置中写的程序名称) pervisorctl stop program_name
七、重启某一进程 (program_name=你配置中写的程序名称) supervisorctl restart program_name
八、停止全部进程 supervisorctl stop all
注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。

a

Linux-基础学习(四)-部署图书管理系统项目的更多相关文章

  1. Django学习——分组查询、图书管理系统项目、wsgi, uwsgi, cgi, fastcgi

    1 分组查询 # 分组查询 # 查询每一个出版社id,以及图书平均价格(单表) # 原生sql # select publish_id,avg(price) from app01_book group ...

  2. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  3. 在linux下用tomcat部署java web项目的过程与注意事项

    在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...

  4. linux基础学习之软件安装以及常用命令

    linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...

  5. 在linux下用tomcat部署java web项目的过程与注意事项(转)

    在linux下用tomcat部署java web项目的过程与注意事项一.安装JDK到http://www.oracle.com/technetwork/java/javase/downloads/in ...

  6. linux基础学习路线&review

    linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...

  7. Linux 基础学习1

    目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...

  8. Linux 基础学习2

    目录 Linux 基础学习2 文件目录结构 文件命名规范 文件系统结构 linux应用程序的组成 绝对路径和相对路径 目录名和基名 切换目录 切换到家目录 切换到上一次的目录 显示当前的工作目录 列出 ...

  9. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

随机推荐

  1. RecyclerView与ListView 对比浅析:缓存机制

    一. 背景 PS:相关知识:ListView与RecyclerView缓存机制原理大致相似,如下图所示: 滑动过程中,离屏的ItemView即被回收至缓存,入屏的ItemView则会优先从缓存中获取, ...

  2. 线段树(区间树)之区间染色和4n推导过程

    前言 线段树(区间树)是什么呢?有了二叉树.二分搜索树,线段树又是干什么的呢?最经典的线段树问题:区间染色:正如它的名字而言,主要解决区间的问题 一.线段树说明 1.什么是线段树? 线段树首先是二叉树 ...

  3. 漫画:htts是如何保证一台主机把数据安全发给另一台主机

    通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的 对称加密 一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端.之后服务器给客户端发送真实数 ...

  4. Kali 无法正常上网问题

    有时候我们会突然发现我们的kali不能够正常上网,在终端使用ping 命令对其进行检查,显示网络不可达, 然后使用ifconfig,可以看到没有正在工作的网卡,只有localhost 接着使用ifco ...

  5. leetcode — best-time-to-buy-and-sell-stock

    /** * Source : https://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock/ * * * Say you have ...

  6. web进修之—Hibernate起步(1)(2)

    想开始写博客了,尝试了CSDN和cnblog之后还是觉得cnblog更加简洁.专注(不过cnblog不支持搬家),所以把刚刚写的两篇学习博客链接放在这儿,这样这个系列也算是完整了: web进修之—Hi ...

  7. 创建简单WEB高可用集群

    1. 环境介绍 我这里弄了2个虚拟机,信息如下: node1:192.168.168.201 node2:192.168.168.202 2.配置主机名 [root@node1 ~]# vim /et ...

  8. 转换Word文档为PDF文件

    1.使用 Office COM组件的Microsoft.Office.Interop.word.dll库 该方法需要在电脑上安装Office软件,并且需要Office支持转换为PDF格式,如果不支持, ...

  9. [Linux] memache打印所有的key

    1.在使用memcache的时候 , 经常需要查看下里面存储的值 , 前提是要先知道key是啥,memcache没有redis的keys命令 2.下面两个命令的结合,可以查看到key stats it ...

  10. Linux基础:CentOS安装python3.7

    1.下载python3 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 2.解压 [root@mycentos ~]# ta ...