Linux 干货整理

linux,干货,整理 · 浏览次数 : 205

小编点评

**uwsgi.ini** ```python # Django-related settings chdir = "/opt/tf_crm/" module = "tf_crm.wsgi" home = "/opt/tf_crm/venv_crm" # Process-related settings master = True processes = 9 # Socket parameters socket = "0.0.0.0:8000" # Other parameters chmod_socket = 664 vacuum = True autostart = True autorestart = True stopasgroup = True stoponexit = True ``` **其他配置** * **uWSGI configuration:** `/opt/tf_crm/uwsgi.ini` * **Supervisor configuration:** `/etc/supervisord.conf` * **Supervisor tasks:** `/etc/supervisord.confcrm`

正文

博客地址: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中定义多个任务即可

与Linux 干货整理相似的内容:

Linux 干货整理

> 博客地址:https://www.cnblogs.com/zylyehuo/ # 如果虚拟机开机没有 ip 怎么办 ```bash 1.vim编辑网卡配置文件,修改如下参数 [root@s25linux tmp]# cd /etc/sysconfig/network-scripts/ vim修改

干货!超实用的 Linux 初始化脚本

咸鱼今天给大家分享一个无论是学习还是工作中都很实用的 Linux 系统初始化脚本,其实就是各种命令的集合 完整代码在文章最后哦 定义相关变量 配置 yum 镜像源 获取阿里云 yum 镜像源 判断函数是否执行成功 写入一行配置 修改配置 配置系统时区 配置 dns 服务器 修改最大文件描述符限制 关

[转帖]小技巧!如何用 systemtap 排查问题

https://www.modb.pro/db/79444 霸爷博客,干货满满。有两篇文章现在还记得,《Linux下如何知道文件被哪个进程写》[1]和《巧用Systemtap注入延迟模拟IO设备抖动》[2],周末突然想起来,发现能看懂了:) 本文虽然说是小技巧,可是难度一点也不低 ^_^ 什么是 s

[转帖]Systemtap 用法

https://www.jianshu.com/p/fb4dde8baff4 霸爷博客,干货满满。有两篇文章现在还记得,《Linux下如何知道文件被哪个进程写》和《巧用Systemtap注入延迟模拟IO设备抖动》,周末突然想起来,发现能看懂了:) 什么是 systemtap Systemtap is

Docker容器共享磁盘

需求:.NET程序需要监控一个FTP上的文件变化并进行操作,在linux上使用原生目录时,不管怎么切换后台运行,总是会在一段时间运行后死掉。 方案:远程也不好debug,想了一下,干脆直接使用docker-compose运行,设置死了自动重启(restart=always)就完事了。 由于FTP与.

一文全懂:Linux磁盘分区

本篇文章讲了linux磁盘管理中的分区相关知识,mbr和gpt分区有何不同?从添加一块硬盘到最后挂载到系统,经历了哪些步骤?如何创建交换分区并给交换分区扩容?

Linux 提权-密码搜寻

本文通过 Google 翻译 Password Hunting – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。 导航 0 前言 1 密码搜寻 – 文件名和文件内容 1.1 寻找有趣的文件名 1.2 寻找有趣的

玄机-第一章 应急响应- Linux入侵排查

玄机-第一章 应急响应- Linux入侵排查 简介 账号:root 密码:linuxruqin ssh root@IP 1.web目录存在木马,请找到木马的密码提交 2.服务器疑似存在不死马,请找到不死马的密码提交 3.不死马是通过哪个文件生成的,请提交文件名 4.黑客留下了木马文件,请找出黑客的服...

Linux 文件夹和文件操作【Linux 常用命令系列一】

本文首先介绍了 Linux 中文件的结构,将全部文件夹罗列并介绍了大概的用途,然后通过实例介绍了文件夹相关的常用操作,仅供参考。

玄机-第一章 应急响应-Linux日志分析

前言 又花了一块rmb玩玄机。。。啥时候才能5金币拿下一个应急靶机,只能说功底还没到家,唯有继续加油了。。。 简介 账号root密码linuxrz ssh root@IP 1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割 2.ssh爆破成功登陆的IP是多少,如果有多个使用","...