Linux之 nginx-redis-virtualenv-mysql

时间:2023-03-10 00:33:47
Linux之 nginx-redis-virtualenv-mysql

mysql

maraidb相关

.yum安装好,启动
安装:
yum install mariadb-server mariadb
启动mabiadb:
systemctl start mariadb
停止MariaDB:
systemctl stop mariadb
重启MariaDB:
systemctl restart mariadb
设置开机启动:
systemctl enable mariadb
.初始化mysql
确保mariadb服务器启动后,
systemctl start mariadb
执行命令初始化
mysql_secure_installation
届时会提示
set root password? y
New password:输入要为root管理员设置的数据库密码
Re-enter new password: 再次输入密码 Remove anonymous users? y (删除匿名账户) Disallow root login remotely? n (禁止root管理员从远程登录) Remove test database and access to it ? y(删除test 数据库并取消对它的访问权限) Reload privilege tables now? y (刷新授权表,让初始化后的设定立即生效) .修改mysql密码
MariaDB [(none)]>set password = PASSWORD('redhat123'); .创建mysql用户oldboy,查看oldboy用户信息 oldboy@'%' 代表oldboy用户可以在所有机器上远程登录
oldboy@'127.0.0.1'
mysql -uoldboy -p -h 127.0.0.1
oldboy@'localhost'
mysql -uoldboy -p -h localhost 创建用户:
MariaDB [(none)]>create user yuchao@'127.0.0.1' identified by 'redhat123';
查看oldboy用户信息:
mysql -uyuchao -p -h 127.0.0.1 #进入数据库
MariaDB [(none)]> show databases; .使用oldboy登录mysql
mysql -uoldboy -p .备份数据库,然后测试数据库删除后,恢复导入数据库
第一种备份方法:
mysqldump -u root -p --all-databases > /tmp/all_db.dump #备份数据库数据
进入mariadb数据库,删除一个db:
mysql -uroot -p
MariaDB [(none)]>drop databases s13;
数据恢复:
mysql -uroot -p < /tmp/all_db.dump 导入sql 文件的用法,
.新建一个db
create database s13crm;
use s13crm;
source /tmp/all_db.sql;
show tables;

virtualenv

首先它是python的一个模块,因此可以通过pip3 安装好后,默认会添加在环境变量中,可以直接使用命令

