此篇文章以后随缘更新,这个系统的相关问题网上一般都有答案,浪子个人已不再使用 CentOS 系统。
一、CentOS7最小安装
1、配置网卡
先进行网络的连接,编辑网络配置文件(vi /etc/sysconfig/network-scripts/ifcfg-ens32
),不同的机器最后的文件名称可能不同,一般都是 ifcfg-
开头。
1# 空着的部分自定义即可
2BOOTPROTO=static
3ONBOOT=yes
4IPADDR=
5NETMASK=
6GATEWAY=
7DNS1=
设置完成后,保存退出,使用命令 systemctl restart network
重启网卡。
2、关闭防火墙以及 Linux 的一些安全策略
1systemctl stop firewalld
2systemctl disable firewalld
3
4sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
5
6setenforce 0
3、设置镜像源
配置本地 yum 源(标准版或者全量版)
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 镜像进行一些工具的安装(工具都在镜像中,但是未安装),在内网的情况下安装系统这样比较方便。
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
,这就是安装软件时读取的安装源配置,加入以下内容,先使用本地镜像安装。
1[linux]
2name=linux
3baseurl=file:///mnt/cdrom
4gpgcheck=0
5enabled=1
接下来就可以安装一些镜像中包含的工具后再取消挂载。后面就可以安装自己上传的离线包嘞!
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配置(可以不修改,按照默认的即可,这里仅仅是偏好)
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命令
1# 安装
2rpm -ivh xxx.rpm
3# 卸载
4rpm -evh xxx.rpm
5# 更新
6rpm -Uvh xxx.rpm
7# 显示所有已安装软件
8rpm -qa
7. lrzsz:文件上传下载
1# 安装
2yum install -y lrzsz
3# 下载
4sz
5# 上传
6rz
二、部署服务
1. Redis
{% link https://redis.io/download/ 官网源码下载 %}
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环境搭建
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 二进制文件包下载 %}
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/ 源码下载 %}
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/ 官网源码下载 %}
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同步仓库 %}
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使用 %}
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
是默认自带的,卸载的时候删不删都没有问题,如果默认没有这个文件也不必担心,可以手动添加。
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 环境需要之前进行初始化时生成的密码。
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 环境
1ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO)
解决方法:
- 使用 kill 命令停止 mysqld 相关服务
- cd /usr/local/mysql/bin/,运行命令:
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
- 使用密码登录数据库 mysql -u root -p 并切换到 mysql 数据库
- 执行命令:
update user set host='%' where user='root';
问题二:预读处理
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
文件里加上如下內容:
1[mysql]
2no-auto-rehash
问题三:Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)
这是 my.cnf
的配置问题,下面的三块内容必须都要设置,不然就会使用默认的 socket,位于 /tmp/mysql.sock
目录,因此我们最好配置一下:
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
或者我们打一个软链接:
1ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock
三、附
1. 关于源码编译安装失败
如果源码编译失败,先确认所需依赖是否全部成功安装,然后清除上一次编译的缓存,之后再次编译,不然会一直失败。参考网址
1# 清除上一次编译失败的缓存
2make distclean
3# 再次编译
4make
2. 防火墙
CentOS 版本不同采用的防火墙管理也不同(当然,我们部署后可以安装)。CentOS 6 使用的 iptables,CentOS 7 使用的 firewall。
CentOS 7 firewall 基础使用
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 基础使用
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
开放端口
方法一:通过命令行
1iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2service iptables save
3service iptables restart
方法二:编辑配置文件
编辑配置文件:vi /etc/sysconfig/iptables
,添加:
1iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2service iptables restart
3. 恢复系统初始状态
1yum clean all
2yum history list all
3yum history undo 1
评论