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:
C:\Windows\System32\drivers\etc
Linux之 nginx-redis-virtualenv-mysql的更多相关文章
- Linux 下 Nginx + JDK + Tomcat + MySQL 安装指南
转载请注明出处:http://blog.csdn.net/smartbetter/article/details/52026342 Nginx 是一款高性能的 http 服务器/反向代理服务器/电子邮 ...
- linux下的python3,virtualenv,Mysql,nginx,redis安装配置
Mysql安装和使用:点我 Redis安装和使用:点我 centos7安装Python3以及tab补全键的使用:点我 Linux下的virtualenv:点我 nginx的安装和使用:点我
- Linux搭建nginx+php/php-fpm+mysql环境
百度内部php框架odp有单独的nginx+php/php-fpm环境,但为了更好的实践,自己搭建一套单独的. 1.首先安装nginx 两种方式: 1)yum源安装(使用root权限)yum inst ...
- LINUX学习-Nginx+JDK+Tomcat+Mysql搭建JAVA WEB
一.安装JDK环境 1.先到 https://www.oracle.com/java/technologies/javase-jdk8-downloads.html 下载linux jdk-8u2 ...
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...
- CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
转载自:https://linux.cn/article-4314-1.html 编译自:http://xmodulo.com/install-lemp-stack-centos.html 作者: D ...
- [转载]CentOS 下安装LEMP服务(Nginx、MariaDB/MySQL和PHP)
LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用.正如其名称所暗示的, LEMP 包是由 Linux.nginx.MariaDB/MySQL 和 P ...
- 20190418 CentOS7实用技能综合:系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/RocketMQ/RabbitMQ编译安装 + ...各类常用生产环境软件的编译安装
系统安装 + WinScp客户端连接 + 防火墙端口号iptables + Nginx编译安装 + MySQL编译安装 + Redis编译安装 + MongoDB编译安装 + ActiveMQ/Roc ...
- 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql
阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...
- Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis
环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db redis web nginx NET Core 6+MySQL 8+N ...
随机推荐
- 【移动端】300ms延迟以及点透事件原因以及解决方案
产生原因 移动端会有双击缩放的这个操作,因此浏览器在click之后要等待300ms,看用户有没有下一次点击,也就是这次操作是不是双击 说完移动端点击300ms延迟的问题,还不得不提一下移动端点击穿透的 ...
- Spark 整合ElasticSearch
Spark 整合ElasticSearch 因为做资料搜索用到了ElasticSearch,最近又了解一下 Spark ML,先来演示一个Spark 读取/写入 ElasticSearch 简单示例. ...
- Basic berkeley socket functions
gethostbyname() DNS を通して.Domain の Information を GET する.例えば IP Address なんだ. げん型: #include <netdb.h ...
- Nginx负载均衡session会话保持方法
负载均衡时,为了保证同一用户session会被分配到同一台服务器上,可以使用以下方法: 1.使用cookie 将用户的session存入cookie里,当用户分配到不同的服务器时,先判断服务器是否存在 ...
- 经典文摘:饿了么的 PWA 升级实践(结合Vue.js)
自 Vue.js 官方推特第一次公开到现在,我们就一直在进行着将饿了么移动端网站升级为 Progressive Web App 的工作.直到近日在 Google I/O 2017 上登台亮相,才终于算 ...
- tarjan强连通算法
#include <iostream> #include <string.h> using namespace std; ; ; struct edge{ int v,next ...
- Nginx正反向代理、负载均衡等功能实现配置
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 系统环境: VirtualBox Manager Centos6.4 nginx1.10.0 IP对应的机器名: IP ...
- 【noip 2015】提高组
先扔一份写的超级详细的题解. -Day1- -Day2- (感觉自己并没有什么写题解的必要啊……做点补充好了,顺便扔代码 D1T1.神奇的幻方 题目链接 #include<cstdio ...
- Python非空即真,非零即真
非空即真,非零即真 #1. 非空即真(只要输入不为空就是真) #username =''(空字典.空字符串.空元组都算空) # a= '' # b=[] # c={} # d=None (返回值是No ...
- 基于netty实现单聊、群聊功能
学习资料 https://juejin.im/book/5b4bc28bf265da0f60130116/section/5b6a1a9cf265da0f87595521 收获: 转载 1. Nett ...