标签:强制 生命周期 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 nginx
linux的软件包格式是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 filename
Linux运行重启服务的命令
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