写点什么

Linux 之基于 Centos 系统安装 Redis、MySQL、Nginx

作者:C++后台开发
  • 2022-12-05
    湖南
  • 本文字数:6799 字

    阅读完需:约 22 分钟

Linux之基于Centos系统安装Redis、MySQL、Nginx

一. Redis 的安装

1. 准备

(1). 宿主机:centos 8.0


(2). Redis 源码:【压缩包: redis-5.0.0.tar.gz】 需要自行编译。 (PS:这个压缩包可以直接 Centos 系统中在线下载 或者去 Redis 官网先下载,然后 copy 到 Centos 系统中)


下载地址:


官网:https://redis.io/


中文版:http://www.redis.cn/


注:Redis 的安装需要下载源码,自行准备环境,进行编译安装。


(3). gcc 环境:redis 是 C 语言开发的,安装 redis 需要先将官网下载的源码进行编译,编译依赖 gcc 环境。

2. 安装步骤

(1). 安装 gcc 环境


通过指令【yum install gcc-c++】安装 gcc 环境,安装过程中需要两次输入 y,分别是确认下载和确认安装。



​ 两次确认:



最终安装成功:



(2). 安装 Redis


A. 去 Redis 官网下载压缩包,然后 Copy 到 Centos 宿主机中,下载地址为:http://download.redis.io/releases/ ,这里我们以 【5.0.0】版本为例进行演示。



PS: 这里我们直接在 Linux 系统中在线下载压缩包,运行指令:【wget http://download.redis.io/releases/redis-5.0.0.tar.gz


B. 解压到当前目录,运行下面指令 ,解压后的文件如下:


【tar -zxvf redis-5.0.0.tar.gz】


C. 切换到 redis 目录,运行 make 指令进行编译 。


【cd redis-5.0.0/】


【make】 (ps:make 指令可能需要安装,根据提示,输入 y 确认安装即可)


D. 安装 redis 到指令目录


【cd redis-5.0.0/】


【make PREFIX=/usr/local/redis install 】


PS:make install 安装完成后,会在/usr/local/redis/bin 目录下生成下面几个可执行文件,它们的作用分别是:


redis-server:Redis 服务器端启动程序


redis-cli:Redis 客户端操作工具。也可以用 telnet 根据其纯文本协议来操作


redis-benchmark:Redis 性能测试工具


redis-check-aof:数据修复工具


redis-check-dump:检查导出工具



(3). 配置 Redis


进入 redis 原先的解压目录,把里面的配置文件 【redis.conf】 拷贝到 /usr/local/redis/bin 目录下。


【cd redis-5.0.0/】


【cp redis.conf /usr/local/redis/bin】


(4). 启动 Redis


A. 进入到 /usr/local/redis/bin 安装目录, 【cd /usr/local/redis/bin】


B. 修改 redis.conf,把 daemonize no 改为 daemonize yes,改为守护进程,即后台程序启动,否则关闭窗口 redis 服务就关闭了 (可选)


C. 运行指令**【./redis-server redis.conf】** 进行启动,如下图表示启动成功。PS: ./表示当前目录

(5). 复制一个窗口,启动链接客户端 【./redis-cli】,可以进行 redis 操作。

(6). 关闭 redis 服务【./redis-cli shutdown】, 如果有密码,需要【./redis-cli -a 123456 shutdown】


进行链接,连接失败;重新启动 redis 服务【./redis-server redis.conf】,进行链接,链接成功。


PS:也可以直接通过【ps -ef|grep redids】获取 redis 服务的进程号,然后 【kill 进程号】的方式强制关掉 redis 服务。


更多 C++后台开发技术点知识内容包括 C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux 内核,TCP/IP,协程,DPDK 多个高级知识点。

C/C++Linux服务器开发高级架构师/C++后台开发架构师免费学习地址

【文章福利】另外还整理一些C++后台开发架构师 相关学习资料,面试题,教学视频,以及学习路线图,免费分享有需要的可以点击领取


