此篇文章以后随缘更新,这个系统的相关问题网上一般都有答案,浪子个人已不再使用 CentOS 系统。

一、CentOS7最小安装

1、配置网卡

先进行网络的连接,编辑网络配置文件(vi /etc/sysconfig/network-scripts/ifcfg-ens32),不同的机器最后的文件名称可能不同,一般都是 ifcfg- 开头。

BASH
1# 空着的部分自定义即可
2BOOTPROTO=static
3ONBOOT=yes
4IPADDR=
5NETMASK=
6GATEWAY=
7DNS1=
点击展开查看更多

设置完成后,保存退出,使用命令 systemctl restart network 重启网卡。

2、关闭防火墙以及 Linux 的一些安全策略

BASH
1systemctl stop firewalld
2systemctl disable firewalld
3
4sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
5
6setenforce 0
点击展开查看更多

3、设置镜像源

配置本地 yum 源(标准版或者全量版)

BASH
 1# 进入目录
 2cd /etc/yum.repos.d/
 3# 创建 备份 文件夹
 4mkdir bak
 5# 移动该目录下的所有文件到备份文件夹
 6mv * bak
 7
 8# 设置阿里镜像源
 9curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
10
11yum clean all
12# 更新 CentOS7 的各种软件包
13yum update
点击展开查看更多

配置本地 yum 源(标准版或者全量版可用)

这里只是提一下。能够使用该方式的必须是标准版/全量版的镜像,但是使用最小化安装的方式。直接挂载 iso 镜像进行一些工具的安装(工具都在镜像中,但是未安装),在内网的情况下安装系统这样比较方便。

BASH
1mkdir /mnt/cdrom
2mount /dev/cdrom /mnt/cdrom
3
4# 拷贝一份文件进行编辑
5cp /etc/yum.repos.d/bak/CentOS-Media.repo /etc/yum.repos.d/CentOS-Media.repo
点击展开查看更多

编辑刚才我们拷贝的文件:vi CentOS-Media.repo,这就是安装软件时读取的安装源配置,加入以下内容,先使用本地镜像安装。

BASH
1[linux]
2name=linux
3baseurl=file:///mnt/cdrom
4gpgcheck=0
5enabled=1
点击展开查看更多

接下来就可以安装一些镜像中包含的工具后再取消挂载。后面就可以安装自己上传的离线包嘞!

BASH
1# 清除yum缓存
2yum clean all
3
4yum install -y wget vim
5# 取消挂载
6umount /media
点击展开查看更多

4、安装常用工具

yum -y install curl telnet vim wget lrzsz iproute2

修改vim配置(可以不修改,按照默认的即可,这里仅仅是偏好)

BASH
 1vim ~/.vimrc
 2set encoding=utf-8      " 文件编码
 3set number              " 显示行号
 4set tabstop=4           " tab宽度为4
 5set softtabstop=4        " 设置一次可以删除4个空格
 6set expandtab           " tab转换为空格
 7set nowrap              " 不自动换行
 8set showmatch          " 显示括号配对情
 9
10syntax on              " 开启语法高亮
点击展开查看更多

5、安装一些基础依赖

yum -y install gcc gcc-c++ make autoconf automake pkg-config gettext wget lrzsz libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel libxslt-devel libevent-devel libtool libtool-ltdl bison gd gd-devel vim-enhanced pcre-devel zip unzip ntpdate sysstat patch bc expect rsync

6. rpm命令

BASH
1# 安装
2rpm -ivh xxx.rpm
3# 卸载
4rpm -evh xxx.rpm
5# 更新
6rpm -Uvh xxx.rpm
7# 显示所有已安装软件
8rpm -qa
点击展开查看更多

7. lrzsz:文件上传下载

BASH
1# 安装
2yum install -y lrzsz
3# 下载
4sz
5# 上传
6rz
点击展开查看更多

二、部署服务

1. Redis

