常用服务安装部署

 

学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧!

安装环境:

centos7 + vmware + xshell

即将登场的是:

  • mysql(mariadb)
  • redis
  • python
  • nginx
  • saltstack

MYSQL(mariadb)

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

方法1:yum安装mariadb

yum install mariadb-server mariadb 

相关命令

mariadb数据库的相关命令是:

systemctl start mariadb  #启动MariaDB

systemctl stop mariadb  #停止MariaDB

systemctl restart mariadb  #重启MariaDB

systemctl enable mariadb  #设置开机启动

启动后正常使用mysql

systemctl start mariadb

#进入mysql
mysql -uroot -p

方法2:官网下载mysql-server包(rpm)

# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-.noarch.rpm
# yum install mysql-community-server

配置mysql

1.中文编码设置

编辑mysql配置文件/etc/my.cnf
[mysqld]
character-set-server=utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
collation-server=utf8_general_ci security risks
symbolic-links=
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid [client]
default-character-set=utf8
[mysql]
default-character-set=utf8

2.授权配置

远程连接设置哦设置所有库,所有表的所有权限,赋值权限给所有ip地址的root用户
mysql > grant all privileges on *.* to root@'%' identified by 'password';
#创建用户
mysql > create user 'username'@'%' identified by 'password';
#刷新权限
flush privileges;

MYSQL主从复制

主从机制实现原理

() master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
() slave将master的binary log events拷贝到它的中继日志(relay log);
() slave重做中继日志中的事件,将改变反映它自己的数据。

master主库配置

#查看数据库状态
systemctl status mariadb
#停mariadb
systemctl stop mariadb #修改配置文件
vim /etc/my.cnf
#修改内容
#解释:server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin

  [mysqld]
  server-id=1
  log-bin=mysql-bin

#重启mariadb
systemctl start mariadb

master主库添加从库账号

.新建用于主从同步的用户chaoge,允许登录的从库是'192.168.178.130'
create user 'chaoge'@'192.168.178.130' identified by 'redhat'; .#题外话:如果提示密码太简单不复合策略加在前面加这句
mysql> set global validate_password_policy=; .给从库账号授权,说明给chaoge从库复制的权限,在192.168.178.130机器上复制
grant replication slave on *.* to 'chaoge'@'192.168.178.130'; 4.检查主库的状态

MariaDB [(none)]> show master status
-> ;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 575 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

File是二进制日志文件名,Position 是日志开始的位置。后面从库会用到 后面从库会用到 后面从库会用到!!!!!!

slave从库配置

.检查slave数据库状态
systemctl status mariadb .停止mariadb
systemctl stop mariadb 3.修改配置文件my.cnf
[mysqld]
server-id=2 #一定要和主库区别开 4.重启mariadb
systemctl start mariadb 5.登录mariadb
mysql -uroot -p 6.使用主库授权的账号

mysql > change master to master_host='192.168.178.129',
master_user='chaoge',
master_password='redhat',
master_log_file='mysql-bin.000001',
master_log_pos=575;

 7.重启数据库

systemctl restart mariadb

redis

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件

yum安装redis

1.yum安装

#前提得配置好阿里云yum源,epel源
#查看是否有redis包
yum list redis
#安装redis
yum install redis -y
#安装好,启动redis
systemctl start redis

2.检测redis是否工作

redis-cli    #redis 客户端工具
#进入交互式环境后,执行ping,返回pong表示安装成功
127.0.0.1:> ping
PONG

源码安装redis,编译安装

大家用过yum,是相当省事好用吧,为什么还要学习源码安装?

有人说编译安装性能好?错

编译安装的优势是:

  • 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
  • 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面
  • 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
.下载redis源码
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2.解压缩
tar -zxf redis-4.0.10.tar.gz
3.切换redis源码目录
cd redis-4.0.10.tar.gz
4.编译源文件
make
5.编译好后,src/目录下有编译好的redis指令
6.make install 安装到指定目录,默认在/usr/local/bin

redis可执行文件

./redis-benchmark //用于进行redis性能测试的工具
./redis-check-dump //用于修复出问题的dump.rdb文件
./redis-cli //redis的客户端
./redis-server //redis的服务端
./redis-check-aof //用于修复出问题的AOF文件
./redis-sentinel //用于集群管理

