git操作

1.git init [project-name]

2.git clone url  克隆文件

3.git status 查看目前状态

4.git add .  添加

5.git commit -m "[descriptive message]"  提交更改

6.git push [alias] [branch]  推送文件

7.git pull  获取文件

Mysql

一、Mac系统下安装mysql及可视化工具:

《可视化工具使用Sequel Pro

配置mysql:

touch .bash_profile

vim .bash_profile  添加路径:PATH=/usr/local/mysql/bin:$PATH

source .bash_profile

mysql修改密码:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

FLUSH PRIVILEGES;》

数据库授权:grant all on *.* to root@”IP”identified by “数据库密码”

数据库导出:mysqldump -uroot -p test >test.sql

数据库导入:mysql -uroot -p test < test.sql

二、linux中MySql相关操作

安装:

1、由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。

下载命令:

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

2、然后进行repo的安装:

rpm -ivh mysql57-community-release-el7-9.noarch.rpm

执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo

3、使用yum命令即可完成安装

注意:必须进入到/etc/yum.repos.d/目录后再执行以下脚本

3.1安装命令:

yum install mysql-server

3.2启动msyql:

systemctl start mysqld #启动MySQL

3.3获取安装时的临时密码(在第一次登录时就是用这个密码):

grep 'temporary password' /var/log/mysqld.log

3.4倘若没有获取临时密码,则删除原来安装过的mysql残留的数据

rm -rf /var/lib/mysql

再启动mysql

systemctl start mysqld #启动MySQL

unbantu

1、安装mysql

apt update  //更新仓库

apt install -y mysql-server mysql-client  //安装mysql服务端、客护短

设置密码:

---------------------------------

①连接数据库

mysql -uroot -p

密码

②查看所有的库

show databases

---------------

③mysql的管理命令:重启、停止、开始

service mysql stop

service mysql start

service mysql restart

-----------------------

④mysql的配置

二进制安装目录:vi/etc/mysql/my.cnf  或者路径:/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]

basedir         = /usr/     --mysqls

程序安装位置

datadir          = /var/lib/mysql    --数据存放位置

port                      = 3306          --端口

bind-address    = 127.0.0.1    --绑定地址,127.0.0.1地址只可在本机连接,

max_connections = 100            --最大连接数

slow_query_log    = 1         --慢查询,查询慢的sql记录到文件中,方便查询,1是开机

slow_query_log_file     = slow.log     --记录位置

long_query_time         = 2         --执行超过2,秒的就是慢查询

innodb_buffer_pool_size = 3G           --缓存控制,默认安装值是最低,总内存的70%(专用),两种引型:InnoDb

查询配置文件:

vi /etc/mysql/my.cnf

真实地址:/etc/mysql/mysql.conf.d/mysqld.cnf

查看mysql状态:

查看最大连接:show variables like 'max_connections';

查看正在来接数:show global status like 'max_used_connections';

查看配置的空间:show variables like 'innodb_buffer_pool_size';

各种操作数量:show status like 'innodb_rows_%';

\s 查看状态

mysql手册:https://dev.mysql.com/doc/refman/5.7/en/

-----------------

备份数据库:

创建数据库:create database test;

show tables;

use test;

exit;退出

mysqldump -uroot -p密码test >test.sql  备份

mysql -uroot -p密码test <test.sql  恢复

2、用户授权

mysql默认情况不可以远程连接,查看当前用户:

select host,user from mysql.user;

用户授权:all、select、update、*.*不限制任何数据库和表,%位置代表主机IP地址

grant all on *.* to root@"%" identified by "letmein"

----------------

创建远程连接,

授权用户

  • ,配置文件中注释掉  本地地址172.0.0.1

重启数据库

Service mysql restart

1、 >mysql -h localhost -u root -p // localhost:主机名(如果访问本机数据库则不用输入 -h localhost,-u root用户名 -p密码)

2、 >mysql \c  // 退出当前命令并重新回到命令提示行。

3、 >mysql help; // 查看帮助信息

4、 >mysql \q || quit|| exit  // 退出mysql客户端

5、 >mysql show databases;     // 查看当前mysql客户端所有数据库

6、 >mysql use 数据库名; // 使用数据库

7、 >mysql select database();    // 查看当前使用库

8、 >mysql create database 数据库名;                 // 创建数据库

9、 >mysql create database if not exists 数据库名 charset = 字符集(utf8) collate = utf8_general_ci;    // 创建数据库和设置字符集并设置排序规则

10、>mysql drop database 数据库名;     // 删除数据库 (会将该数据库里的表和表数据全部删除)

11、字段类型

整型

int(长度)

smallint(长度)

tinyint(长度)

字符串

varchar(100)  // 变长字符串

char(长度) // 定长字符串

时间日期

date // 年月日

datetime // 年月日时分秒

year // 年