如下图:


3. 测试

如何在外部链接 linux 上的 redis?


(1). 将 bind 127.0.0.1 注释掉。


(2). 关闭保护模式,即将 protected-mode 改为 no。


PS:以上两个指令执行完成后,要重启一下 redis 服务。


(3).首先需要在 centos 宿主机上关闭防火墙,从而外部可以访问 redis 的 6379 端口。


#添加 6379 端口永久开放 sudo firewall-cmd --add-port=6379/tcp --permanent #重启防火墙 firewall-cmd --reload


(4). 使用客户端工具进行连接,连接成功。




4. 其它配置和指令


(1). 设置密码


默认链接 redis 是没有密码的,我们通过修改 redis.conf 文件中 requirepass 节点,来设置密码,如下图:


默认:


修改密码为 123456:



重新链接:


在本地电脑上通过客户端连接: 【 redis-cli -h 192.168.137.201 -p 6379 -a 123456】



(2). 改为守护进程


修改 redis.conf,把 daemonize no 改为 daemonize yes,改为守护进程,即后台程序启动,否则关闭窗口 redis 服务就关闭了


参考文档:https://blog.csdn.net/lc1010078424/article/details/78295482 (添加服务)


https://blog.csdn.net/weixin_40605573/article/details/89324038

二. MySQL 的安装

1. 准备

(1). 宿主机:centos8.0


(2). MySQL 安装包:mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar (这里安装的是 5.7 版本)


PS:这里使用的安装包是针对 centos 系统特制的 RPM 包,通过 RPM 相关指令进行安装,当然也可以通过其他类型的安装包进行编译安装。


下载地址:https://dev.mysql.com/downloads/mysql/ ,这里演示的是下载整个压缩包,解压后有很多组件的 rmp 包,当然我们也可以根据需要直接下载对应的组件进行安装,比如我只下载 Server 的 rpm 包。



2. 安装步骤

前提:删除一下系统自带的 mysql


(1). 把安装包 copy 到 centos 的宿主机中


(2). 在当前目录下进行解压,指令如下


【tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar】解压出来一堆包,我们根据需要安装即可。


(3). 安装 client 端 和 server 端


经验:server 需要依赖 client 端,所以 server 端最后安装,client 端还需要依赖 common 和 libs,而且 client 还需要 libncurses 和 libtinfo 相关,所以我们在 rmp 包的根目录下运行指令,严格按照下面的顺序进行。


【rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm】


【rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm】


【yum install libncurses* -y】


【yum install libtinfo* -y】


【rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm】


【rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm】


截止此处全部安装完成。


(4). 启动服务并查看状态


A. 启动服务: 【systemctl start mysqld】


B. 查看状态:【systemctl status mysqld】


(5). 必备的配置


A. 修改密码策略,否则无法随心所以的修改密码


找到 mysql 的配置文件,位于 /etc/my.conf , 在这个配置文件里,还能看见其它几个配置的路径,如下图,然后添加下面代码,修改完后,重启一下 mysql 服务【systemctl restart mysqld】


注:以下两行代码任意一行都可以,可以直接关闭密码策略即可。


#添加 validate_password_policy 配置 选择 0(LOW)1(MEDIUM)2(STRONG)其中一种 validate_password_policy=0 #关闭密码策略 validate_password = off


B. 查看随机密码


默认 root 账号会生成一个随机密码,通过指令【grep "password" /var/log/mysqld.log 】查看,如下图,密码为: wIsu.rk_d74c


C. 修改密码(这里改为 123456)


使用内置客户端进行登录,【mysql -uroot -p】,然后输入上面密码:wIsu.rk_d74c ,如下图说明登录成功。 或者直接输入指令:【mysql -uroot -pwIsu.rk_d74c】


将 root 账号的密码改为:123456,指令为【set password=password('123456');注意在 mysql 中的指令结尾必须有分号!!


​ 或者运行指令:【ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';】进行密码修改


输入指令【exit;】,退出