启动redis服务端

启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:
./redis-server ../redis.conf
默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

使用redis客户端

#执行客户端命令即可进入
./redis-cli
#测试是否连接上redis
127.0.0.1: > ping
返回pong代表连接上了 //用set来设置key、value
127.0.0.1: > set name "chaoge"
OK
//get获取name的值
127.0.0.1: > get name
"chaoge"

redis数据结构

redis是一种高级的key:value存储系统,其中value支持五种数据类型
字符串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

数据结构示例

1.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    //查看键的类型
2.list类型
redis的另外一个数据结构叫做lists,中文叫列表
lists常用操作包括
LPUSH 在lists左侧插入一个新元素
RPUSH 在lists右侧插入一个新元素
LRANGE 在lists指定范围提取元素
LPOP 左侧删除
RPOP  右侧删除 示例:

lpush mylist "1" //新建一个mylist,在头部插入元素"1"
(integer) 1    //返回mylist元素个数

rpush mylist "2"  //在mylist右侧插入元素"2"

(INTEGER) 2    //返回mylist元素个数

127.0.0.1:6379> lpush mylist "0"  //在mylist左侧插入元素"0"

(integer) 3    //返回mylist元素个数

//列出mylist中从编号0到编号1的元素

127.0.0.1:6379> lrange mylist 0 -1 
1) "0"
2) "1"
3) "2"

lists类型常用在,消息队列、实现分页功能、存储文章评论

3.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”等等,就可以吧每一个用户的标签存储在集合里

4.sorted sets有序集合

redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。

很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

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"

5.哈希数据结构

hashes即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

//建立哈希,并赋值
127.0.0.1:> HMSET user: username antirez password P1pp0 age
OK
//列出哈希的内容
127.0.0.1:> HGETALL user:
) "username"
) "antirez"
) "password"
) "P1pp0"
) "age"
) ""
//更改哈希中的某一个值
127.0.0.1:> HSET user: password
(integer)
//再次列出哈希的内容
127.0.0.1:> HGETALL user:
) "username"
) "antirez"
) "password"
) ""
) "age"
) ""

Python编译安装

先放个龟叔再说

centos7默认是装有python的,咱们先看一下

#检查python版本
[root@oldboy_python ~ ::]#python -V
Python 2.7.

再放一张图,《震惊,python2.7不再维护!》

好了,咱们开始python3之旅。

编译环境准备

、./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
、make 是用来编译的,它从Makefile中读取指令,然后编译。
、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
4.解决依赖关系
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y

这里看超哥另外一篇文章:https://www.cnblogs.com/pyyu/p/7402145.html

.下载python3版本
curl -O https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
2.解压缩源码
tar -zxvf Python-3.7.0.tgz
3.编译三部曲
./configure –prefix=/opt/python3.7/ #指定编译装到/opt/python3.7/下
make && make install #编译和安装

NGINX

nginx [engine x]是Igor Sysoev编写的一个HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex、Mail.Ru、VKontakte,以及Rambler。据Netcraft统计,在2012年8月份,世界上最繁忙的网站中有11.48%使用Nginx作为其服务器或者代理服务器。

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。

安装环境准备

一. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++
二. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令: yum install -y pcre pcre-devel
三. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。 yum install -y zlib zlib-devel
四. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。 yum install -y openssl openssl-devel

安装,启动nginx

.下载源码包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解压缩源码
tar -zxvf nginx-1.12.0.tar.gz
3.配置,编译安装
.configure --prefix=/opt/nginx1-12/
make && make install
4.启动nginx,进入sbin目录,找到nginx启动命令
cd sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload #重新加载

uWSGI+NGINX+Django部署应用 

经过上续的nginx,python安装,还得提前安装好virtualenv(超哥博客)

安装uWSGI

后续都得在虚拟环境下配置,
(venv)pip3 install uwsgi 安装uwsgi
安装好后,编写一个
test.py
def application(env,start_response):
start_response('200 OK',[('Content-Type','text/html')])
return [b'Hello world!']

开启uWSGI服务

uwsgi --http : --wsgi-file test.py 

saltstack

对于运维人员来说,反复复杂的工作很烦,效率低,还容易出错。而传统运维也想着自动化运维的方向进行发展,

