Linux yum的配置 , python环境管理, nginx搭建简单学习
一丶配置yum的数据仓库
### yum 工具, 方便,自行解决软件之间的依赖关系.
# 配置yum源仓库 (可以使用,清华源,阿里源)
# 1.配置第一个仓库,里面有大量系统常用软件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 2.还得配置第二个仓库,携带大量第三方软件(nginx,redis,mongodb,mairadb等)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# yum仓库的目录
cd /etc/yum.repos.d # 在这个目录第一层的repo文件就会被识别问yum软件仓库
# 清空yum缓存 ,即清空centos官方的yum软件缓存
yum clean al
# 生成新的阿里云的yum缓存
yum makecache
二丶centos下安装py3
# 1.必须解决编译所需的基础开发环境
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.下载python3的编代码包
解压缩
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz
# 解决 xz锁
xz -d Python-3.6.7.tar.xz
# tar包解压缩
tar -xf Python-3.6.7.tar
# 3.进入解压缩生成的源码文件夹
cd Python-3.6.7
# 4.执行编译三部曲的命令
# 第一曲:找到一个[配置的可执行文件,configure],执行它,且指定软件安装位置
./configure --prefix=/opt/python367/
# 第二曲:在上一步,会生成一个makefile,编译安装,在linux下必须用gcc工具去编译,使用的命令时make
make
# 第三曲:这一步是执行安装,会生成一个/opt/python367文件夹,可用的解释器都在这里了
make install
# 4 .配置环境变量,便于快捷使用python3
# 1.先获取当前的PATH变量,然后把python3的bin目录加进去
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
# 2.永久修改PATH的值
# -第一个是软连接
ln -s 当前软件的可执行文件路径 /usr/local/sbin
# -直接修改/etc/profile ,系统全局的配置文件,每个用户在登陆系统的时候,都会加载这个文件
vim /etc/profile
# 写入新的PATH变量 PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin"
# 5.还得重新登陆,或者手动读取这个/etc/profile
source /etc/profile #让这个文件中的变量生效
三丶虚拟环境virtualenv 和 virtualenvwrapper管理工具
### virtualenv虚拟模块使用
# 1. 下载 虚拟环境模块 , virtualenv是一个python模块
pip3 install -i https://pypi.douban.com/simple virtualenv
# 2.用命令创建一个虚拟环境 venv_django2
# 固定写法 # 指定python编译器 # 虚拟环境名称
virtualenv --no-site-packages --python=/opt/python367/bin/python3.6 venv_django2
# --no-site-packages 创建的新的venv,不携带任何模块,是个纯洁的python解释器环境
# --python 指定以哪个解释器为本体,创建新的虚拟环境
# 3. 激活虚拟环境,系统会将venv的解释器目录,加到PATH的最前面
# 进入到 venv_django2 下bin目录 source activate
source activate
# 注意: 在激活虚拟环境的时候,注意检查下,命令和解释器是否来自于虚拟环境里面
# 4. 退出虚拟环境 执行 deactivate
deactivate 即可退出虚拟环境
# 虚拟环境的意义:
同时可运行不同版本, 不同包,模块的python项目.
### virtualenvwrapper的使用 ,升级版的虚拟环境工具.
# 1.安装 ,不要激活虚拟环境
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
# 2.修改配置文件,每次开机就加载 virtualenvwrapper 这个工具
# 1.打开一个用户个人的环境变量配置文件
全局配置文件 /etc/profile #每个用户登陆都生效
用户个人配置文件 ~/.bash_profile
vim ~/.bash_profile #root在登陆的时候,会读取这个文件中的代码
# 2.填入如下信息,针对你自己的python环境修改
export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python367/bin/python3.6 #指定python解释器
source /opt/python367/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
# 3.此时可以使用这个工具,快捷的创建虚拟环境
mkvirtualenv 虚拟环境名 #创建虚拟环境
lsvirtualenv #列出虚拟环境的名字
workon 虚拟环境名字 #激活或切换虚拟环境
lssitepackages #列出虚拟环境中的模块信息,其实就是
cdvirtualenv #进入虚拟环境家目录
cdsitepackages #进入虚拟环境第三方模块目录
# 总结:
# 工具会在/root下创建一个Envs虚拟环境管理文件夹,同时管理多个虚拟环境,便于虚拟环境之间的切换,解决了虚拟环境模块的问题.
四丶Nginx的学习
### Nginx 是一个优秀的web服务器,也是反向代理和负载均衡的服务器
# 1. 安装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
# 2.下载源代码
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
# 3. 解压
tar -zxvf tengine-2.3.2.tar.gz
# 4.进入源代码目录,指定安装路径,开始编译
./configure --preifx=/opt/tngx232/
make && make install
# 5. 配置Nginx的环境变量
vim /etc/profile #填入新的PATH
PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/opt/tngx232/sbin"
# 6.手动读取文件生效
source /etc/profile
Nginx的目录
[root@s23_linux tngx232]# pwd
/opt/tngx232
[root@s23_linux tngx232]# ls
conf 存放nginx.conf配置文件的
html 存放静态文件的地方
logs 存放nginx各种日志的
sbin 存放nginx可执行命令的地儿
# yum remove nginx -y 卸载Nginx
Nginx的常用指令
nginx -s reload #平滑重启nginx,不重启nginx,重新读取配置文件,立即生效
nginx -s stop #停止nginx
nginx #启动nginx
nginx -t #检测nginx.conf的语法是否正确
部署一个web站点
[root@s23_linux html]# pwd
/opt/tngx232/html
[root@s23_linux html]# ls
50x.html 55kai.jpg duige.html index.html test.mp4
修改nginx.conf配置文件
# 都是 以键值对的形式存在 的配置信息
server {
#nginx监听的端口
listen 85;
#定义网站的域名
server_name localhost;
# 设置字符
#charset koi8-r;
#nginx的url匹配 , /这个斜杠就代表这样的请求: 192.168.13.117:85/
#这个是最低级匹配,所有的请求都会进入location,进行处理
location / {
#root参数用于定义网页根目录,可以写绝对或者相对路径
#root html;
root /opt/s23html;
#index参数定义网页的首页文件名字
index index.html index.htm;
}
# 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 额外: dns客户端配置文件
vim /etc/resolv.conf
nameserver 119.29.29.29 #nameserver填写值是 公网的dns服务器
8.8.8.8 谷歌的公网dns
114.114.114.114
223.5.5.5
223.6.6.6 #阿里巴巴的dns服务
119.29.29.29 #腾讯的dns服务器
多虚拟主机功能
### 基于域名的多虚拟主机, hosts文件 配置 ,和本地dns解析
# 1.第一步,在nginx.conf中配置俩server{}
# netstat -tunple 查看端口
# nginx.conf配置文件:
# 多个域名服务
server {
#nginx监听的地址 80
listen 80;
#定义网站的域名,需要到hosts中写死的,假的域名
server_name www.s23lol.com;
#charset koi8-r;
#nginx的url匹配 , /这个斜杠就代表这样的请求: 192.168.13.117:85/
#这个是最低级匹配,所有的请求都会进入location,进行处理
location / {
#root参数用于定义网页根目录,可以写绝对或者相对路径
#当请求时 www.s23lol.com的时候,就去/opt/s23lol文件夹中寻找资料
root /opt/s23lol;
#index参数定义网页的首页文件名字
index index.html index.htm;
}
}
server {
listen 80;
server_name www.s23hanju.com;
#进行路径匹配,当请求时 www.s23hanju.com:80/斜杠的时候,就进入这个匹配
location / {
#定义网页根目录
root /opt/s23hanju;
index index.html;
}
}
# 2 .分别创建/opt/s23lol 和/opt/s23hanju的文件夹,且创建资料
1.2 在windows下修改hosts文件,填入以下内容
C:\Windows\System32\drivers\etc\hosts
192.168.13.xx www.s23hanju.com
192.168.13.xx www.s23lol.com
### 基于端口的多虚拟主机
server {
#nginx监听的地址 80
listen 80;
#定义网站的域名,需要到hosts中写死的,假的域名
server_name www.s23lol.com;
#charset koi8-r;
#nginx的url匹配 , /这个斜杠就代表这样的请求: 192.168.13.117:85/
#这个是最低级匹配,所有的请求都会进入location,进行处理
location / {
#root参数用于定义网页根目录,可以写绝对或者相对路径
#当请求时 www.s23lol.com的时候,就去/opt/s23lol文件夹中寻找资料
root /opt/s23lol;
#index参数定义网页的首页文件名字
index index.html index.htm;
}
}
server {
listen 81;
server_name www.s23meiju.com;
#进行路径匹配,当请求时 www.s23hanju.com:80/斜杠的时候,就进入这个匹配
location / {
#定义网页根目录
root /opt/s23meiju;
index index.html;
}
}
优化nginx的 404界面
error_page 400 403 404 405 /404.html;
nginx的访问日志功能检测用户的来源ip,访问时间,客户端地址信息
http {
include mime.types;
default_type application/octet-stream;
#日志格式
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;
access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;
....
}