重新输入指令【mysql -uroot -p123456】,如下图:登录成功

D. 设置允许远程访问


①. 运行下面指令,运行所有 ip 用 root 账号,密码为 123456 进行访问 mysql。


grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;flush privileges; 
复制代码


注:上述指令的本质是在 User 表中增加了一条新的记录,Host 设置为 %,代表运行所有客户端访问,实际上可以直接去 User 表中把原先内置的 root 用户的 Host 字段由 Localhost 改为 %即可。


②. 查看防火墙状态,开发 3306 端口,或者直接关闭防火墙。


#查看防火墙状态service firewalld status 
#方案1,开放3306端口,并重启sudo firewall-cmd --add-port=3306/tcp --permanent#重启防火墙firewall-cmd --reload
#方案2:直接关闭防火墙service firewalld stop
复制代码


(6). 测试


使用客户端远程连接,如下图,连接成功。


(7). 指令总结


【systemctl status mysqld】 查看 mysql 状态


【systemctl stop mysqld 】 关闭 mysql 服务


【systemctl start mysqld】 开启 mysql 服务


【systemctl restart mysqld】 重启服务


3.其它配置指令说明


(1). 授权远程访问详解


方法 1:授权法


-- 允许特定ip访问grant all privileges on *.* to 'root'@'192.168.137.202'identified by '123' with grant option;
--允许所有ip访问grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
--执行完上述后,都要刷新生效flush privileges;
复制代码


说明:以上指令都是对 root 账号授权远程访问,登录密码为:123,特别注意这个密码可以和 root 本来 server 端不一样,比如:本来 server 端 root 密码为 123456,这里远程授权设置的是 123,那么远程客户端登录就只能使用 123 密码,使用 123456 密码无法连接;通过 set password 把 root 的服务密码改为 12345678,不影响远程授权登录,远程客户端仍然可以通过 123 进行访问。


实质:上述操作本质上是在 mysql 中自带的一个 mysql 库中 user 表中插入了一条记录,也就是在 User 表中对应了多个 root 账户,实际上不建议这样做,直接把原先的 root 对应 Host 改为 %即可。如下图:

方法 2:直接操作 mysql 下的 user 表

--可以更新字段--特定ipupdate user set host = '192.168.1.49' where user = 'root'; --所有ipupdate user set host = '%' where user = 'root'; 
--也可以直接插入一条新纪录 --刷新生效flush privileges;
复制代码


说明:上述更新字段的那种方式远程登录使用的密码为 root 自身 server 的密码,也可以插入一条记录,可以使用一个新的密码,与 root 原来 server 端密码不同。


(2). 配置字符编码


注意:安装完 mysql 后,一定要修改编码,从 mysql5.7 开始,将编码都改为 utf8mb4。


连接上 mysql,输入指令【show variables like '%character%';】 ,查看原来的各种编码,如下图,这里我们把 character_set_server 也改成 utf8,否则容易乱码。

修改 /etc/my.cnf, 增加下面代码,然后重启 mysql 服务 【systemctl restart mysqld】,重新查看编码,设置成功。

[client]default-character-set=utf8mb4
[mysql]default-character-set=utf8mb4
[mysqld]# 设置client连接mysql时的字符集,防止乱码init_connect='SET NAMES utf8mb4'init_connect='SET collation_connection = utf8mb4_general_ci'
# 数据库默认字符集character-set-server=utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应collation-server=utf8mb4_general_ci
复制代码


查看数据库编码,如下图,修改成功。【show variables like '%character%';】

(3). 忘记 root 密码怎么办?


​ 详见:https://www.cnblogs.com/yaopengfei/p/13798785.html

三. Nginx 的安装

1.准备

(1). 宿主机:centos 8.0


(2). Nginx 源码:需要去官网下载源码 copy 到 centos 系统中,自行编译安装。这里使用【nginx 1.19.3】版本。


​ 下载地址:http://www.nginx.org/

(3). 编译 Nginx 所需要的的环境:


A. gcc 环境:因为是 C 语言开发的。


B. pcre: 是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。


注:pcre-devel 是使用 pcre 开发的一个二次开发库,nginx 也需要此库。


C. zlib:zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。


D. OpenSSL: 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux 安装 openssl 库。

2. 安装步骤

(1). 安装编译所需的环境

A. 【yum install -y gcc-c++】

图如上面 redis 安装一样。

B.【yum install -y pcre pcre-devel】

C. 【yum install -y zlib zlib-devel】

D. 【yum install -y openssl openssl-devel】

(2). 将下载好的 Nginx 压缩包上传到 Centos 的工作目录下,并进行解压缩 【tar -zxvf nginx-1.19.3.tar.gz】,解压后如下图:

(3). 进入 nginx-1.19.3 目录 使用 configure 命令创建 1 个 MakeFile 文件.

【cd nginx-1.19.3/】,然后运行下面指令,直接 copy 进去,敲击回车,执行即可

./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi
复制代码

执行完成后,nginx 目录下多了一个 MakeFile 文件

PS:代码解释


----  知识点小贴士 ----  Makefile是一种配置文件, Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
---- 知识点小贴士 ---./configure \--prefix=/usr \ 指向安装目录--sbin-path=/usr/sbin/nginx \        指向(执行)程序文件(nginx)--conf-path=/etc/nginx/nginx.conf \          指向配置文件--error-log-path=/var/log/nginx/error.log \            指向log--http-log-path=/var/log/nginx/access.log \             指向http-log--pid-path=/var/run/nginx/nginx.pid \           指向pid--lock-path=/var/lock/nginx.lock \         (安装文件锁定,防止安装文件被别人利用,或自己误操作。)--user=nginx \--group=nginx \--with-http_ssl_module \                启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)--with-http_flv_module \                启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)--with-http_stub_status_module \                      启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)--with-http_gzip_static_module \                        启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)--http-client-body-temp-path=/var/tmp/nginx/client/ \             设定http客户端请求临时文件路径--http-proxy-temp-path=/var/tmp/nginx/proxy/ \                 设定http代理临时文件路径--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \                 设定http fastcgi临时文件路径--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \                  设定http uwsgi临时文件路径--http-scgi-temp-path=/var/tmp/nginx/scgi \                   设定http scgi临时文件路径--with-pcre 启用pcre库
复制代码


(4). 在 nginx-1.19.3 目录下,执行 【make】指令,进行编译。

(5). 安装 Nginx(指定安装路径)


在 nginx-1.19.3 目录下执行下面的安装指令


make PREFIX=/usr/local/nginx install


如下图:

(6). 启动前准备


A. 启动 nginx 之前,上边 MakeFile 温江将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此目录


mkdir /var/temp/nginx/client -p


B. 进入到 Nginx 安装目录下的 sbin 命令目录下


cd /usr/local/nginx/sbin


(7). 启动


./nginx


如图:

(8). 关闭防火墙或者开放 80 端口


#添加 80 端口永久开放 sudo firewall-cmd --add-port=80/tcp --permanent #重启防火墙 firewall-cmd --reload


(9). 其它指令


A. 查看 nginx 进程 【ps aux|grep nginx】

B. 关闭 Nginx


./nginx -s stop #或 ./nginx -s quit


C. 重启 nginx


./nginx -s reload

3. 测试

访问默认的 80 端口,输入:http://192.168.137.201

4. 常见错误处理

(1). 启动 nginx 的时候报错,如下图,缺少文件了。

解决方案:到对应目录下创建相应文件即可。


原文链接:第六节:Linux之基于Centos系统安装Redis、MySQL、Nginx - Yaopengfei - 博客园

用户头像

C/C++后台开发技术交流qun:720209036 2022-05-06 加入

还未添加个人简介

评论

发布
暂无评论
Linux之基于Centos系统安装Redis、MySQL、Nginx_nginx_C++后台开发_InfoQ写作社区