.pip安装好virtualenv
安装
pip3 install virtualenv
创建目录
mkdir Myproject
cd Myproject
创建基于python3的虚拟环境 名字叫做 my_venv_django1.11.15
第一个虚拟环境:
virtualenv --no-site-pacjages --python=python3 venv1 # 安装成python3的解释器, 默认是python2解释器
第二个虚拟环境:
virtualenv --no-site-pacjages --python=python3 venv2 .激活virtualenv
激活第一个虚拟环境:
source venv1/bin/cativate
激活第二个虚拟环境:
source venv2/bin/activate 退出虚拟环境
deactivate .查看环境变量的区别
echo %PATH 查看在path的顶端是否是venv的bin目录 .创建两个虚拟环境,分别安装django1.11.15,django2 ,然后用两个虚拟环境分别启动django项目
.分别在虚拟环境下创建django项目
(venv1)[root@s13linux /home/all_venv ::]#django-admin startproject 项目名
.第二个虚拟环境创建django项目
(venv2)[root@s13linux /home/all_venv ::]#django-admin startproject 项目名
        [django-admin startapp app01 #这是创建app01]
.分别修改django的settings.py文件,允许所有主机的访问
ALLOWED_HOSTS = ['*']
.分别启动django
python3 manage.py runserver 0.0.0.0: python3 manage.py runserver 0.0.0.0:

redis

.编译安装redis,用redis.conf启动
.下载redis源码
第一种方法:
查看是否有 redis包
yum list redis
安装redis
yum install redis -y
安装好后启动redis
systemctl start redis
检测redis是否工作
redis-cli #redis 客户端工具
#进入交互环境后,执行ping,返回pong表示安装成功
127.0.0.1:>ping
PONG
第二种源码安装:
下载redis源码
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
解压缩
tar -zxf redis-4.0..tar.gz
切换至redis源码目录
cd redis-4.0..tar.gz
编译
make
编译好后,src/目录下有编译好的redis指令
make install 安装到指定目录 默认在/usr/local/bin
redis-server redis.conf 启动redis服务
对于redis.conf 配置文件
修改redis端口
port
增加redis登录密码
requirepass redis123
增加后台运行功能
daemonize yes
此时查看redis进程
ps -ef|grep redis redis多实例的概念
redis支持一台服务运行多个redis数据库,也就是多个redis实例
.先启动第一个redis实例
准备好两个redis.conf配置文件,并且复制重命名为
redis-.conf (注意去修改端口6379)
redus-.conf
redis-server redis-.conf
redis-server redis-.conf 检查redis进程
ps -ef|grep redis
[root@s13linux /opt/redis-4.0. ::]$ps -ef|grep redis
root : ? :: redis-server 0.0.0.0:
root : ? :: redis-server 0.0.0.0: 登录redis
./redis-cli 启动redis服务端
启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:
./redis-server ../redis.conf
默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。 .配置redis.conf,设置后台运行redis,redis登录密码,更改redis启动端口 (安全)
protected-mode yes #打开保护模式
port #更改默认启动端口
requirepass xxxxxx #设置redis启动密码,xxxx是自定义的密码 启动redis服务器
redis-server /opt/redis-4.0./redis.conf & #指定配置文件启动redis,且后台启动 .登录redis,验证密码
使用密码登录redis,使用6380端口
[root@oldboy_python ~ ::]#redis-cli -p
127.0.0.1:> auth xxxx
OK 补充:
检查redis是否设置了密码
127.0.0.1:> CONFIG get requirepass
) "requirepass"
) "xxxxxx" 如果没有的话,也可以给redis设置密码(命令方式)
CONFIG set requirepass "xxxxxx" .练习redis数据操作
strings类型: set name "chaoge66" //设置name
get name //读取name strings类型支持数值操作
set age "" //设置key age
get age //读取age
incr age //数值+1,遇见数值操作时,redis会将字符串类型转成数值
get age //此时age是18,value仍然是字符串
type age    //查看键的类型 list类型:
redis的另外一个数据结构叫做lists,中文叫列表
lists常用操作包括
LPUSH 在lists左侧插入一个新元素
RPUSH 在lists右侧插入一个新元素
LRANGE 在lists指定范围提取元素
LPOP 左侧删除
RPOP  右侧删除 示例:
lpush mylist "" //新建一个mylist,在头部插入元素"1"
(integer) //返回mylist元素个数 rpush mylist "" //在mylist右侧插入元素"2" (INTEGER) //返回mylist元素个数 127.0.0.1:> lpush mylist "" //在mylist左侧插入元素"0" (integer) //返回mylist元素个数 //列出mylist中从编号0到编号1的元素 127.0.0.1:> lrange mylist -
) ""
) ""
) "" lists类型常用在,消息队列、实现分页功能、存储文章评论 sets类型:
redis的集合,是一种无序的集合,集合中的元素没有先后顺序。 //向集合myset中加入一个新元素"one"
127.0.0.1:> sadd myset "one"
(integer)
127.0.0.1:> sadd myset "two"
(integer)
//列出集合myset中的所有元素
127.0.0.1:> smembers myset
) "one"
) "two"
//判断元素1是否在集合myset中,返回1表示存在
127.0.0.1:> sismember myset "one"
(integer)
//判断元素3是否在集合myset中,返回0表示不存在
127.0.0.1:> sismember myset "three"
(integer)
//新建一个新的集合yourset
127.0.0.1:> sadd yourset ""
(integer)
127.0.0.1:> sadd yourset ""
(integer)
127.0.0.1:> smembers yourset
) ""
) ""
//对两个集合求并集
127.0.0.1:> sunion myset yourset
) ""
) "one"
) ""
) "two" 集合的使用比如QQ社交功能中的“好友标签”,朋友给你的好友标签“sb”,“dsb”等等,就可以吧每一个用户的标签存储在集合里 zsets类型:
redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。
有序集合中的每个元素都关联一个序号(score),这便是排序的依据。 127.0.0.1:> zadd myzset baidu.com
(integer)
//向myzset中新增一个元素360.com,赋予它的序号是3
127.0.0.1:> zadd myzset .com
(integer)
//向myzset中新增一个元素google.com,赋予它的序号是2
127.0.0.1:> zadd myzset google.com
(integer)
//列出myzset的所有元素,同时列出其序号,可以看出myzset已经是有序的了。
127.0.0.1:> zrange myzset - with scores
) "baidu.com"
) ""
) "google.com"
) ""
) "360.com"
) ""
//只列出myzset的元素
127.0.0.1:> zrange myzset -
) "baidu.com"
) "google.com"
) "360.com" redis缓存和mysql关系型数据库的区别,应用场景? .咱们以取快递,快递公司和站点 mysql > 快递总公司 把快递总公司的部分物件,提前放到驿站 redis > 快递驿站 把一些数据,提前放到redis缓存中,加速查找,

