Linux 干货整理

博客地址:https://www.cnblogs.com/zylyehuo/

如果虚拟机开机没有 ip 怎么办

1.vim编辑网卡配置文件,修改如下参数
[root@s25linux tmp]# cd  /etc/sysconfig/network-scripts/
vim修改此文件,找到如下参数,改为yes
ONBOOT="yes"

2.确保vmware 正确选择了 桥接 或是NAT,且已经连接上了

3. 命令重启网络设置

systemctl stop NetworkManager #关闭无线网络服务
systemctl restart network   	#重启有线网服务 
#这2个命令执行都没有任何提示,表示正确的重启了网络配置

4.此时查看ip地址是否存在了
ip addr show 

远程连接 linux

# 1.确保你的服务器,正确的获取到了ip地址
ifconfig  # 查看到机器ip是  192.168.178.134

# 2.安装远程连接工具 
# windows 安装 xshell 或者 secureCRT
# 这2个软件其实也就是封装了 ssh 命令而已

# macos 直接使用 ssh 命令即可
ssh root@192.168.178.134 
 

Linux 命令提示符

Linux 的文件系统目录结构

只有一个根目录  /
 
/home  # 根目录下有一个home文件夹
/s25  # 根目录下有一个s25文件夹

# 根目录下有2个同级的文件夹,男同学和女同学
/s25/男同学/小明.txt
/s25/女同学   

几个特殊的目录

.   代表当前的目录     

..  代表上一级的目录  # 比如  cd ..  进入上一级目录 

~   代表当前登录用户的家目录,root用户就是/root   pyyu用户就是 /home/pyyu 

-   代表上一次的工作目录  

绝对路径、相对路径

绝对路径:只要是从根目录开始的写法,就是绝对路径
相对路径:非从根目录开始的写法,就是相对路径

# 在/home目录下创建 s25文件夹,绝对,相对路径的写法
# 1.相对路径,以你当前的位置为相对,创建
比如此时在 /tmp目录下,上一级就是 / ,因此可以这么写
[root@bogon tmp]# mkdir ../home/s25

# 2.绝对路径的写法,一般是绝不会错的,无需考虑你当前所在的位置,直接敲绝对路径即可
[root@bogon tmp]# mkdir /home/s25

PATH 变量

# PATH就是定义一些常用的软件可执行命令的目录,放入系统中,可以快捷的查询,而不需要每次都输入绝对路径
1.为什么系统能够直接找到python解释器?
[root@s25linux tmp]# which python  #输出命令所在的绝对路径
/bin/python

2.学习linux的PATH,
[root@s25linux tmp]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

注意,PATH的路径,是有先后顺序的,从左往右,读取的
3.如果编译安装了一个python3,装在了 /opt/python36/目录下,怎么添加PATH?

#这个变量赋值的代码,就是添加python3到环境变量中了
PATH="/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:"

4.由于上述变量赋值的操作,只是临时生效,我们想永久的更改PATH的值,还得修改/etc/profile 

vim  /etc/profile #打开文件,在文件末尾,添加PATH值的修改
PATH="/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:"

PATH 的寻找原理图

Linux 单引号和双引号的区别

单引号中的内容,仅仅就是个字符串了,不识别任何其他的特殊符号

双引号中的内容,能够识别特殊符号,以及变量

[root@s25linux ~]# echo '$name'
$name

[root@s25linux ~]# echo "$name"
我们是穿越在银河的火箭队

lrzsz 工具

用于 windows(基于xshell工具) 和 linux 之间互相传递文件

# 1.安装此工具
yum install lrzsz -y  

# 2.安装好lrzsz之后,就存在了2个命令,一个是 rz,一个是sz
rz  # 直接输入rz命令,能够蹦出一个弹窗,接收windows的资料
sz 文件  # 发送linux的一个文件,发给 windows 某个位置,也是出现一个弹窗

Linux 文件、目录权限管理

对于linux系统而言,文件、文件夹,都是有  user 属主,  group属组的一个角色分配,还存在一个other其他人
这三个身份的划分

并且设定了  r  w   x  三个权利的限制,也就是 读,写,执行(对于文件的读写执行)

场景:
1. root用户在/tmp目录下创建了一个文件叫做 root.txt ,因此这个文件默认就属于root用户,属于root用户组

2.此时一个普通用户登录了机器 ,如
ssh   chaoge@192.168.178.134  登录机器之后,chaoge对于这个 root.txt文件而言,就是一个其他人的身份了

查看文件夹的详细信息