{% link https://redis.io/download/ 官网源码下载 %}

BASH
1# 安装编译 redis 需要的工具
2sudo yum -y install gcc automake autoconf libtool make
3# 进入解压目录,进行编译,直到编译完成
4make MALLOC=libc
5# 安装到指定路径
6make install PREFIX=/usr/local/redis
点击展开查看更多

Redis 的默认的配置文件在源码解压后的目录中

2. RabbitMQ

RabbitMQ 是使用 Erlang 语言编写的中间件,联想一下 Java,我们可以猜到它需要先搭建 Erlang 环境。主要是这个环境需要编译源码,RabbitMQ 本身官网提供了二进制压缩包。

{% link https://www.erlang.org/downloads Erlang源码下载 %}

一、Erlang环境搭建

BASH
 1# 安装编译 Erlang 的相关依赖
 2yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto
 3# 解压源码包
 4tar -zxvf otp_src_24.1.7.tar.gz
 5
 6cd otp_src_24.1.7/
 7# 指定安装目录
 8./configure --prefix=/usr/local/erlang
 9# 编译安装
10make && make install
11# 测试安装是否成功:
12cd /usr/local/erlang/bin/
13./erl
14
15# 安装成功后配置环境变量 vim /etc/profile
16export PATH=$PATH:/usr/local/erlang/bin
17
18# 添加完成保存退出,刷新使其生效
19source /etc/profile
点击展开查看更多

二、安装Rabbitmq

通过第一步,我们就搭建好了 Erlang 环境,接下来就是安装 RabbitMQ 了,这个还是比较简单的,因为它已经编译好了,我们可以下载直接配置,无需编译。

{% link https://www.rabbitmq.com/install-generic-unix.html 二进制文件包下载 %}

BASH
1# 解压
2tar -Jxvf rabbitmq-server-generic-unix-3.9.11.tar.xz
3# 移动
4mv rabbitmq_server-3.9.11 /usr/local/rabbitmq
5
6# 添加环境变量:vim /etc/profile
7export PATH=$PATH:/usr/local/rabbitmq/sbin
8# 刷新变量
9source /etc/profile
点击展开查看更多

3. Python

Linux 下基本不需要配置 Python 的环境,有个别的 ISO 镜像版本比较老,比如 CentOS7 的 mini ISO 镜像是2.x的,我们可以通过各大系统的包管理工具进行安装,也可以自己通过源码编译安装。

{% link https://www.python.org/downloads/ 源码下载 %}

BASH
 1# 安装相关工具和依赖
 2yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
 3
 4# 解压压缩包
 5tar -zxvf Python-3.10.2.tgz
 6# 进入文件夹
 7cd Python-3.10.2
 8
 9# 配置安装位置
10./configure prefix=/usr/local/python3
11
12# 编译并安装
13make && make install
14
15# 使用 python3 验证是否安装成功
16python3 -V
17
18#添加python3的软链接
19ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
20
21#添加 pip3 的软链接
22ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
点击展开查看更多

4. Nginx

{% link https://nginx.org/en/ 官网源码下载 %}

BASH
 1# 解压
 2tar -zvxf nginx-1.20.2.tar.gz
 3# 配置安装路径
 4./configure --prefix=/usr/local/nginx
 5# 编译安装
 6make && make install
 7# 进入安装目录查看是否安装成功
 8cd /usr/local/nginx
 9
10# 启动 停止 重启
11./nginx start
12./nginx -s stop
13./nginx -s reload
点击展开查看更多

5. Btop++

Btop++ 是一个 Linux 资源监视器,显示处理器、内存、磁盘、网络和进程的使用情况和统计资料,界面美观,使用简单。这里使用了源码编译安装,但是浪子推荐下载 Github 仓库的二进制包解压运行 install.sh 脚本安装。

{% link https://github.com/aristocratos/btop Github地址 %} {% link https://gitee.com/mirrors/btop Gitee同步仓库 %}

BASH
 1# 安装、升级相关依赖工具
 2yum install coreutils sed build-essential -y
 3yum install centos-release-scl -y
 4yum install devtoolset-10 -y
 5scl enable devtoolset-10 bash
 6echo "source /opt/rh/devtoolset-10/enable" >> /etc/profile
 7
 8# 克隆源码编译安装
 9git clone https://gitee.com/mirrors/btop.git
10cd btop
11make && make install
点击展开查看更多

6. FFmpeg

{% link http://www.ffmpeg.org/ FFmpeg使用 %}

BASH
 1# 克隆源码 也可以下载 https://github.com/FFmpeg/FFmpeg/releases 相应的包上传
 2git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
 3
 4# 安装相关依赖
 5yum install yasm.x86_64 -y
 6
 7cd ffmpeg
 8./configure --enable-ffplay --enable-ffserver --prefix=/usr/local/ffmpeg
 9# 编译安装
10make && make install
11
12# 查看是否安装成功
13cd /usr/local/ffmpeg
点击展开查看更多

7. MySQL(解压版)

yum 方式安装:https://zhuanlan.zhihu.com/p/87069388

使用通用的 MySQL8.x 版本的二进制压缩包进行安装。至于卸载,就把有关 MySQL 创建的几个文件夹删掉就行了,/etc/my.cnf 是默认自带的,卸载的时候删不删都没有问题,如果默认没有这个文件也不必担心,可以手动添加。

BASH
 1# 检查mysql用户组和用户是否存在,如果没有,则创建
 2cat /etc/group | grep mysql
 3cat /etc/passwd | grep mysql
 4# 创建 mysql 组
 5groupadd mysql
 6# 新建 mysql 用户并加入 mysql 群组
 7useradd -r -g mysql mysql
 8
 9# 安装所需依赖(需要安装 libaio-devel.x86_64 numactl 这两个依赖)
10yum -y install libaio-devel.x86_64 numactl
11
12# 解压二进制文件包到 /usr/local/mysql 目录
13tar xxx -C /usr/local/mysql
14cd /usr/local/mysql/bin
15# 初始化数据,成功初始化后需要记录最后 root@localhost: 后的字符串(初始化失败则不显示),它是后面进入 bash 环境的初始密码
16./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
17
18# vim /etc/my.cnf(没有该文件手动创建) 修改内容
19basedir=/usr/local/mysql
20datadir=/usr/local/mysql/data
21port = 3306
22
23# 启动MySQL服务 启动成功会有 Starting MySQL.. SUCCESS! 提示;否则就是启动失败,根据提示查看日志记录定位问题
24cd /usr/local/mysql/support-files/
25mysql.server start
26
27# 添加软链接并重启服务
28ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
29ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
30service mysql restart
31# systemctl restart mysql
32
33# 添加开机自启
34# 1、将服务文件拷贝到 init.d 下,并重命名为 mysql
35cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
36# 2、赋予可执行权限
37chmod +x /etc/init.d/mysqld
38# 3、添加服务
39chkconfig --add mysqld
40# 4、显示服务列表
41chkconfig --list
点击展开查看更多

至此,安装任务基本完成,下面需要添加用户并分配权限,进入 MySQL 的 bash 环境需要之前进行初始化时生成的密码。

BASH
 1# 登录 MySQL,密码使用初始化成功时 root@localhost: 后的字符串
 2mysql -u root -p
 3
 4# 修改密码 毕竟那么不好记
 5# 而且如果不修改 它会报 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 的错误
 6alter user root@'localhost' identified by 'newpassword';
 7flush privileges;
 8
 9# 开放远程连接
10use mysql;
11# ① MySQL 8.0 之前的版本,password 为自己设置的密码
12grant all privileges on *.* to 'root'@'%' identified by 'password';
13
14# ② 适用于 MySQL 8.0 之后的版本,推荐先创建一个用户 dev,再进行授权
15# 直接授权给 root
16# grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
17create user dev@'%' identified by '123456';
18grant select,update,delete,insert on *.* to dev@'%' with grant option;
19
20# 刷新权限,这一句很重要,使修改生效,如果没有写,则还是不能进行远程连接。这句表示从mysql数据库的grant表中重新加载权限数据,因为MySQL把权限都放在了cache中,所以,做完修改后需要重新加载。
21flush privileges;
点击展开查看更多

初始化成功截图:

初始化成功截图

记录日志最末尾位置 root@localhost: 后的字符串,此字符串为mysql管理员临时登录密码。

问题一:密码正确但是进不去 bash 环境

BASH
1ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO)
点击展开查看更多

解决方法:

  1. 使用 kill 命令停止 mysqld 相关服务
  2. cd /usr/local/mysql/bin/,运行命令: mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
  3. 使用密码登录数据库 mysql -u root -p 并切换到 mysql 数据库
  4. 执行命令:update user set host='%' where user='root';

问题二:预读处理

BASH
1mysql> use dbname;
2Reading table information for completion of table and column names
3You can turn off this feature to get a quicker startup with -A
点击展开查看更多

这个问题是之前使用的 apt-get 管理工具安装的 MySQL 出现的,原因是因爲數據庫採用了預讀處理。解决办法就是在我们进入MySQL的bash环境时,需要加入 -A 参数,不让其预读数据库信息,mysql -u root -p -A。如果覺得每次进入 bash 环境都要添加参数比较麻烦,也可以在 my.cnf 文件里加上如下內容:

BASH
1[mysql]
2no-auto-rehash
点击展开查看更多

问题三:Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)

这是 my.cnf 的配置问题,下面的三块内容必须都要设置,不然就会使用默认的 socket,位于 /tmp/mysql.sock 目录,因此我们最好配置一下:

CONF
 1[mysqld]
 2basedir=/usr/local/mysql
 3datadir=/usr/local/mysql/data
 4socket=/usr/local/mysql/mysql.sock
 5port=3306
 6
 7[client]
 8default-character-set=utf8
 9socket=/usr/local/mysql/mysql.sock
10
11[mysql]
12default-character-set=utf8
13socket=/usr/local/mysql/mysql.sock
点击展开查看更多

或者我们打一个软链接:

BASH
1ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock
点击展开查看更多

三、附

1. 关于源码编译安装失败

如果源码编译失败,先确认所需依赖是否全部成功安装,然后清除上一次编译的缓存,之后再次编译,不然会一直失败。参考网址

BASH
1# 清除上一次编译失败的缓存
2make distclean
3# 再次编译
4make
点击展开查看更多

2. 防火墙

CentOS 版本不同采用的防火墙管理也不同(当然,我们部署后可以安装)。CentOS 6 使用的 iptables,CentOS 7 使用的 firewall

CentOS 7 firewall 基础使用

BASH
 1# 查询开放端口
 2firewall-cmd --list-port
 3# 开放端口
 4firewall-cmd --zone=public --add-port=8080/tcp --permanent
 5# 禁用端口
 6firewall-cmd --zone=public --remove-port=8083/tcp --permanent
 7# 重新加载
 8firewall-cmd --reload
 9# 再次查询开放端口
10firewall-cmd --list-port
点击展开查看更多

CentOS 6 iptables 基础使用

BASH
 1# 启动
 2service iptables start
 3
 4# 关闭
 5service iptables stop
 6
 7# 查看状态
 8service iptables status
 9
10# 开机禁用
11chkconfig iptables off
12
13# 开机启用
14chkconfig iptables on
15# 允许本地回环接口(即运行本机访问本机) -A和-I参数分别为添加到规则末尾和规则最前面。
16iptables -A INPUT -i lo -j ACCEPT
17# 允许已建立的或相关联的通行
18iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
19# 允许所有本机向外的访问
20iptables -P INPUT ACCEPTiptables -A OUTPUT -j ACCEPT
21
22# 允许访问22端口 -s后可以跟 IP 段或指定 IP 地址,如果有其他端口的话,规则也类似。
23iptables -A INPUT -p tcp --dport 22 -j ACCEPT
24iptables -A INPUT -p tcp -s 10.159.1.0/24 --dport 22 -j ACCEPT
25
26# 允许ping
27iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
28
29# 禁止其他未允许的规则访问
30iptables -A INPUT -j REJECT
31iptables -A FORWARD -j REJECT
32
33# 屏蔽单个IP
34iptables -I INPUT -s 123.45.6.7 -j DROP
35# 封整个段即从123.0.0.1到123.255.255.254
36iptables -I INPUT -s 123.0.0.0/8 -j DROP
37# 封IP段即从123.45.0.1到123.45.255.254
38iptables -I INPUT -s 124.45.0.0/16 -j DROP
39# 封IP段即从123.45.6.1到123.45.6.254
40iptables -I INPUT -s 123.45.6.0/24 -j DROP
41
42# 查看已有规则 -n:只显示IP地址和端口号,不将 IP 解析为域名
43iptables -L -n
44
45# 将所有 iptables 以序号标记显示
46iptables -L -n --line-numbers
47
48# 添加规则
49# 添加的规则是添加在最后面。如针对 INPUT 链增加一条规则,接收从 eth0 口进入且源地址为192.168.0.0/16网段发往本机的数据
50iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j ACCEPT
51
52# 删除规则
53iptables -D
54# 删除所有规则
55iptables -F
56
57# 备份规则
58iptables-save > /etc/sysconfig/iptables.save
59# 使用规则
60iptables-restore < /etc/sysconfig/iptables.save
61
62# 重启生效
63service iptables save
64service iptables restart
点击展开查看更多

开放端口

方法一:通过命令行

BASH
1iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2service iptables save
3service iptables restart
点击展开查看更多

方法二:编辑配置文件

编辑配置文件:vi /etc/sysconfig/iptables,添加:

BASH
1iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2service iptables restart
点击展开查看更多

3. 恢复系统初始状态

BASH
1yum clean all
2yum history list all
3yum history undo 1
点击展开查看更多

版权声明

作者: 浮生一梦

链接: /posts/2025/10/centos-server-config/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

评论

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键