time // 时分秒                    查询工资大于6000小于10000的教师名称和工资并且按照工资高低进行逆向排序

文本类型

text // 最大64K

BLOB      // 最大64K

约束[选项]

auto_increment    // 自动增长

primary key   // 主键

default          // 默认值

not null // 非空

null        // 为空

default          // 默认值

unsigned  //无符号(正数)

unique  //唯一性(可以为null但不重复)

index  //常规索引

12、 >mysql drop table 表名;   // 删除数据表(数据表里的内容也会被删除)

13、 >mysql describe || desc 表名;  // 查看表结构

14、 >mysql create table if not exists 表名(

id     类型(长度) 选项,            // 主键的选项一般为 auto_increment(自增长) primary key(主键) not null(非空)

字段1  类型(长度) 选项,

....

);

15、>mysql alter table 表名 add 字段 类型 约束;             // 添加一列(添加字段)

16、>mysql alter table 表名 change 旧字段 新字段 类型 约束;      // 修改一列(修改字段)

17、>mysql alter table 表名 drop 字段;               // 删除一列(删除字段)

18、>mysql insert into 表名(`字段1`,`字段2`,`字段....`) values('字段1的值','字段2的值','字段值...');             // 添加数据(如果要添加多条数据则在values值后边接着写即可);

>mysql insert into 表名 values('字段1的值','字段2的值','字段值...');    //字段值按顺序写

19、>mysql select 查询字段(可以起别名) from 表名(可以起别名);          // 查询表数据( * 查询所有 如果不想查询所有直接写想查询字段即可,多个字段的话中间用逗号隔开)

20、>mysql as 关键字 // 起别名(任何表,任何字段都可以起别名)

21、>mysql insert into 表1(`字段`,`字段1`,`...`) slect 字段,字段1,... from 表2;           // 插入从其他表选择的行(将一个表中的数据插入到另一个表中);

22、>mysql update 表名 set `字段` = '值' where 条件;        // 更新数据(如果不加where条件则会更新该表所有数据);

23、>mysql delete from 表名 where 条件;                         // 删除数据(如果不加where条件则会删除该表所有数据);

24、>mysql order by 字段(主键[id]) asc || desc  // 排序 asc正序(默认) desc 倒序

25、>mysql limit 值1,值2;               // 控制结果显示条数,参数1:从哪里开始显示 参数2:显示几条

eg: mysql> select * from users order by cdate asc limit 10;

26.mysql> show create table 表名\G        --查看表的建表语句。

django

官网:www.djangoproject.com

安装:pip install django==1.11.11

1、新建项目:cmd窗口命令:django-admin startproject myweb

2、启动项目:1,cd myweb

python manage.py runserver(只能localhost:8000访问)

2,python manage.py runserver 0:8000(任意电脑访问)

settings.py文件里添加:ALLOWED_HOSTS = ['IP地址']

3、创建应用

python manage.py startapp myapp

4.

生成数据库迁移文件:python manage.py makemigrations

model数据库迁移:python manage.py migrate

5.创建管理用户:python manage.py createsuperuser

爬虫scrapy

创建项目:scrapy startproject demo

创建爬虫:

scrapy genspider fang fang.5i5j.com

执行爬虫:

scrapy crawl fang

结果另存格式:

scrapy crawl fang -o fang.xml

爬虫常用请求库

Urllib

Python3 urllib库官方链接:https://docs.python.org/3/library/urllib.html

  • urllib中包括了四个模块,包括:
  • urllib.request:可以用来发送request和获取request的结果
  • urllib.error:包含了urllib.request产生的异常
  • urllib.parse:用来解析和处理URL
  • urllib.robotparse:用来解析页面的robots.txt文件

urllib.request:

  • urllib.request 模块提供了最基本的构造HTTP 请求方法,可以模拟浏览器的一个请求发起过程。同时它还带有处理authenticaton(授权验证),redirections(重定向),cookies(浏览器Cookies)以及其它内容。
  • urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
  • 参数:url地址
    • data:可选附加参数,字节流编码格式(bytes() 可转换),请求方式会变为POST
    • timeout (超时时间)单位为秒,若请求超出了设置时间还没有响应,则抛异常
  • 返回HTTPResposne类型的对象:
  • response.read() 就可以得到返回的网页内容,可使用decode("utf-8")解码字符串
  • response.status 就可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到

 urllib.request.Request:

  • 利用urlopen()方法可以实现最基本的请求发起,但这几个简单的参数并不足以构建一个完整的请求。
  • 使用强大的Request类可以在请求中加入需要的headers等信息。
    class urllib.request.Request(url, data=None, headers={}, origin_req_host=None,    
          unverifiable=False, method=None)
  • 第一个参数是请求链接,这个是必传参数,其他的都是可选参数
  • data 参数如果要传必须传bytes (字节流)类型的,如果是一个字典,可以先用urllib.parse.urlencode() 编码。
  • headers 参数是一个字典,你可以在构造Request 时通过headers 参数传递,也可以通过调用Request 对象的add_header() 方法来添加请求头。
  • origin_req_host 指的是请求方的host 名称或者IP 地址。
  • unverifiable 指的是这个请求是否是无法验证的,默认是False 。意思就是说用户没有足够权限来选择接收这个请求的结果
  • method 是一个字符串,它用来指示请求使用的方法,比如GET ,POST ,PUT 等等。