[root@s25linux ~]# ll /tmp
总用量 4
drwxr-xr-x. 2 root root    6 2月  17 11:00 hehe   #文件夹 
# 解读它的信息
# drwxr-xr-x  拆分如下
d     # d代表是一个文件夹
rwx   # user是root,root可以读写执行
r-x   # group也是root,root组里的成员,可以读,执行
r-x   # others权限是 读,执行

#文件的权限,必须顺序是 rwx ,没有权限则写一个-号
-rw-r--r--. 1 pyyu pyyu 2328 2月  17 09:15 pwd.txt  #文件 
# 解读如上的权限
-     # 开头是 -号,就是普通的文本类型 
rw-   # user是pyyu,pyyu这个用户权限是 可读、可写,不可执行
r--   # group是pyyu,只读
r--   # 此时peiqi这个用户对于pwd.txt这个文件,权限就是 只读的

对于文件的 rwx

r   # cat,more,less,head,等读取文件内容的操作
w   # vim  ,echo,等写入内容的操作 
x   # 可以执行的脚本,例如bash,python等脚本,文件会变成绿色

对于文件夹的 rwx

r  # ls 查看文件夹内容
w  # 允许在文件夹中创建文件等操作
x  # 允许cd进入此文件夹

linux 编译安装软件的步骤

1.获取软件的源代码,去官网下载最新的,或者指定版本
2.解压缩源代码
3.进入源代码目录,开始编译三部曲,指定安装路径,make,make install
4.软件编译安装结束后,配置PATH环境变量,能够便捷的访问命令

用 yum 安装 mysql 服务且启动,能够连接 mysql,基本 curd

在centos7系列系统上,mysql以及更名了,叫做mariadb数据库

c/s架构,运行一个server数据库,然后用client去连接

yum install mariadb-server mariadb -y  # 安装2个有关mariadb的软件包 

systemctl start mariadb  # 启动mysql数据库服务

systemctl enable mariadb  # 开机启动mysql数据库服务

mysql -uroot -p  # 初次进入不用密码,直接回车进入数据库

python3 环境搭建

# 1.很重要,必须执行此操作,安装好编译环境,c语言也是编译后运行,需要gcc编译器golang,对代码先编译,再运行,python是直接运行
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

# 2.获取python的源代码,下载且安装,下载源代码包的形式,自由选择
cd /opt/
wget  https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz

# 3.下载完源代码包之后,进行解压缩
tar -zxvf Python-3.6.9.tgz

# 4.解压缩完毕之后,生成了python369的源代码目录,进入源代码目录准备开始编译
cd Python-3.6.9

# 5.此时准备编译三部曲 ,编译的第一曲:指定python3的安装路径,以及对系统的开发环境监测,使用如下命令
# 命令解释
# configure 是一个脚本文件,用于告诉gcc编译器,python3即将安装到哪里,以及对基础的开发环境检查,检查openssl,检查sqllite,等等
# 编译第一曲,结束后,主要是生成makefile,用于编译的
[root@s25linux Python-3.6.9]# ./configure --prefix=/opt/python369/

# 编译第二曲:开始进行软件编译
# 直接输入 make 指令即可
# 编译第三曲:编译安装,生成python3的可执行程序,也就是生成/opt/python369/
# make install    
# 6.编译的第二曲,和第三曲,可以简写成  make && make install   #代表make成功之后,继续make install 
[root@s25linux Python-3.6.9]# make && make install
# 等待出现如下结果,表示python3编译安装结束了
# Successfully installed pip-18.1 setuptools-40.6.2

# 7.此时可以去检查python3的可执行程序目录
cd /opt/python369/bin
[root@s25linux bin]# pwd
/opt/python369/bin

# 8.配置PATH环境变量 ,永久修改PATH,添加Python3的bin目录放入PATH开头位置
vim /etc/profile
# 写入如下内容
PATH="/opt/python369/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:"

# 9.手动读取/etc/profile,加载文件中的所有变量
source /etc/profile

# 10.检查python3的目录,以及pip3的绝对路径
[root@s25linux bin]# which pip3
/opt/python369/bin/pip3

[root@s25linux bin]# which python3
/opt/python369/bin/python3

创建 django 项目,linux 运行 django

python3.6.9

django 选择用1.11.25

# 1.安装django模块
cd /opt/
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.25 
# 检查一下pip3的模块信息
pip3 list

# 2.升级pip3工具
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip

# 3.在linux平台,使用命令创建django项目了
django-admin startproject mysite
 
# 4.创建一个app01
cd mysite/
[root@s25linux mysite]# django-admin startapp app01
 
# 5.编写一个视图函数,hello视图,修改app01,【访问hello视图,返回字符串,hello】 
# 5.1  修改django的settings.py ,注册app01 ,修改如下
[root@localhost mysite]# vim mysite/settings.py