而saltstack则是在自动化运维上非常好用的工具,saltstack是python开发的一款自动化运维工具,可以批量管理操作主机,

远程执行脚本等功能。完全开源,还可以设置web管理界面,更简单的管理大量服务器。

基本原理:

基本原理
SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信 minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信

安装准备:

.安装epel源(同时在master,minion端)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 2.安装salt-master,也就是服务端
yum install salt-master -y 3.安装salt-minion,也就是客户端
yum install salt-minion -y

redis常用服务安装部署的更多相关文章

  1. Linux常用服务安装部署

    1,centos7默认是装有python的,检查python版本的命令 # 检查python版本 : python -V 2,centOS在安装python3以及tab补全功能 下载python3源码 ...

  2. Linux下的python3,virtualenv,Mysql、nginx、redis等常用服务安装配置

    Linux下的python3,virtualenv,Mysql.nginx.redis等常用服务安装配置   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环 ...

  3. Redis Windows下安装部署

    下载Redis 在Redis的官网下载页上有各种各样的版本,我这次是在windows上部署的,要去GitHub上下载.我下载的是2.8.12版的,相信大家百度一下就可以搜到,这就是我们需要的: 启动R ...

  4. Redis介绍、安装部署、操作

    学习连接:http://www.runoob.com/redis/redis-tutorial.html 一.Redis介绍 Redis是NoSql的一种. NoSql,全名:Not Only Sql ...

  5. Redis (一)Redis简介、安装部署

    Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. 既然是key-value,对于Java开发来说更熟悉的是Map集合.那就有问题了,有M ...

  6. Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)

    一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...

  7. Spring boot centos7 后台服务安装部署

    Spring boot 应用服务安装部署(maven工程) 1.首先在maven工程的pom文件中引入以下标签并保存 <build> <plugins> <plugin& ...

  8. Redis学习01_redis安装部署(centos)

    原文: http://www.cnblogs.com/herblog/p/9305668.html Redis学习(一):CentOS下redis安装和部署 1.基础知识  redis是用C语言开发的 ...

  9. 基于windows的Redis后台服务安装卸载管理

    首先,需要你进入你的Redis解压根目录,例如,类似于我下图的这样子: 接着打开你的cmd,使用cd命令切换到该目录,或者直接在上图的地址栏输入“cmd”并回车.这里为什么让你先使用资源管理器找到你的 ...

随机推荐

  1. Error occurred during initialization of VM Could not reserve enough space for object heap

    Error occurred during initialization of VM Could not reserve enough space for object heap Java虚拟机(JV ...

  2. Redis的过期策略和内存淘汰策略

    Redis的过期策略:通常有三种,Redis中同时使用惰性过期和定期过期两种过期策略组合. 定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除.该策略可以立即清除过期的数据 ...

  3. 艾奇学院:66个信息流广告和SEM学习网址资源大放送!

    01.CNZZ-UDplus 网址:udplus.umeng.com 说明:基于用户行为的精细化分析.运营平台,去研究研究,很多料! 02.黑眼圈管理后台 网址:www.not3.com 说明:二类电 ...

  4. python3 摘抄

    https://www.python.org/downloads/release/python-370/ python3.7.0 win10环境,选:Windows x86-64可执行安装程序. ht ...

  5. (5/24) 模块化:实现快速CSS文件打包

    写在前面:为了兼容,此处的webpack版本为3.6.0.webpack-dev-server版本为2.9.7.css-loader版本为2.0.0.style-loader版本为0.23.1,若在下 ...

  6. python远程连接windows

    远程连接windows系统     https://blog.51cto.com/ckl893/2145809 import winrm win2008 = winrm.Session('http:/ ...

  7. python大法好——python json

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, ...

  8. Java运行时数据区域分析

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结 ...

  9. MFC 读写文件

    写文件: #include<fstream> CStdioFile file; file.Open(_T("parametertable.txt"), CFile::m ...

  10. VB6 二维数组去重实现

    关于VB6的二维数组去重算法实现 当然,这里还是有局限性,当我们的数组被填满了各个不同的值时,例如下方 700*700 = 490000 就要While49万次,这谁受得了? 所以以下仅适合小规模使用 ...