标签:强制 生命周期 linux中 RoCE 相对路径 临时文件 库文件 管理网络 顺序
软件开发的生命周期
1.产品提需求
2.数据库设计(开发阶段),后端开发
3.前端页面开发
4.代码测试,单元测试,没有bug了
5.此时代码测试没有bug了,还不足以支撑一个并发的网站
6.此时运维工程师,负责产品上线,将代码部署到linux服务器上,对外提供访问
django并发性很差+nginx,支持负载均衡,支持反向代理,让你的网站足以支撑10万+并发,mysql数据都放在磁盘上,受到磁盘性能的影响,机械硬盘速度只有固态硬盘的1/10速度,mysql的主从复制,防止单点机器故障,数据受影响。
使用redis缓存数据库,数据都放在内存当中,消息队列,让你的网站,足以支撑秒杀的并发危险性。
部署django的流程
1.代码拷贝
2.python解释器安装
3.python模块安装
4.可以正常运行代码
docker容器技术,解决你所有的软件部署问题
服务器硬件厂商:
1.dell
2.hp
3.联想
4.浪潮
5.ibm
服务器分类:互联网公司,怎么选择服务器?一般有什么
1.物理服务器,有钱的大公司,买自己的服务器,建造自己的机房(零度,无尘,无静电)防止机器短路,数据丢失
-有钱的公司,bat,建造自己的机房
-中等的公司,普通的外企,也有自己的服务器,但是服务器,托管在别人的机房(世纪互联这家公司)
2.云服务器,阿里云,腾讯云(便宜,省钱,无烦恼),初创型的小公司
3.vmware虚拟化技术
vmware虚拟化技术
使用:
linux的默认终端有7个,7个屏幕
ctrl + alt + f1-f7
使用linux的步骤
1.配置远程连接工具 xshell
2.通过命令,远程连接服务器
ssh这个命令,
语法格式:
ssh root@服务器地址 ssh root@192.16.167.37
windows是反斜杠,linux是正斜杠的目录分隔符
linux的目录结构,是 以 / 这个根目录 为源头划分
管理网络的文件夹,路径/etc/sysconfig/network-scripts/
查看管理网络的文件内容 ifcfg-ens33 这个就是网卡的配置文件了 确保一个参数是yes ONBOOT=yes #代表机器启动时,就加载ip地址 通过命令重启网卡 systemctl restart network
系统服务管理命令 重启 网络服务
Linux用户权限
超级用户:群主    root  
拥有超级用户权限的人:管理员   sudo  加上你的命令,临时提权的 
渣渣用户:普通成员  linux的普通用户成员
权限的目的:保护文件信息安全的
创建用户
useradd 
更改用户密码
passwd 
root用户就是皇帝,他的皇宫
/root
普通用户,只有一个小破房子,还是统一管理地方/home 
比如有一个kun普通用户,/home/kun
普通用户的信息都存放到了/etc/passwd 临时提权的命令sudo
1.修改sudoers配置文件,把你想提权的用户写进去
编辑配置文件
vim  /etc/sudoers
2.写入如下信息,定位到那一行
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
kun    ALL=(ALL)       ALL   #允许kun在任何地方,执行任何命令 
3.使用sudo命令
sudo 你想执行的命令删除用户
userdel -r 用户名 #删除用户信息,和家目录
http://linux.51yip.com/ Linux 中文手册
pwd 打印当前工作的目录
ls list的意思,查看当前文件夹有哪些
man 手册 ,解释linux的命令如何使用
cd 更改工作目录的命令
mkdir 文件夹的名字 文件夹是蓝色的
rm remove删除命令
mv命令,重命名,移动文件位置
touch 文本名 普通文本是白色的
echo $name #打印出变量的值
ifconfig 查看网卡信息
ip addr show 显示出ip网卡的信息
[root@localhost ~]#
创建Linux普通用户
linux 安装tree命令
Linux的特殊符号含义
~   用户家目录  
-   上一次的工作目录 
.   当前目录
..   上一级目录
./    当前工作目录 
>     重定向覆盖输出符号     w 模式    
>>   重定向追加输出符号     a  追加
<<  重定向追加写入符号    用在mysql数据导入时候more less 用于查看很大的文本,cat读取文件,一次性读取,非常占内存,用于读取小文件
linux复制文件,文件夹
linux下的搜索命令
find   /       -name   heeh.txt #  全局搜索 
find   /etc   -name  heeh.txt  #局部搜索
找出/etc/下所有的txt文本
find   /etc  -name   "*.txt"
找出/etc下所有的python相关的文件信息
find /etc  -name  python* 
找到/etc/下所有的python文件夹
find /etc -type d  -name python*
find /etc  -type f -name python*linux管道符的用法 第一条命令 | 第二条命令
#用在查看linux进程信息
ps -ef  |  grep  python 
netstat -tunlp |grep      3306  #确认mysql是否启动了3306端口
netstat -tunlp |grep   8000   #验证django是否正常启动 过滤字符串命令,过滤文本信息
grep 参数 你要过滤字符串 你要操作的文件
grep -i  "all"  settings.py 
-i 是忽略大小写
-v 是翻转搜索结果
#过滤掉settings.py中无用的信息(空白行,注释行)
grep   -v  "^#"   settings.py   |  grep -v "^$"  从文件的头,尾 开始看
head -5 filename  #看文件的前五行
tail - filename   #看文件的后五行
tail -f  filename  # 实时监测文件信息别名 alias
远程传输命令 —可以在两台Linux之间互相传递文件
#把自己的文件 发送给别人
scp  小姐姐电话.txt  root@192.168.16.41:/tmp/
#把别人的文件夹拿过来
scp -r root@192.168.16.41:/tmp/s19/  ./
#把自己的文件夹,发送给别人 
scp  -r  你的文件夹    用户名@其他人的服务器ip:路径如何统计/var/log/文件夹大小
方式1:
方式2:
du 命令 -h 显示 kb mb gb 单位 -s 显示合计大小
du -sh  /var/log/linux的任务管理器 top
给文件加锁 解锁
chattr + a  文件  # 给文件加锁
lsattr  文件
lsattr   filname  # 显示文件是否有锁linux的时间同步
date 查看当前系统时间
和阿里云的时间服务器同步
ntpdate -u ntp.aliyun.com #和阿里的时间服务器同步 -u 更新
wget命令 在线下载一个资源 wget url地址
关闭linux的防火墙
linux和windows互传文件的软件 lrzsz
yum install lrzsz -y
rz 接受文件(从windows接受文件)
sz 发送文件(发送linux文件给windows)
linux切换用户的命令,普通用户切换超级用户
普通用户执行 su - root #输入root的密码即可
查看linux用户的身份id信息
id kun  #查看用户身份id  
[root@localhost home]# id moyer
uid=1002(moyer) gid=1002(moyer) groups=1002(moyer)
uid 用户id号码
gid   group id  用户组 id
groups  组id号码
系统超级用户 uid  默认是 0
系统常用服务的用户  系统默认会创建mysql用户,去执行mysql这个软件,他的id是从1-999之间
root创建的普通用户,默认id是从1000开始的
用户组 ,一组同样身份信息的用户
用户 ,普通用户linux的文件权限
文件拥有这分三类
属主,属组,其他人
linux文件的分类
-  普通文本
d  文件夹 
l  软连接
文件/文件夹权限
  r    read可读,可以用cat等命令查看
  w    write写入,可以编辑或者删除这个文件
  x    executable    可以执行更改文件权限