mongodb:

1.创建一个数据目录文件夹 c:\data\db

2.打开mongodb服务

mongod --dbpath c:\data\db

3.打开一个终端连接mongodb服务器

命令:mongo

自动化运维

1 Linux基础

1.1目录和文件操作

pwd 打印当前工作目录

cd 切换目录

cd   宿主目录

cd - 上次的目录

cd .. 上级目录(.代表当前目录)

cd /home/

ls 列出目录中的文件

ls -l 详细信息

ls -a 显示所有文件(包含以点开头的文件)

ls -F 目录后加斜线显示(文件夹后加/)

ls -lh 人性化单位显示大小

mkdir 创建目录

touch 创建文件

touch readme.txt    ||  touch hello 文件

写数据到文件

echo "1234" >>readme.txt

rm 删除文件

rm -r 删除目录 -r 递归删除

rm -i 删除前提示

rm -f 删除文件不提示

rm -rf 删除目录(不提示)

rm -rf ./* 删除当前目录所有文件

mv 移动文件

例:

复制:touch test

创建:mkdir demo

移动: mv test demo/

修改名字: mv demo/test demo/abc   test修改成abc

cp  复制copy

cp /etc/issue ./     讲/etc/issue文件复制到当前目录

cp -r 递归复制目录

find 搜索

find /etc -name init 在/etc目录精确查找init文件

find /etc -name 'init*' 在/etc目录找init开头的文件

find /etc -name '?init' 在/etc目录找以init结尾,前面只有一个字符

find /usr/bin -size +3M 在/use/bin目录查找大于3M的文件

which 显示命令路径

which python3

cat 显示文件内容

cat /etc/hosts

more

more /etc/services 查看/etc/services件

空格 翻页

回车  下一行

b 上一页

q退出

head 查看文件头几行

head -n 5 /etc/services

tail 查看文件最后几行

tail -n 5 /etc/services  显示/etc/services文件最后5行

tail -f 监视文件变化

ln 创建连接

ln -s 源文件 新文件  (创建ls软连接)

例:ln -s readme.txt install.txt  (写任何东西到软连接都会同步到源文件中,写到源文件中的数据不会同步到软连接)

ln 源文件 新文件      (创建硬链接)

(硬链接没有任何区别,相当于拷贝了一份,不管谁发生变化,另一方都会变化,不可以跨文件创建)

1.2解压和打包

tar.gz 格式

打包 tar -zcvf test.tar.gz test

将test目录打包,生成test.tar.gz文件

解压 tar -zxvf test.tar.gz

将test.tar.gz文件解压

.bz2格式

·打包tar -cjf test.bz2 text

将test目录打包,生成test.bz2

·解压tar -xjf test.bz2

将test.bz2解压

打包 zip -r test.zip test

将test目录打包,生成test.zip文件

解压 unzip test.zip

ContOS 下安装zip: yum -y install zip

Ubuntu 下安装zip: sudo apt install zip

Windows下,推荐用WinRAR压缩为ZIP格式,不要用"好压

file 查看文件类型

file test  查看test是什么文件

1.3 vi编辑器使用

---------------------

:wq 存盘并退出 (write and quit)

:w 存盘

:q 退出

:q! 不存盘强制退出

:wq! 强制存盘退出

ESC返回命令模式

:set nu 显示行号

:15 跳到第15行

G 定位到最后一行

gg 到第一行

/str 搜索str字符串,按n键到下一处

dd 删除一行(剪切)

5dd 删除5行(剪切)

yy  复制

5yy 复制5行

P   粘贴

u   撤销

ctrl + r 恢复上一步撤销操作

1.4 Linux的用户与权限管理

文件权限

read    可读     4

write   可写     2

execute 可执行   1

r 读权限 可查看文件内容, 可列出目录内容

w 写权限 可以修改文件内容, 可以再目录中创建,删除文件

x 执行权限 可以执行文件, 可以进入目录

用户分类

user 所有者

group 所属组

other 其它人

第一个字符D代表目录

用户组管理命令

groupadd 添加用户组

groupdel 删除用户组

删除用户和组步骤:

1、删除 /homo/目录下的用户目录: rm -rf /home/名称/

2、userdel 用户

3、groupdel 用户组完成

用户管理命令

useradd 添加用户

-g      指定用户组

-m  自动创建宿主目录(ubuntu)

-r   连同宿主目录一起删除

passwd修改用户密码(没有参数时修改自己的密码)

设置密码:password jack

权限操作:

chown jack testfile   改变文件的所有者,把testfile文件所有者改成jack

chgrp group1 testfile  改变文件的组

chmod u+x ./start.sh    改变文件的权限

例子:chmod g+w python/   对组权限中加入w权限

chmod -R 777 /data/www

(7:4+2+1,5:4+1)

------------------------ 案例:---------------------

1、创建两个小组

python  :  groupadd python

php  :  groupadd python

2、创建3个用户

python组:jack mary

useradd -m -g  python jack   //创建用户,并加到python组中,宿主目录中会创建文件夹

useradd -m -g  python mary

查看jack : id jack

查看组目录: ls /home/  查看所有的用户

删除 /homo/目录下的用户目录: rm -rf /home/名称/

php组: lily  tom

useradd -g -m php lily

useradd -g -m php tom

3、创建目录

/data/python

创建文件夹(加-p才能创建两层目录):mkdir /data/python -p

/data/php

创建文件夹(加-p才能创建两层目录):mkdir /data/python

4、配置权限目录:

python 组的同事允许再 /data/python 目录中工作

php组的同事允许再 /data/php 目录下工作

转让文件权限:

chown jack python/  吧python文件夹转让给jack

chgrp python python 把python文件所属组给到python 组,要在文件主目录中操作.

文件权限配置:

chmod u+x 1.py

创建文件  touch 文件

1.5 Linux的进程管理

程序 是指令和数据的有序集合,是一个静态的概念

进程 代表一个正在运行的程序的实例

线程 通常在一个进程中可以包含若干个线程

在命令末尾加上 & 符号,就可以让程序在后台运行

程序正在前台运行,可以使用 Ctrl+Z 把程序暂停

jobs 查看运行的程序

bg 把暂停的程序放到后台运行

fg 把一个程序掉到前台运行

执行:python3 ./test.py &

----------------------------------

查看进程

ps -ef | grep httpd

ps -aux |

UID 程序被该 UID 所拥有

PID 就是这个程序的进程ID

PPID  则是其上级父程序的进程ID

C  表示CPU使用的资源百分比

STIME 表示进程启动时间

TTY  登入者的终端机位置

TIME 使用掉的 CPU 时间。

CMD 所下达的指令为何

----------------------------------

查看进程的CPU和内存占用:

ps aux

ps -aux | grep httpd

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态,linux的进程有5种状态:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped`

Z 僵死 a defunct (”zombie”) process

注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

-------------------------------------

top命令:

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

----------------------------------------------

结束进程:

结束前台进程CTRL+C

kill 结束指定进程ID

-9 强制

pkill 进程名 pkill http

-----------------------------

查看硬盘空间:

df -h

-----------------------------

查看当前登录用户

w

pkill -9 -t pts/1 把终端pts/1的用户踢出去

2 服务器软件安装与管理

2.1、二进制软件包管理

ubuntu

apt update  //更新软件仓库信息

apt install -y zip    //安装zip软件

apt remove zip     //删除zip

centos

yum yodate   //更新软件仓库

yum install -y zip  //安装zip软件

yum remove zip  //删除zip

2.2源码编译准备工作

apt install -y gcc g++ make (ubuntu)

yum install -y gcc gcc-c++ make (CentOS)

安装编译所需工具

wget http://example.com/xxx.tar.gz

下载软件源码包到服务器上

源码编译基本步骤

解压软件包,阅读安装说明README、INSTALL等

./configure --prefix=/usr/local/path(设置安装路径)

make

make install

编译nmap

https://nmap.org/

2.3 linux中MySql相关操作

1、安装mysql

apt update  //更新仓库

apt install -y mysql-server mysql-client  //安装mysql服务端、客护短

设置密码:

---------------------------------

①连接数据库

mysql -uroot -p

密码

②查看所有的库

show databases

---------------

③mysql的管理命令:重启、停止、开始

service mysql stop

service mysql start

service mysql restart

-----------------------

④mysql的配置

二进制安装目录: vi/etc/mysql/my.cnf  或者路径:/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]

basedir         = /usr/     --mysqls

程序安装位置

datadir          = /var/lib/mysql   --数据存放位置

port                      = 3306          --端口

bind-address    = 127.0.0.1    --绑定地址,127.0.0.1地址只可在本机连接,

max_connections = 100            --最大连接数

slow_query_log    = 1         --慢查询,查询慢的sql记录到文件中,方便查询,1是开机

slow_query_log_file      = slow.log     --记录位置

long_query_time         = 2         --执行超过2,秒的就是慢查询

innodb_buffer_pool_size = 3G           --缓存控制,默认安装值是最低,总内存的70%(专用),两种引型:InnoDb

查询配置文件:

vi /etc/mysql/my.cnf

真实地址:/etc/mysql/mysql.conf.d/mysqld.cnf

查看mysql状态:

查看最大连接: show variables like 'max_connections';

查看正在来接数:show global status like 'max_used_connections';

查看配置的空间: show variables like 'innodb_buffer_pool_size';

各种操作数量: show status like 'innodb_rows_%';

\s 查看状态

mysql手册:https://dev.mysql.com/doc/refman/5.7/en/

-----------------

备份数据库:

创建数据库:create database test;

show tables;

use test;

exit;退出

mysqldump -uroot -p密码 test >test.sql  备份

mysql -uroot -p密码 test <test.sql  恢复

2、用户授权

mysql默认情况不可以远程连接,查看当前用户:

select host,user from mysql.user;

用户授权:all、select、update、*.*不限制任何数据库和表,%位置代表主机IP地址

grant all on *.* to root@"%" identified by "letmein"

----------------

创建远程连接,

授权用户

  • ,配置文件中注释掉  本地地址172.0.0.1

重启数据库

Service mysql restart

2.4 Linux中Django框架安装和启用

1、linux 下安装Django框架

apt update

python -V  查看版本

apt install Python3

---------------------------------

pip -V

pip3 -v

apt install python3-pip

---------------

pip3 install django  安装框架

clear

安装 指定版本的 Django 命令如下:

Pip3 install django==1.10.3

卸载:

Pip3 uninstall django

-----------------

django-admin startproject demo  创建项目

发布项目

python3 manage.py runserver 0.0.0.0:8080

python3 manage.py runserver 0.0.0.0:80   --就可以访问项目

---------

python -m django --version  查看版本

2.5 uWSGI 服务器的使用和Django项目的发布

pip3 install uwsgi  //安装命令

启动命令:(--chdir指定项目目录)(--module哪一个模块 demo项目下的wsgi)(--daemonize/var/log/uwsgi.log指定日志文件)

//设置了默认端口就不用再加9090

uwsgi --http:9090 --chdir /root/demo  --module demo.wsgi

uwsgi --http:9090 --module demo.wsgi --daemonize /var/log/uwsgi.log

--程序后台运行命令 项目目录下:

uwsgi --http :9090 --chdir /root/demo1 --module demo1.wsgi --daemonize /var/log/uwsgi.log

日志路径:/var/log/uwsgi.log

搜索

--------------结束进程---------------

ps -ef |grep uwsgi

结束进程(只结束父进程就可以):

kill -9 父线程号

-----

把uwsgi加到配置中,开机自启

vi /etc/rc.local

把下面的放进去:(which uwsgi 查看地址)

uwsgi地址 --http :80 --chdir /root/demo --module demo.wsgi --daemonize /var/log/uwsgi.log

2.6性能测试

吞吐率(Requests per second)

并发连接数(The number of concurrent connections)

并发用户数(The number of concurrent users,Concurrency Level)

用户平均请求等待时间(Time per request)

服务器平均请求等待时间(Time per request: across all concurrent requests

----ab---工具

ab (apache bench)

apache提供的一个压力测试工具

apt install apache2-utils

ab -c 20 -n 10000 http://exampl.co

3 高并发下的web架构一

3.1反向代理与负载均衡

1. 了解反向代理与负载均衡技术

什么是负载均衡

通过某种负载分担技术,将外部发送来

的请求均匀分配到对称结构中的某一台服务器

上,而接收到请求的服务器独立地回应客户的

请求。

负载均衡的实现

硬件负载均衡、软件负载均衡,DNS

软件负载均衡

Nginx

轻量级的Web服务器/反向代理服务器

特点

工作在网络的7层之上

对网络的依赖非常小

并发大,性能不俗

  • 熟悉Nginx安装与配置

apt update

apt install –y nginx

service nginx start

service nginx stop

service nginx restart

nginx -t

nginx -s reload      //平滑的重启。配置重载。

---说明,这时候,启动Nginx后,通过页面就可以访问IP地址

②Nginx主配置文件

vi /etc/nginx/nginx.conf

user       www-data;  //代表nginx以什么身份运行;

worker_processes        auto;    //工作进程数,默认,根据CPU数量来设置;

pid /run/nginx.pid;       //会将启动文件放到这个文件中

events {

worker_connections 768;            //代表一个owrk能处理多少个并发; 进程数*worker连接数=并发数

}

http {

gzip on;  //网页压缩,on是开启

access_log /var/log/nginx/access.log;     //成功日志

error_log /var/log/nginx/error.log;     //错误日志

include /etc/nginx/conf.d/*.conf; //配置文件,每个配置文件已分号结束。

include /etc/nginx/sites-enabled/*;

}

③Nginx的server配置

vi /etc/nginx/sites-enabled/default

server {

listen 80; //监听端口

root /var/www/html;    //指定网站根目录在什么地方,默认访问此网页

index index.html index.htm; //默认去访问的文件

server_name _;             //_中通常填写域名

location / {

try_files $uri $uri/ =404;       //尝试输入的数据当成文件去查看,没有加/当目录查找,没有报错;

}

}

3. 了解Nginx反向代理与负载均衡

④Nginx反向代理

server {

......

location / {

proxy_pass http://192.168.88.3:81;     //一旦有访问Linux地址,就跳转到这里

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

}

⑤Nginx负载均衡

upstream backend {

server 192.168.8.3:80 weight=1;

server 192.168.8.4:80 weight=1;

}

location / {

proxy_pass http://backend;

}

3.2-Memcached缓存

1. 了解什么是缓存

缓存为王

DNS、浏览器、App、代理缓存、服务端缓存

*内存缓存

RDB Memory

随机访问情况下,内存访问速度比硬盘访问速度快上10万倍以上

*缓存算法

1. LRU(Least Recently Used)

最近最少使用

2. LFU(Least Frequently Used)

根据数据的历史访问频率来淘汰数据

①安装

apt install -y memcached

service memcached stop

service memcached start

service memcached restart

②参数配置

vi /etc/memcached.conf

-d 守护进程

-m 内存,default 64MB

-u 运行用户

-l 监听的服务器IP地址

-p 监听端口,默认是11211

-c 并发连接数,默认是1024

③安装

apt install -y memcached

service memcached stop

service memcached start

service memcached restart

telnet 127.0.0.1 11211

version

stats

④状态

telnet 127.0.0.1 11211

stats

STAT pid 237784 # 进程ID

STAT uptime 2070631 # 运行秒数

STAT version 1.4.25 # 版本

STAT libevent 2.0.21-stable # libevent 版本

STAT pointer_size 64 # 系统指针(32bit/64bit)

STAT curr_items 50237 # 当前实例存储的 items数量

STAT total_items 1337400 # 实例启动以后存储的 items总数量

STAT bytes 35169108 # 实例存储 items占用的字节数

STAT curr_connections 349 # 当前打开的连接数

STAT total_connections 108429 # 实例启动后打开的连接总数

STAT cmd_get 14005676 # get 命令总请求次数

STAT cmd_set 1337400 # set 命令总请求次数

STAT get_hits 12596511 # 总命中次数

STAT get_misses 1409165 # 总未命中次数

STAT evictions 0 # 为获取空闲内存而删除的 items数

STAT bytes_read 4918928094 # 总读取字节数(请求字节数)

STAT bytes_written 46027378599 # 总发送字节数(结果字节数)

STAT limit_maxbytes 1572864000 # 分配的缓存大小

STAT threads 4 # 当前线程数

⑤Python中使用

# pip install python-memcached

import memcache

# 链接

mc = memcache.Client(['127.0.0.1:11211'])

# 存入

mc.set('name', 'python', 60) # 过期时间秒

# 读取

res = mc.get('name')

# 删除

mc.delete('name'))

4 高并发下的web架构二

4.1理解同步与异步

  1. RabbitMQ是异步处理数据的;

同步:处理时间长

异步:

常见的消息队列软件:

RabbiteMQ、Redis

4.2安装RabbitMQ消息队列

  1. 基础概念:

  1. 安装管理:

步骤①:安装

安装:   Apt install -y rabbitmq-server

启动:   service rabbitmq-server stop  /start   /restart

步骤②启动rabbitmq的web管理界面;

启动rabbitmq的web管理界面;

*在linux服务器中执行:启用management plugin    web管理插件:

命令:rabbitmq-plugins enable rabbitmq_management

*在浏览器中输入服务器的IP地址和端口:

http://39.96.84.227:15672/

*添加用户

创建用户命令:rabbitmqctl add_user jack 密码    //此密码是访问rabbitmq网站的密码,qq=734428630

给用户指定角色:

给用户指定角色命令:

rabbitmqctl set_user_tags jack administrator    //指定为超级管理员

这时候可以去网页中登录 jack账户

↓↓↓↓↓↓

说明:rabbitMQ中有很多的交换机,交换机可以连接很多的队列;

数据发送给交换机,交换机把数据放到应该放的队列中;

4.3. 在Python中使用RabbitMQ

Python中操作RabbitMQ需要安装一个扩展:pip3 install pika

(在Windows中使用就在win中安装)

*创建连接→创建通讯信道→声明交换机→

*运行python文件,发现失败,是因为jack的权限还不够,解决:

Linux中执行:rabbitmqctl set_permissions -p / jack ".*" ".*" ".*"

------------------------写Python程序-----------------

4.3.1真实的项目中怎么使用rabbitMQ:

安装模块: pip install celery

删除模块: pip uninstall celery

指定版本安装(支持windows): pip install celery==3.*

使用celery的程序后台执行:celery -A bankend worker

5自动化运维基础(psutil、ipy、dnspython)

5.1通过命令查看linux任务管理器相关命令

  • top命令:查看cpu、内存kib、进程相关信息

Top中按1,可以对cpu排序;

  • 查看硬盘情况:df -h
  • 当前登录用户: W
  • 网络流量: watch cat /proc/net/dev

⑤当前的cup情况、:cat /proc/cpuinfo info

5.2Python的piutil模块查看管理器

①使用psutil模块查看CPU相关命令:

安装:pip3 install psutil

进入Python3:直接输入  Python3

导入psutil: import psutil

查看CPU数量:         psutil.cpu_count()

只显示物理核心CPU:              psutil.cpu_count(logical=False)

Cup从开机以来使用的情况:             Psutil.cpu_times()

Cpu当前的使用率:           psutil.cpu_percent()

Cpu持续占有率特别高,则需报警

分别查看每个CPU使用情况:         psutil.cpu_percent(percpu=True)

查看3秒钟CPU的使用率:             psutil.cpu_percent(percpu=True,interval=3)

②使用psutil模块查看内存相关命令:

查看内存使用情况:Psutil.virtual_memory()   或者:根目录下 free -m

查看交换分区:psutil.swap_memory()

当前服务器有几个分区:Psutil.disk_partitions()

查看每个分区可用空间:psutil.disk_usage(‘/’)    //根分区

硬盘的读写情况  :psutil.disk_io_counters()     //可计算硬盘时间内写了多少,

③网络相关情况:

发送数据包和接收数据包: psutil.net_io_counters()      //监控计算机流量状态

多块网卡,每块网卡情况:psutil.net_io_counters()

5.3psutil获取进程的相关信息

①psutil查看进程命令

拿到所有的进程ID: psutil.pids()

进程的详细信息:P = psutil.Process(1)

P.name()   //输出进程名称

进程的可执行文件:p.exe()

进程的工作目录:p.cwd()

进程状态:p.status()

进程创建时间: p,creat_time()

查看进程由哪个用户创建: p.uids()     p.gids()

进程所占用的CPU时间: p.cpu_time()

内存的利用率:p.io_counters()

进程有几个线程:p.num_threads()

②和联网相关的进程能看到网络信息

查看SSH和网络相关的连接: ps -ef |grep ssh

P = psutil.Process(进程ID)

P.name()  //输出进程名

P.connections()    //打印网络信息

可以用来分析进程有没有和别的网络连接

查看开机时间:psutil.boot_time()

对开机时间转换:

当前登录用户: psutil.users()

退出psutil : exit()

5.4 IPy模块的使用

用来处理IP信息相关的信息。

①IPy的安装和使用:

安装: Pip3 install ipy

进入Python:python3

查看是IPV几的IP地址:

网段的IP地址全部列出来:

判断IP是公网IP还是私网IP:

Ip = IPy.IP(“IP地址”)

Ip.iptype()

IP换成整数:ip.int()

16进制:ip.strHex   二进制:ip.strBin()

根据IP和子网掩饰码生成网段:

或:

IPy.IP(“192.168.1.0/255.255.255.248”,make_net=True)

判断一个IP地址和网段是否包含在另一个网段中:

‘IP地址’ in IPy.IP(“IP地址/网段”)

判断两个网段是否存在IP重复的情况:

5.5 dnsPython域名解析

安装:    pip3 install dnspython

进入Python3,导入 import dns.resolver

*对域名A记录进行查询:

查询域名的MX邮件解析记录:

Res = dns.resolver.query(“qq.com”,”MX”)

[item for item in res

查看域名的NS记录(用一级域名):

Res = dns.resolver.query(“qq.com”,”NS”)

[item for item in res

作用:可以对网站或者项目进行域名监控,python脚本,每隔十分钟对IP地址解析,并访问

6发布windows中的项目到云服务中

①通过pscp来传输文件,使用方法如下:

pscp简要说明 
pscp为window与Linux之间的文件传输工具,使用和Linux下scp命令相似。
pscp 安装

下载pscp 放到C:\WINDOWS\system32中,然后就可以在任何地方调用

参考:https://www.jianshu.com/p/101d42cd686b

远程传输到本地

pscp [options] [user@]host:source target

user:远程主机的用户名
host:远程主机的ip
source:远程主机上的文件, 只能是单个。
target:本地的存放路径可指定文件名。如:./test.txt, 若不指定则默认原文件名。

例:从172.17.1.100:22 机器的home/ubuntu/.ssh/id_rsa.pub文件copy文件到window的E盘根下

pscp -P 22 ubuntu@172.17.1.100:/home/ubuntu/.ssh/id_rsa.pub E:/

本地传输到远程

pscp [options]source [source....] [user@]host:target
source:本地的文件,多个文件用“空格”隔开
user:远程主机的用户名
host:远程主机的ip
target:远程的存放路径可指定文件名。如:/root/test.txt, 若不指定则默认原文件名

例:复制本地test.txt 和a.zip文件到远端主机

pscp -v test.txt, a.zip root@192.168.1.245:/root/

注意:

云服务中需要安装的包要全部安装好,开发环境和生产环境的python版本、Django版本要一致;

  • 使用pscp 传,传输项目到云服务;

②使用uwsgi发布项目

③使用Nginx做反向代理

**静态文件重定位,settings文件中:

STATIC_ROOT =os.path.join(BASE_DIR,”静态文件的路径”)

STATICFILES_DIRS = [

os.path.join(BASE_DIR, '/data/www/pro'),

]

监控及报警

1.使用python脚本自动化监控服务器资源及邮件和微信提示报警

2.使用python脚本自动化安装

3.自动化部署项目:

a.创建git仓库

b.开发测试环境部署

c.创建git账户,使用git账户创建共有仓库

d.使用git将Windows上的web项目推送到共有仓库

e.开发测试服务器使用root账户创建新项目目录,通过git克隆共有仓库的文件到新建项目目录

f.使用uwsgi发布项目

python、Linux、MySQL学习笔记相关推荐

  1. Linux mysql学习笔记

    此文是我从网上学习MySQL做的亲手笔记,希望能给大家提供帮助,仅供参考! 一.安装MySQL 1.源代码安装 wget http://repo.mysql.com/mysql-community-r ...

  2. Linux操作系统学习笔记【入门必备】

    Linux操作系统学习笔记[入门必备] 文章目录 Linux操作系统学习笔记[入门必备] 1.Linux入门 2.Linux目录结构 3.远程登录 3.1 远程登录Linux-Xshell5 3.2 ...

  3. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  4. Linux教程学习笔记

    Linux教程学习笔记 目录 Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 ...

  5. 无敌python爬虫教程学习笔记(一)

    python爬虫系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 本文目录 ...

  6. 韩顺平Linux教程学习笔记

    Linux系统学习笔记   新装了deepin v23系统,结果磁盘没设置好,玩崩了,百度半天修复不了,看看韩顺平老师的Linux操作课程,做做笔记(只记录对自己有用的).   B站网址 基础篇·Li ...

  7. python数据分析入门学习笔记

    python数据分析入门学习笔记儿 学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我 ...

  8. Linux+javaEE学习笔记之Linux网络环境配置

    Linux+javaEE学习笔记之Linux网络环境配置 网络知识简单介绍: Ip地址是:IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物 ...

  9. MySQL学习笔记(1)——高可用组复制

    MySQL学习笔记(1)--高可用组复制 积土成山,风雨兴焉.积水成渊,蛟龙生焉. 一.概念 组复制(MySQL Group Replication,MGR)是MySQL官方在MySQL 5.7.17 ...

  10. MYSQL学习笔记-(白夜黑羽)

    MYSQL学习笔记-(白夜黑羽) SQL配置的前期工作 1.mysql在Linux上的安装 前提条件在centos的root用户下安装 由于centos的yum仓库源默认为mariaDB,所以需重新配 ...

最新文章

  1. 【微信小程序】:实现轮播图3秒滚动
  2. c#中将对象序列化为xml(包括list)
  3. lua中清空目录和递归创建目录
  4. 涂鸦智能dubbo-go亿级流量的实践与探索
  5. PeekMessage
  6. 坦克世界 与服务器连接中断,坦克世界怎么老是显示与服务器连接已中断
  7. 高度不定垂直居中_CSS垂直居中的七个方法
  8. grep mysql_详解grep获取MySQL错误日志信息的方法
  9. pku2060 Taxi Cab Scheme
  10. 美团笔试--修改矩阵
  11. linux百度资源网盘,百度网盘 linux版
  12. Python计算机视觉实验五——针孔照相机模型
  13. CentOS 7.5 安装Nginx教程
  14. kali Linux sqli labs环境搭建,以及报503错误解决
  15. 揭开 BAT 的人工智能版图
  16. 万马股份旗下万马爱充遭通报下架:违规收集个人信息,未及时整改
  17. 简洁安装HIT-SCIR(哈工大) pyltp
  18. Windows10系统与Ubuntu系统之间的文件传输工具
  19. 罗永浩:我不是打断你,我是讽刺你
  20. 赴德国旅游办理签证指南(转载)

热门文章

  1. 神舟电脑为什么这么便宜
  2. 【ffmpeg】最全简单实用教程|安装音频视频剪切融合拼接抽帧等
  3. 高通kernel 补丁网址
  4. [STM32CubeMax配置] 一、系统RCC配置
  5. JAVA集合 ==> JAVA基础练习题 - 集合练习十道题
  6. 量子相干和量子纠缠犹如同一硬币的两面般密不可分
  7. 不允许有匹配 [xX][mM][lL] 的处理指令目标---无语了
  8. 关于张量的一点点小思考
  9. Dnf脚本源码新-摇篮上号开刷不多bb
  10. 图片上传和显示——上传图片——上传文件)==ZJ