nginx

面试回答 nginx技巧:

支持高并发,能支持几万并发连接
资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
可以做http反向代理和负载均衡
支持异步网络i/o时间模型epoll

安装启动过程:

.编译安装nginx,启动
,下载源码包:
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
,解压压缩源:
tar -zxvf nginx-1.12..tar.gz
,配置,编译安装:
./configure --prefix=/opt/nginx1-/ --with-http_ssl_module --with-http_stub_status_module make && make install
,启动nginx,进入sbin目录,找到nginx启动命令
cd sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload #重新加载 .部署一个自己的web站点,例如pythonav.cn/xiaobo.gif,可以用本地hosts文件测试域名
.部署一个 my_taobao.com 网站
先在本地搞一个测试域名,就是编辑 hosts哪个文件
hosts文件在C:\Windows\System32\drivers\etc\hosts
10.0.0.10 mytb.com 然后在nginx.conf里面修改配置,如下
server {
listen ;
server_name mytb.com; .首先打开nginx访问日志功能,用于记录网站访问日志,防止一些二货搞你的网站
编辑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;
.网站文件根路径配置 location / {
root html;
index index.html index.htm;
}
.拒绝访问一个功能
location / {
root html;
index index.html index.htm;
deny 你要拒绝的ip;
}
.错误页面的配置
这个40x.html是放在 html文件夹下的 /opt/nginx112/html/网站根路径
error_page /40x.html; .配置文件设置好了之后,检测你的nginx.conf语法是否正确
使用-t参数检测语法是否正确
[root@s13linux /opt/nginx112 ::]$./sbin/nginx -t
nginx: the configuration file /opt/nginx112//conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx112//conf/nginx.conf test is successful .还得启动nginx,修了nginx.conf需要重新启动或者热加载 sbin/nginx 直接敲命令是启动
sbin/nginx -t 检测语法
sbin/nginx -s reload 热加载
sbin/nginx -s stop 关闭nginx .打开access_log功能,测试访问 tail -f access.log (在配置文件里面解掉access_log的注释)
对应参数解析 $remote_addr 记录客户端ip
$remote_user 远程用户,没有就是 “-”
$time_local    对应[/Aug/::: +]
$request     对应请求信息"GET /favicon.ico HTTP/1.1"
$status     状态码
$body_bytes_sent  571字节 请求体的大小
$http_referer  对应“-”  由于是直接输入浏览器就是 -
$http_user_agent  客户端身份信息
$http_x_forwarded_for  记录客户端的来源真实ip 97.64.34.118 .nginx限制一个网站访问,用deny参数
限制ip或ip段访问
location / {
deny 192.168.1.1;
deny 192.168.1.0/;
allow 10.1.1.0/;
}
.nginx错误页面优化
server {
listen ;
server_name www.pythonav.cn;
root html/pythonav;
location /{
index index.html index.htm;
}
      #在pythonav路径下的40x.html错误页面
error_page /40x.html;
} 40x.html :
<img style='width:100%;height:100%;'
src=https://pic1.zhimg.com/80/v2-77a9281a2bebc7a2ea5e02577af266a8_hd.png>

多名nginx虚拟主机 配置:

nginx.conf:

Linux之 nginx-redis-virtualenv-mysql

Linux之 nginx-redis-virtualenv-mysql

Linux之 nginx-redis-virtualenv-mysql

Linux之 nginx-redis-virtualenv-mysql

Linux之 nginx-redis-virtualenv-mysql

C:\Windows\System32\drivers\etc

Linux之 nginx-redis-virtualenv-mysql

Linux之 nginx-redis-virtualenv-mysql