# 并且修改允许访问的主机列表 		
# 默认只允许 本地 127.0.0.1访问
# 启动在了linux的机器上 ,如果不修改windows无法访问
# 写一个 * 表示允许所有的主机访问
ALLOWED_HOSTS = ["*"]
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'app01',
]
   
# 5.2 修改django的 urls.py
[root@localhost mysite]# vim mysite/urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/', views.hello),
]

# 5.3 编写django的app01.views,添加如下代码
[root@localhost mysite]# vim app01/views.py

from django.shortcuts import render,HttpResponse

def hello(requests):
    return HttpResponse("hello")

# 6. 进行数据库迁移
[root@localhost mysite]# python3 manage.py migrate
# 指定ip和端口,启动django
[root@localhost mysite]# python3 manage.py runserver 0.0.0.0:9000

# 7.访问django项目
# 访问linux的ip地址+django的端口
10.0.0.129:9000/hello/

virtualenv 虚拟环境工具

virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

python3的虚拟环境工具配置

利用了虚拟环境,可以分别运行多个干净、隔离的python web环境

# 1.下载虚拟环境工具
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

# 2.通过命令行创建虚拟环境
# pip3安装的模块会放在这里
[root@localhost ~]# find /opt/python369/ -name site-packages
/opt/python369/lib/python3.6/site-packages
# --python=python3  # 指定venv虚拟解释器,以哪个解释器为本体
# 这个命令如果用相对路径,就得注意在哪敲的此命令
cd /opt/
[root@localhost opt]# virtualenv --python=python venv1

# 3.创建好venv1之后,需要激活方可使用,这个激活其实就是在修改PATH而已
[root@localhost bin]# source /opt/venv1/bin/activate
(venv1) [root@s25linux bin]#

# 4.明确虚拟环境下venv1的解释器是干净隔离的
(venv1) [root@s25linux bin]# which python3
/opt/venv1/bin/python3
(venv1) [root@s25linux bin]#
(venv1) [root@s25linux bin]# which pip3
/opt/venv1/bin/pip3
(venv1) [root@s25linux bin]#
(venv1) [root@s25linux bin]# pip3 list
Package    Version
---------- -------
pip        21.3.1
setuptools 59.6.0
wheel      0.37.1

# 5.在venv1中安装django1
cd /opt/
(venv1) [root@localhost opt]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.9
(venv1) [root@localhost opt]# django-admin startproject venv1_dj119
(venv1) [root@localhost opt]# vim venv1_dj119/venv1_dj119/settings.py
# 写一个 * 表示允许所有的主机访问
ALLOWED_HOSTS = ["*"]
(venv1) [root@localhost opt]# python3 venv1_dj119/manage.py runserver 0.0.0.0:8080

# 6.再开一个ssh窗口,再创建venv2,用于运行django2 版本
cd /opt/
[root@localhost opt]# virtualenv --python=python venv2
# 激活虚拟环境venv2
[root@localhost opt]# source /opt/venv2/bin/activate
(venv2) [root@localhost opt]# pip3 list
Package    Version
---------- -------
pip        21.3.1
setuptools 59.6.0
wheel      0.37.1
# 在venv2中安装django2
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==2.0.1
# 创建diango2项目
django-admin startproject venv2_dj201
(venv2) [root@localhost opt]# vim venv2_dj201/venv2_dj201/settings.py
# 写一个 * 表示允许所有的主机访问
ALLOWED_HOSTS = ["*"]
(venv2) [root@localhost opt]# python3 venv2_dj201/manage.py runserver 0.0.0.0:9090

# 7.分别启动2个版本的django,查看浏览器访问效果

# 8.deactivate  # 直接执行此命令,退出虚拟环境,系统会自动删除venv的PATH,也就表示退出了

supervisor 工具

使用supervisor这个python开发的进程管理工具,用它启动uwsgi之后,uwsgi进程挂掉后,自动会再启动

crm的部署技术栈 nginx+uwsgi+django+mysql ,我们可以手动的,单独启动每一个进程
还可以通过supervisor一键启动这四个进程,进行批量管理,批量启停

# 1.使用yum命令即可直接安装
[root@localhost ~]# yum install supervisor -y
# 2.生成supervisor的配置文件
[root@localhost ~]# echo_supervisord_conf > /etc/supervisord.conf
# 3.修改supervisor的配置文件,添加管理crm的任务
[root@localhost ~]# vim /etc/supervisor.conf # 再最底行,添加如下内容
#[program:xx]是被管理的进程配置参数,xx是进程的名称
[program:crm]
command=写入启动uwsgi的命令  ;supervisor其实就是在帮你执行命令而已!
autostart=true       ; 在supervisord启动的时候也自动启动
startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
stopasgroup=true     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true     ;默认为false,向进程组发送kill信号,包括子进程