chmod  权限   文件/文件夹权限 
 -rw-r--rw-. 1 root root 79 May  5 09:58 你好.txt
 -rw-r--rw-  
 - 普通文本 
 rw-  指的是root用户 可读可写不可执行    users     u  
 r--   指的是root组里的成员,只读         group     g
 rw-   指的是其他人  可读可写,不可执行   others   o  
 #让你好.txt没有任何的权限
 chmod u-r,u-w,u-x  你好.txt 
 chmod g-r,g-w,g-x  你好.txt 
 chmod o-r,o-w,o-x  你好.txt 
 #让你好.txt 所有角色都有所有的权限
 -rwxrwxrwx   你好.txt
 chmod 777  你好.txt  #赋予文本最高的权限
 权限分为
 r 4 
 w 2 
 x 1  
 权限计算最高是 4+2+1 =7  最低是 0更改文件的属主,属组
软连接语法
linux的命令提示符
PS1变量
echo $PS1 #显示命令提示符
修改命令提示符
PS1="[\u@\h \w \t]$"
linux的打包,解压缩的命令
tar命令
  -c  打包
  -x  解包
  -z  调用gzip命令去压缩文件,节省磁盘空间
  -v  显示打包过程
  语法:
  tar  -cvf  打包文件的名字   你要打包的内容
  #实例:
  #压缩当前的所有内容到alltmp.tar这个文件中,这里不节省磁盘 
  tar  -cvf  压缩文件的名字.tar   ./*
  #解压的方式
  tar  -xvf  压缩文件的名字.tar
  #打包文件,并且压缩文件大小的用法,节省磁盘
  tar  -zcvf  压缩文件的名字.tar.gz  ./*  
  #解压缩
  tar -zxvf  压缩文件的名字.tar.gz  django程序跑起来,如何检测呢?
1.去浏览器检测是否可以访问,192.168.16.30:8000
2.确认django的端口是否启动
netstat -tunlp  | grep 8000
3.确认django的进程是否存在
ps -ef |grep python
杀死进程的命令 kill 进程id
支持正则的kill命令 (慎用,,) pkill 进程的名字
显示磁盘空间 df -h
什么是dns(域名解析系统),其实就是一个超大的网络电话簿
dns就是域名解析到ip的一个过程,
大型公司,用的dns服务名叫做 bind软件
提供dns服务的公司有
119.29.29.29 腾讯的
223.5.5.5 阿里的
223.6.6.6 阿里的
8.8.8.8 谷歌的
114.114.114.114 114公司的
linux的dns配置文件如下
vim /etc/resolv.conf
里面定义了dns服务器地址
linux解析dns的命令
nslookup 域名
Linux的定时任务
分 时  日  月 周 
*   *   *  *  *   命令的绝对路径
#每月的1,10,22日的下午4:45重启nginx
分     时  日  月 周 
*   *   *  *  *   命令的绝对路径
45   16  1,10,22  *  *  /usr/bin/systemctl restart nginxlinux的软件包格式是rpm格式的
安装软件的方式(了解即可)
  1.yum安装 如同pip(自动搜索你想要的软件包,以及它的依赖关系,自动解决下载)
  2.源代码编译安装 
  3.手动安装rpm包(需要手动解决依赖关系,很恶心,不用)
rpm命令的使用方式:
安装软件的命令格式                rpm -ivh filename.rpm     # i表示安装   v显示详细过程  h以进度条显示
升级软件的命令格式                rpm -Uvh filename.rpm
卸载软件的命令格式                rpm -e filename.rpm
查询软件描述信息的命令格式         rpm -qpi filename.rpm
列出软件文件信息的命令格式         rpm -qpl filename.rpm
查询文件属于哪个 RPM 的命令格式   rpm -qf filenameLinux运行重启服务的命令
1.如果是centos6就是
service nginx start
2.如果是centos7 就是
systemctl  start/stop/restart  nginx
更改主机名的命令
hostnamectl set-hostname 你想要的主机名 #重新登录回话后生效
linux安装软件的方式
1.yum安装,最省心的
2.rpm包安装,需要手动解决依赖关系,很恶心
3.源代码编译安装(公司都用这种方式),可以自定义软件版本,以及功能扩展
编译安装python3步骤
1.下载python3的源代码
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
2.解压缩源代码
tar -xf  Python-3.6.2.tgz 
tar 是压缩解压的命令
-x  是解压参数
-f  指定一个压缩文件的名字
3.必须解决编译安装所需的软件依赖,比如操作系统的gcc工具....
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
4.解决了软件依赖关系,就可以编译安装啦
5.进入python3的源代码目录,开始编译三部曲
  1.第一曲,释放makefile,释放编译文件 
  cd Python-3.6.2/ 
  ./configure  --prefix=/opt/python362/   #告诉编译器,python3安装到哪里
      --prefix 就是制定安装路的
  2.编译第二曲 ,执行make指令,开始编译 ,编译完成后进行安装 make install 
  make && make install 
  3.编译第三曲,配置python36的环境变量
      echo $PATH
  #永久生效环境变量,需要写入到linux  全局变量配置文件中 /etc/profile 
  vim  /etc/profile   
  #在最底行,写入如下配置即可
      PATH="/opt/python362/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
  #然后读取配置文件生效
      source /etc/profile  1.备份默认的yum仓库
    linux的yum仓库地址:/etc/yum.repos.d/xx.repo 
    在这个目录的第一层文件夹下,名字以*.repo结尾的都会别识别为yum仓库 
    cd /etc/yum.repos.d  
    mkdir backrepo
    mv * ./backrepo  
2.找到阿里的镜像站
https://opsx.alibaba.com/mirror
3.通过命令,在线下载yum仓库源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    下载第二个源,epel源,你想要的很多工具都在这
    #在线下载repo仓库文件,并且重命名,放到/etc/yum.repos.d/这个目录下
    -O 就是 改名,且指定位置
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
4.测试安装mariadb数据库(其实就是mysql)
    yum install mariadb-server mariadb -y  #安装数据库
5.启动数据库
    systemctl start mariadb  
6.可以测试访问mysql数据库了
    mysql -uroot -p 
nginx+ uwsgi + django + 虚拟环境 + supervisor + mariadb
django自带了socket服务端吗?wsgiref这个是python自带的socket模块,django默认用的是wsgiref的单机socket模块
Python manage.py runserver 这是调试命令,测试django是否有问题的
最终上线 是 uwsgi + django 的方式,
为什么要用nginx结合uwsgi
1.nginx支持静态文件处理性能更好,django uwsgi,默认不支持静态文件解析
2.nginx的负载均衡特性,让网站并发性更高
3.并且反向代理特性,用户访问 80,即可访问到8000的应用
4.uwsgi支持多进程的方式,启动django,性能更高
5.nginx转发请求给uwsgi ,应该用 uwsgI_pass ,实现了uwsgi协议的请求转发
如果出现错误,
python app application not found
就是你的uwsgi 没找到 wsgi.py 这个文件对象 application = get_wsgi_application()
配置步骤:
1.nginx + uwsgi + 虚拟环境 + mysql + supervisor
环境准备,准备一台linux
192.168.16.37 ,
第一步,先准备后端代码 crm
第二步:安装python3解释器,以及虚拟环境工具virtualenvwrapper
第三部,学习uwsgi命令,通过uwsgi启动ocrm
1.激活虚拟环境在虚拟环境下,安装所需的模块
安装如下内容即可
(crm) [root@nginx1 crm]# cat requirements.txt
Django==1.11.20
django-multiselectfield==0.1.8
PyMySQL==0.9.3
pytz==2019.1
2.安装这个文件
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
3.安装uwsgi命令
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple  uwsgi
4.学习uwsgi启动ob_crm的命令
uwsgi --http  :8088 --module mysite.wsgi --py-autoreload=1 
    --http  指定用http协议 
    :8088  指定ob_crm启动的端口
    --module   指定django的wsgi.py的文件地址
        指定你的django项目第二层的目录名,下面的wsgi.py
    --py-autoreload=1     开启uwsgi的热加载功能
所以咱们用的命令应该是如下:
    1.必须进入项目目录 
        cd /opt/teaching_plan/ob_crm
    2.使用命令启动ob_crm (uwsgi不解析django的静态文件)
        uwsgi --http  :8088 --module ob_crm.wsgi
    3.让你的项目支持热加载
        uwsgi --http  :8088 --module ob_crm.wsgi  --py-autoreload=1
?
由于uwsgi的启动参数过多,我们互选择配置文件的方式,启动项目
uwsgi.ini 这个文件的名字,可以手动创建的
1.创建uwsgi.ini文件,写入如下参数
touch uwsgi.ini 
写入如下内容,根据你自己的项目目录路径来更改
    [uwsgi]
    # the base directory (full path)
    #填写你项目的绝对路径,第一层
    chdir           = /opt/teaching_plan/ob_crm/
    #找到django的那个wsgi.py文件
    #根据上面一条参数,的相对路径来写
    module          = ob_crm.wsgi
    #虚拟环境的绝对路径
    home            = /root/Envs/ob_crm
    master          = true
    #根据你的cpu核数来定义这个参数,启动多少个进程
    processes       = 4
    # the socket (use the full path to be safe
    #指定你的django启动在什么地址上,并且是什么协议
    #如果你用了nginx,进行反向代理,请用socket参数
    #如果你用了nginx,进行反向代理,请用socket参数
    #如果你用了nginx,进行反向代理,请用socket参数
    socket          = 0.0.0.0:8000
    #如果你没用nginx反向代理,想要直接访问django用这个参数
    #如果你没用nginx反向代理,想要直接访问django用这个参数
    #http = 0.0.0.0:8000
    vacuum          = true
    py-autoreload    =   1
    ~                            
2.通过配置文件启动项目
uwsgi --ini  uwsgi.ini 
3.收集django的所有静态文件,统一管理,丢给nginx去解析
    1.修改django的settings.py,写入如下参数
        STATIC_ROOT='/opt/s19static'
        STATIC_URL = '/static/'
        STATICFILES_DIRS = [
                os.path.join(BASE_DIR, 'static')
        ]
    2.执行命令,收集静态文件
        python3 manage.py collectstatic
nginx配置来了!!!
1.nginx的反向代理功能
2.nginx解析静态文件的功能
# 返回反向代理
location / {
uwsgi_pass 127.0.0.1:8000;
include uwsgi_params;
}
location /static {
    alias /opt/s19static;
}
进程管理工具supervisor的使用
退出虚拟环境,在物理环境下安装
退出虚拟环境,在物理环境下安装
退出虚拟环境,在物理环境下安装
1.安装supervisor,通过pip直接安装
pip3 install supervisor
2.生成supervisor的配置文件
echo_supervisord_conf > /etc/supervisor.conf
3.修改配置,写入你管理ob_crm的命令参数
vim /etc/supervisor.conf #直接进入最底行,写任务
[program:s19_ob_crm]
command=/root/Envs/ob_crm/bin/uwsgi --ini /opt/teaching_plan/ob_crm/uwsgi.ini
stopasgroup=true
killasgroup=true
4.通过命令,启动supervisor,同时启动ob_crm
[root@nginx1 conf]# supervisor
supervisorctl 这是管理命令
supervisord 这个是服务端命令
supervisord -c /etc/supervisor.conf
[root@nginx1 conf]# supervisorctl -c /etc/supervisor.conf
s19_ob_crm RUNNING pid 10483, uptime 0:00:36
supervisor>
supervisor> stop s19_ob_crm
s19_ob_crm: stopped
supervisor> status
s19_ob_crm STOPPED May 08 12:23 PM
supervisor> stop all
s19_ob_crm STOPPED May 08 12:23 PM
supervisor> start all
s19_ob_crm RUNNING May 08 12:23 PM
1.python的虚拟环境,用于解决python环境依赖冲突的问题,仅仅是多个解释器的分身,多个解释器的复制,和操作系统无关
2.python虚拟环境的工具有很多 ,有virtualenv,pipenv ,pyenv
3.virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。
    1.下载安装
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
    2.安装完毕,就可以使用virtualenv命令,创建虚拟环境去使用了
    #这个命令,在哪敲,就会在哪生成venv文件夹
    virtualenv --no-site-packages --python=python3  venv   #得到独立第三方包的环境,并且指定解释器是python3
        #参数解释
         --no-site-packages   #这个参数用于构建,干净的环境,没有任何的第三方包
         --python=python3   #指定虚拟环境的本体,是python的哪一个版本 
         venv 就是一个虚拟环境的文件夹,是虚拟python解释器
    3.创建完毕venv虚拟环境,就可以激活使用了
        进入venv/bin目录下
        source  activate    #source是读取指令,读取这个activate脚本中的内容,激活虚拟环境
    4.验证虚拟环境是否正确
        which pip3 
        which python3  都来自于venv路径,就是对了 
    5.使用虚拟环境,分别构建django1 和django2的平台
        注意,开启2个linux窗口
        注意,开启2个linux窗口
        注意,开启2个linux窗口
        步骤1:分别下载两个venv1 venv2,用于运行不同的django
        virtualenv --no-site-packages --python=python3  venv1
        virtualenv --no-site-packages --python=python3  venv2 
        步骤2:这2个虚拟环境,都得单独的激活去使用
        source venv1/bin/activate #激活虚拟环境
        pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==2.0.1  #下载django模块
        deactivate  #退出虚拟环境 
        source  venv2/bin/activate 
        pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.20 #下载django 
        deactivate  #退出虚拟环境 
1.导出本地python环境的所有模块
pip3 freeze > requirements.txt
2.将这个依赖文件,发送给服务器linux
requirements.txt
3.服务器linux上,构建虚拟环境,安装这个文件,即可
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow
1.安装 
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple  virtualenvwrapper
2.配置环境变量,每次开机都加载virtualenvwrapper这个工具,注意配置的是个人环境变量配置文件
vim ~/.bash_profile   #打开文件
#写入如下环境变量 export也是一个读取指令,让变量生效的
export WORKON_HOME=~/Envs   #设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python362/bin/python3    #指定python解释器,虚拟环境以谁去分身
source /opt/python362/bin/virtualenvwrapper.sh                 #执行virtualenvwrapper安装脚本
3.此时退出linux终端回话,重新登录,让virtualenvwrapper工具生效
4.学习virtualenvwrapper他的命令,管理虚拟环境
mkvirtualenv  虚拟环境的名字  #创建虚拟环境,存放目录是统一管理的
workon  虚拟环境的名字  #可以在任意目录直接激活虚拟环境
rmvirtualenv  虚拟环境的名字  #删除虚拟环境
lsvirtualenv  列出所有的虚拟环境
cdvirtualenv   进入虚拟环境的目录
cdsitepackages  进入虚拟环境的第三方包
Nginx 就是一个 web server
静态网站 ,静态虚拟主机的作用
就是不变化的网页,静态的html,css js等页面,以及jpg gif mp4等静态资源
有一些草根站长,放一些小说,图片等等...
动态网站
指的是,可以与数据库打交道,数据交互的网页,网页内容根据数据库的数据变化
登录功能,有注册功能的...
并且有编程语言支持的
nginx的并发性非常强悍 轻松支持十万+并发连接数 tenginx
常见web服务器有哪些
windows下 IIS服务器
linux下的web服务器 nginx apache lighthttp
web服务器
nginx 这样的软件
web服务器它自己不支持编程,仅仅是页面返回,nginx + lua
web框架的概念
django flask tornado这样的 web逻辑框架
支持程序员自己写代码,进行逻辑处理
nginx是web服务器、反向代理服务器、邮件代理服务器,负载均衡等等,支持高并发的一款web服务器
安装:
# 注意点,删除之前yum安装的nginx
yum remove nginx -y #卸载yum安装的nginx
  选择源码编译安装
  注意,解决源码编译安装nginx所需的软件依赖,重要的事说三遍
  注意,解决源码编译安装nginx所需的软件依赖,重要的事说三遍
  注意,解决源码编译安装nginx所需的软件依赖,重要的事说三遍
  执行它 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  执行它 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  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 openssl openssl-devel -y
  1.下载淘宝nginx的源代码包
  wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz
  2.解压缩源码包
  tar -zxvf tengine-2.3.0.tar.gz 
  3.进入源码目录开始编译安装
      cd  tengine-2.3.0
      编译安装三部曲
      ./configure --prefix=/opt/tngx230/
      make && make install 
  4.配置淘宝nginx的环境变量,写入/etc/profile
      如下内容
      PATH="/opt/python362/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tngx230/sbin"
      读取/etc/profile 
      source /etc/profile 
  5.启动nginx 
      直接输入nginx 指令,默认代表启动,不得再执行第二次
      nginx  
      nginx -s reload  #平滑重启nginx,不重启nginx,仅仅是重新读取nginx配置文件
      nginx -s stop  #停止nginx进程
      nginx -t  #检测nginx.conf的语法[root@localhost tngx230]# pwd
/opt/tngx230
[root@localhost tngx230]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
#解释目录
conf  存放nginx配置文件的
html  存放前端文件目录  ,首页文件就在这里
logs  存放nginx运行日志,错误日志的
sbin  存放nginx执行脚本的
修改index.html文件内容,即可看到新的页面内容
/opt/tngx230/html就是 nginx的网页根目录,放入任意的文件内容都可以被解析到
例如下载一张图片
cd /opt/tngx230/html
wget http://img.doutula.com/production/uploads/image/2019/05/07/20190507183856_lfUSFG.jpg
mv 20190507183856_lfUSFG.jpg xiaomaomi.jpg
此时可以访问 192.168.16.37/xiaomaomi.jpg
#全局变量写在最外层
    worker_processes  4;
    events {
        worker_connections  1024;
    }
    #定义nginx核心功能的参数
    http {
        include       mime.types;
        default_type  application/octet-stream;
        #定义nginx访问日志格式的
        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;
        #对图片等静态资源压缩,提升传输效率
        gzip  on;
        #nginx的主页面功能都是server参数提供的
        #server被称作是虚拟主机
        server {
            #nginx监听的端口
            listen       80;
            #填写服务器的域名,或者ip,或者localhost
            server_name  localhost;
            #路径匹配,当你的请求来自于 192.168.16.37/    这样的url的时候,就进入以下的location路径匹配
            location / {
                #root参数,定义网页根目录的,nginx目录下的html,可以自由更改
                root   html;
                #指定首页文件的名字的
                index  index.html;
            }
            #错误页面 
            #当请求返回404错误码的时候,就给用户看到一个页面
            #这个404.html放在网页根目录下
            error_page    404              /404.html;
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
就是打开nginx.conf里面的 如下参数
error_page 404 /404.html;
打开如下功能参数 nginx.conf 
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;
就是在nginx.conf中 找到location 参数,写入如下信息
location / {
                deny 你想禁止的ip地址;
                deny  你也可以禁止一整个ip地址段;
                deny  192.168.16.0/24;   /24子网掩码地址  255.255.255.0
                #root参数,定义网页根目录的,nginx目录下的html,可以自由更改
                root   html;
                #指定首页文件的名字的
                index  index.html;
            }
在nginx.conf下打开一个参数即可
    #当你的请求 来自于 192.168.16.37/status ,就进入如下的代码块
    location /status {
    #开启nginx状态功能
                 stub_status on;
    }       
使用linux的压测命令 ,给nginx发送大量的请求
ab命令
安装方式
yum -y install httpd-tools 
-n requests #执行的请求数,即一共发起多少请求。
-c concurrency #请求并发数。
-k #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。
url必须格式如下
ab -kc 1000 -n 100000 http://192.168.16.37/ 
在一台服务器上,运行多个网站页面
基于多域名的虚拟主机实现,其实就是多个server标签
环境准备,1个Linux服务器,192.168.16.30
2个域名,我们是写入hosts文件,强制解析的假域名
www.dnf.com www.riju.com
安装好nginx软件,
配置方式如下
    1.服务器准备好了,nginx也安装好了
    2.在windows中写入hosts假的域名
        找到如下文件,编辑写入域名对应关系
        C:\Windows\System32\drivers\etc\hosts 
    192.168.16.37  www.dnf.com 
    192.168.16.37  www.riju.com 
3.修给nginx.conf的配置,实现多虚拟主机,多个server{}标签是同级的关系
    #第一个虚拟主机,dnf网址
    server {
        listen       80;
        server_name  www.dnf.com;
        location / {
        root   /opt/dnf/; 
        index  index.html index.htm;
        }
    }
    #第二个虚拟主机,日剧的页面
    server {
        listen 80;
        server_name www.riju.com;
        location / {
        root  /opt/riju/;
        index  index.html;
        }
    }
4.准备2个网站的文件夹,以及页面文件
/opt/dnf/index.html 
/opt/riju/index.html 
5.重启nginx
nginx -s reload 
6.访问2个虚拟主机的页面,在windows浏览器中访问
www.dnf.com 
www.riju.com 
1.见过生活中的代理
客户端(请求资源)  ->   代理(转发资源) ->  服务端(提供资源)
                    
房屋的中介,就是个代理
我们老百姓就是客户端,中介是代理,房东就是服务端提供资源的
买票,找到黄牛,黄牛提供12306的车票
代购 
我们买东西, 找到代购,代购就可以提供我们想要的资源
2.客户端和 nginx 和 django 的关系
配置nginx实现反向代理的步骤:
环境准备2台机器,
192.168.16.37 充当资源服务器,提供一个页面
1.提供了一个dnf的页面
192.168.16.140 充当代理服务器的角色 (也是安装nginx,转发请求,反向代理的功能也是nginx提供的)
1.安装好nginx
2.修改如下配置 nginx.conf
#当你的请求来自于192.168.16.140/ 这样的url时,就进入如下location路径匹配
location / {
#当请求进来这个路径匹配,这个nginx代理角色,直接转发给资源服务器
proxy_pass 192.168.16.37;
}
3.测试访问反向代理的页面
访问 192.168.16.140即可看到192.168.16.37的页面了
nginx实现负载均衡的配置,动静分离的效果
1.环境准备,准备三台机器
192.168.16.37 资源服务器
192.168.16.140 资源服务器
192.168.16.241 充当代理服务器作用,以及负载均衡的作用
2.分别配置三台机器
192.168.16.37  资源服务器  提供dnf的页面 
192.168.16.140  资源服务器 ,提供小猫咪的页面 
(讲道理,应该是和192.168.16.37一样的代码配置,一样的页面)
192.168.16.241  负载均衡的配置
    nginx.conf修改为如下的配置
    1.添加负载均衡池,写入web服务器的地址
     upstream  mydjango  {
        #负载均衡的方式,默认是轮训,1s一次
        #还有其他的负载均衡的规则
        server  192.168.16.37 ;  
        server 192.168.16.140 ;
}
负载均衡的规则
调度算法      概述
轮询        按时间顺序逐一分配到不同的后端服务器(默认)
weight       加权轮询,weight值越大,分配到的访问几率越高,最常用的方式,
ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash      按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn    最少链接数,那个机器链接数少就分发
1.轮询(不做配置,默认轮询)
2.weight权重(优先级)
3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用
3.负载均衡的配置方式第二步骤
location / {
proxy_pass http://mydjango;
}
4.动静分离的配置
1.配置动态请求的服务器
192.168.16.140 充当静态服务器,返回小猫咪的页面,以及一些图片资源
需要安装nginx即可
nginx.conf配置文件如下
#当所有请求来自于 192.168.16.140/时,就进入如下路径匹配,返回小猫咪页面
location / {
root html;
index index.html index.htm;
}
#当请求是192.168.16.140/**.jpg 就进入如下location匹配,返回/opt/images/目录下的内容
location ~* .*.(png|jpg|gif)$ {
root /opt/images/;
}
2.配置静态请求的服务器
192.168.16.37 运行django页面 
安装nginx,以及django动态页面
    1.先后台运行django页面
    python3 nginx_django/manage.py runserver 0.0.0.0:8000 & 
    2.修改nginx的配置,可以转发,动静的请求
                    upstream mydjango {
                        server 192.168.16.37:8000;
                    }
                upstream mystatic {
                    server 192.168.16.140;
                }
                
                server {
                    listen       80;
                    server_name  192.168.16.37;
                    #当外部请求,是192.168.16.37:80时候,就进入如下location,返回django页面,反向
            代理
                    location / {
                            proxy_pass http://mydjango;
                    }
                    #当外部请求时,192.168.16.37:80/**.jpg,就转发给那台静态资源服务器,去处理
                     location ~ .*\.(png|jpg|gif)$ {
                            proxy_pass http://mystatic;
                }
            }
3.在负载均衡器上,配置请求转发
192.168.16.241  配置负载均衡,动静分离
    1.定义一个upstrem地址池,进行请求分发定义
         upstream  myserver  {
                    server  192.168.16.37;
                    server 192.168.16.140;
        }
    
    2.通过location进行请求分发的操作
      location / {
            proxy_pass http://myserver;
        }
数据库主从复制
如果选择的是阿里云的yum仓库,安装命令如下
yum install mariadb-server mariadb -y
如果你要选择最新的mariadb软件,请配置官方的yum源 
安装命令如下
    yum install MariaDB-server MariaDB-client  
2.安装好mysql之后,就可以启动使用了,注意要先初始化数据库
执行这个初始化命令
    mysql_secure_installation
3.学习mysql的授权命令
允许mysql服务端,可以远程连接的命令
grant all privileges on *.* to root@'%' identified by 'centos'; #允许root用户在任意的主机地址都可以登录mysql服务端
flush privileges; #立即刷新权限表  
4.客户端远程登录服务端的命令
mysql -uroot -p   -h 主机的ip
5.mysql的备份与恢复
备份命令
mysqldump -u root -p --all-databases > /opt/alldb.sql 
--all-databases  导出所有的数据库数据表
#指定数据库导出
mysqldump -u root -p -B ob_crm > /opt/crm.sql  
#指定单独的数据库中的一张表导出
恢复数据,导入的命令:
方式1:
mysql -uroot -p  < /opt/alldb.sql  
方式2:
登录mysql之后,source读取db文件
MariaDB [test]> source /opt/alldb.sql;
mysql主从同步的配置
1.环境准备,准备2台linux,分别安装好mariadb数据库
2.先从master主库开始配置
    1.停止数据库服务
    systemctl stop mariadb
2.修改mysql配置文件,支持binlog日志
server-id=1
log-bin=s19-bin-log 
3.重启mysql数据库,让binlog日志文件生效
systemctl restart mariadb 
4.创建一个用户,用于主从同步
create user 's19'@'%' identified by 'centos';
5.给这个账号授予复制的权限
grant replication slave on *.* to 's19'@'%';
6.导出当前的数据库,发送给从库,保证数据一致
mysqldump -uroot -p --all-databases > /opt/mydb.sql  
从库配置如下:
1.修改mysql配置文件,加上身份id ,vim  /etc/my.cnf 
[mysqld]
server-id=10
read-only=true
2.重启从库的mysql
systemctl restart mariadb 
3.从库导入主库的数据,保证起点一致性
4.配置主从同步的关键参数
mysql > change master to master_host='192.168.16.37',
master_user='s19',
master_password='centos',
master_log_file='s19-bin-log.000001',
master_log_pos=583;
5.开启主从同步
start slave;
6.查看主从同步的状态
show slave status\G
7.去主库写入数据,查看从库的实时数据同步
mysql忘记密码怎么办:
1.修改配置文件,添加跳过授权表的参数
    vim /etc/my.cnf 
    添加参数
    [mysqld]
    skip-grant-tables
2.用命令修改mysql的root密码
    use mysql;
    #更新root的密码
    update user set authentication_string=password("centos") where host="localhost" and user="root";
    #刷新权限表
    flush privileges; 
3.修改mysql的中文支持
查看数据库的编码
MariaDB [(none)]> \s
show create database douyin;  #查看如何创建的数据库
show create table  s19;  #查看如何创建的表
desc s19;  #查看表结构
4.修改mysql的服务端编码,让它支持中文
修改mysql的配置文件
vim /etc/my.cnf 
修改为如下配置
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
5.修改数据库,表的字符集方式
alter database douyin default character set="utf8";
alter table xiu convert to character set "utf8";
flush privileges;
标签:强制 生命周期 linux中 RoCE 相对路径 临时文件 库文件 管理网络 顺序
原文地址:https://www.cnblogs.com/martin-yz/p/11166963.html