linux 启动 crm 项目

效果图

# 1.准备好crm代码
cd /opt/
git clone https://github.com/zylyehuo/tf_crm.git

# 2.新建一个虚拟环境,用于运行crm
# 在项目下,生成虚拟环境,便于管理此文件夹
[root@localhost opt]# cd tf_crm/
[root@localhost tf_crm]# virtualenv --python=python venv_crm
[root@localhost tf_crm]# source venv_crm/bin/activate
(venv_crm) [root@localhost tf_crm]# pip3 list
Package    Version
---------- -------
pip        21.3.1
setuptools 59.6.0
wheel      0.37.1

# 3.安装 crm 运行所需的模块依赖
(venv_crm) [root@localhost tf_crm]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.25

(venv_crm) [root@localhost tf_crm]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql

# 出现 ValueError: Incorrect timezone setting: Asia/shanghai
(venv_crm) [root@localhost tf_crm]# vim tf_crm/settings.py
#TIME_ZONE = 'Asia/shanghai'  # 注释掉,临时解决

(venv_crm) [root@localhost tf_crm]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-multiselectfield

# 4.缺少 mysql,需要安装 mariadb,且启动
(venv_crm) [root@localhost tf_crm]# yum install mariadb-server  mariadb -y

# 5.启动 mariadb 数据库
(venv_crm) [root@localhost tf_crm]# systemctl start mariadb
(venv_crm) [root@localhost tf_crm]# netstat -tunlp | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      106346/mysqld 

# 6.注意可能需要修改 django 的 settings.py 有关数据库连接的账号密码信息等
# 出现 django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
(venv_crm) [root@localhost tf_crm]# vim /opt/tf_crm/tf_crm/local_settings.py
# 修改以下内容
DATABASES = {
    'default':{
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tf_crm',
        'HOST': '127.0.0.1',
        'POST': 3306,
        'USER': 'root',
        'PASSWORD': '',
    }
}

(venv_crm) [root@localhost tf_crm]# vim /opt/tf_crm/tf_crm/settings.py
# 修改以下内容
ALLOWED_HOSTS = ["*"]

# 7.还要注意,由于数据库是空的,还得进行数据库表的导入,导出本地数据库表,导出
# 出现 django.db.utils.OperationalError: (1049, "Unknown database 'tf_crm'")
# 参数--all-databases能够导出所有的数据库,表,也可以指定某一个数据库,表导出
mysqldump -uroot -p --all-databases > alldb.sql

# 8.发送此 alldb.sql 文件,给 linux 机器,再进行数据导入
# 就是将第七步的SQL文件,通过lrzsz、scp、xftp等方式,发送此文件给linux
mysql -uroot -p < /opt/alldb.sql
# 没有数据库数据的时候先手动创建一个空的数据库
(venv_crm) [root@localhost tf_crm]# mysql -uroot -p
MariaDB [(none)]> create database tf_crm DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> exit
Bye

# 9.此时再次尝试启动 crm 项目
(venv_crm) [root@localhost tf_crm]# python3 manage.py runserver 0.0.0.0:9090
# 浏览器访问 10.0.0.129:9090/login/

使用 uwsgi 启动 python web(书接上回:linux 启动 crm 项目)

让django在linux上,支持并发形式启动,支持多进程,多线程,乃至于协程的一个C语言编写的高性能工具

# 1.安装uwsgi工具
(venv_crm) [root@localhost tf_crm]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple  uwsgi
(venv_crm) [root@localhost tf_crm]# pip3 list
Package                 Version
----------------------- -------
Django                  1.11.25
django-multiselectfield 0.1.12
pip                     21.3.1
PyMySQL                 1.0.2
pytz                    2023.3
setuptools              59.6.0
uWSGI                   2.0.22
wheel                   0.37.1
(venv_crm) [root@localhost tf_crm]#
# 2.编写uwsgi.ini配置文件,以多进程形式启动tf_crm
(venv_crm) [root@localhost tf_crm]# touch uwsgi.ini  # 手动创建此uwsgi的配置文件,写入如下的内容参数,去启动crm
# 写入如下的功能性的参数配置,用于启动项目
# 这些部署的流程,是国外的uwsgi官网,给与的用法,照着用即可
# 注意要根据自己的目录,修改如下的参数(从第二行开始粘贴)
(venv_crm) [root@localhost tf_crm]# vim uwsgi.ini
[uwsgi]
# Django-related settings
# the base directory (full path)
# 填写crm项目的第一层绝对路径
chdir           = /opt/tf_crm/
# Django's wsgi file
# 填写crm项目第二层的相对路径,找到第二层目录下的wsgi.py
# 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件
module          = tf_crm.wsgi
# the virtualenv (full path)
# 填写虚拟环境解释器的第一层工作目录 
home            = /opt/tf_crm/venv_crm
# process-related settings
# master
master          = true
# maximum number of worker processes
# 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1
# 如果是单进程,十万个请求,都丢给一个进程去处理
# 3个工作进程,十万个请求,就分给了3个进程去分摊处理
# 查看几核
# [root@localhost ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
# cpu cores	: 4
processes       = 9

# the socket (use the full path to be safe
# 这里的socket参数,是用于和nginx结合部署的unix-socket参数,这里临时先暂停使用
# socket          = 0.0.0.0:8000
#  线上不会用http参数,因为对后端是不安全的,使用socket参数是安全的连接,用nginx反向代理去访问
# 后端程序是运行在防火墙内部,外网是无法直接访问的
# 临时使用http参数,便于我们用浏览器调试访问
http =  0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

第二步中 uwsgi.ini 配置文件的无注释版

[uwsgi]
# Django-related settings
# the base directory (full path)
chdir           = /opt/tf_crm/
# Django's wsgi file
module          = tf_crm.wsgi
# the virtualenv (full path)
home            = /opt/tf_crm/venv_crm
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 9
# the socket (use the full path to be safe
# socket          = 0.0.0.0:8000
http =  0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
3.此时可以用命令,基于uwsgi协议的一个高性能web后端启动了
(venv_crm) [root@localhost tf_crm]# uwsgi --ini ./uwsgi.ini  # 指定配置文件启动后端
# 浏览器访问 10.0.0.129:8000/login/
# 4.此时crm项目,已经用uwsgi支持了9个进程的启动了,但是由于uwsgi对静态文件的解析性能很弱,线上需要交给nginx去处理
# 5.uwsgi和uwsgi.ini都配置完毕之后,开始使用supervisor工具进行管理了
# 先明确,启动uwsgi的绝对路径命令是什么
	# 5.1  找到uwsgi的绝对路径        /opt/tf_crm/venv_crm/bin/uwsgi
	# 5.2  找到uwsgi.ini的绝对路径    /opt/tf_crm/uwsgi.ini  
	# 5.3  因此 启动 crm项目的完整绝对路径命令是
		 /opt/tf_crm/venv_crm/bin/uwsgi --ini /opt/tf_crm/uwsgi.ini  

# 6.修改supervisor的配置文件
vim /etc/supervisord.conf #写入如下
[program:crm]
command=/opt/tf_crm/venv_crm/bin/uwsgi --ini /opt/tf_crm/uwsgi.ini      				 
autostart=true
startsecs=10
autorestart=true
stopasgroup=true
killasgroup=true

# 7.启动supervisor,默认就会直接启动uwsgi了 
(venv_crm) [root@localhost tf_crm]# supervisord -c /etc/supervisord.conf  # 启动supervisor服务端,指定配置文件启动
# 启动完毕supervisor之后,检查进程信息
(venv_crm) [root@localhost tf_crm]# ps -ef | grep supervisor  # 检查supervisor是否存在了进程,是否启动
(venv_crm) [root@localhost tf_crm]# ps -ef | grep uwsgi  # 检查uwsgi是否启动

# 8.进度supervisor任务管理终端
# 看到如下的结果,表示自定义的任务crm,也就是uwsgi进程,正确的启动了
(venv_crm) [root@localhost tf_crm]# supervisorctl -c /etc/supervisord.conf
crm                              RUNNING   pid 73933, uptime 0:02:07
supervisor> 

# 9.浏览器访问 10.0.0.129:8000/login/
# 看到了没有静态文件的 crm 界面,就是正确的了

# 10.supervisorctl的管理命令
提供了如下命令
(venv_crm_again) [root@s25linux tf_crm]# supervisorctl -c /etc/supervisord.conf
crm                           RUNNING   pid 41451, uptime 0:01:34
supervisor>
supervisor>start crm
supervisor>stop crm 
supervisor>status 
supervisor>start all 
supervisor>stop all 

# 11.uwsgi异常崩溃的话,supervisor会立即重启uwsgi

# 12.如果要运行多个 uwsgi项目,在supervisor中定义多个任务即可

posted @ 2023-09-04 13:18  zylyehuo  阅读(221)  评论(2编辑  收藏  举报