CentOS7基础配置

  1. 以下所有配置均基于CentOS7 2009版
    1. systemctl start xxxx只是启动服务,并不会使此服务自动加载,要自动加载需执行systemctl enable xxxx
    2. rpm -ivh或rpm  -Uvh 都是安装指定的rpm 包,后者会更新。对于下载的包而言,一般没区别。
    3. 如果装错了包,可通过rpm -qa | grep -i “xxx”的方式先查询,再通过rpm -e xxxx的方式删除;注意:删除时的包名不需要带.x86_x64这样的后缀;
    4. service文件的目录:
      1. /usr/lib/systemd/system/ 此目录中保存可用的service配置文件,这里的service不会自动运行;
      2. /etc/systemd/system/multi-user.target.wants 此目录中保存系统启动时自动加载的service
      3. 执行enable命令时,实际是从目录1复制到目录2
    5. yum执行过程中异常结束后提示被锁定时,直接rm -rf /var/run/yum.pid即可!
  2. 配置网络,注意事项:
    1. 修改主机名:/etc/hostname
      1. 也可通过hostnamectl命令来修改;
      2. 主机名为分静态,瞬时(当前)与pretty。
        1. static是静态保存的(持久化的,每次启动时都会加载此主机名;
        2. 瞬时(transiet)主机名是系统使用的当前主机名,可通过hostnamectl修改,但只当前有效,并不写入hostname,重启时丢失;
        3. pretty相当于一个可使用任意字符的主机名,可读性更强,但不适合底层网络命令。
      3. 通过systemctl restart network可重新加载主机名
        1. 当static==transiet时,只显示static
    2. ONBOOT=yes;否则相当于网卡禁用状态;网卡灯亮,但ifconfig无IP地址;
    3. 静态与动态IP地址配置;
    4. DNS配置是自动写入/etc/resolv.conf的,每次重启时都会重新生成resov.conf文件,因此除非是临时的,否则不可直接修改此文件;
    5. 通过在/etc/sysconfig/network-scripts/ifcfg-**###(网卡配置文件)中增加PEERDNS=no的方式,防止此网卡的DNS配置写入resolv.conf
    6. 一般情况下,执行systemctl restart network可以启动重启网络配置的效果,无需reboot;
    7. 多网卡配置:
    8. IPv6禁用:
  3. 更新yum
    1. yum update
    2. 安装以下不存在的基础包:
      1. vim telnet lsof nano ntp
      2. psmisc
      3. wget curl(默认应该有)net-tools(ifconfig trace…) nc tcpdump
      4. top htop iotop iftop
      5. tree git unzip lrzsz
      6. el7 2009版默认安装了curl,可以确认一下是否已安装
    3. 替换阿里或其它源
      1. yum的库配置文件位于/etc/yum.repos.d/,后续操作的本质是替换CentOS-Base.repo文件,因此需先备份。
      2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
      3. 下载后执行yum makecache生成缓存(生效)
    4. 安装EPEL库
      1. yum install epel-release   这个是标准版,外网地址
      2. yum -O /etc/yum/repos.d/epel.repo http://mirrors/aliyun.com/repo/epel-7.repo
  4. 关闭防火墙 
    1. systemctl disable firewalld  禁止服务的自动启动
    2. systemctl stop firewalld 停止当前运行,上一命令不会停止当前正在运行的防火墙服务!!!
    3. firewall-cmd –state 查看服务的当前运行状态
  5.   关闭SELinux
    1. sestatus -v 查看状态 默认安装时是enabled
    2. setenforce 0 临时关闭
    3. 修改/etc/selinxu/config文件,改为disable 永久生效
  6. 安装python3及更换源(可选)
    1. 先安装yum install python3
    2. 安装完python3后默认带有pip3命令
    3. 更换源:
      1. 创建~/.pip目录,并在其中创建pip.conf文件
      2. 配置文件内容参考:
      3.  [global]
        index-url=https://pypi.tuna.tsinghua.edu.cn/simpletrusted-host = pypi.tuna.tsinghua.edu.cn
      4. 国内镜像列表:
         http://pypi.douban.com/simple/ 豆瓣http://mirrors.aliyun.com/pypi/simple/ 阿里http://pypi.hustunique.com/simple/ 华中理工大学http://pypi.sdutlinux.org/simple/ 山东理工大学http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学https://pypi.tuna.tsinghua.edu.cn/simple 清华
      5. 配置好镜像后可执行pip3 config list查看是否成功;如果提示config命令未知,则执行:
  7. 安装java
    1. 打开页面:https://www.oracle.com/java/technologies/downloads/
      1. 注意拖到底部才有java8,默认是java17或更新的稳定版本)
    2. 选择rpm的版本下载,注意可能需要登录不可直接复制链接使用wget命令
    3. 直接使用rpm -ivh 安装即可
  8. 安装Ruby
    1. 默认的是2.0版本,太低;
    2. 先安装这个源:yum install -y centos-release-scl-rh
    3. 然后通过yum list rh-ruby*查看可安装的版本,比如:rh-ruby24 27 30等;注意它不是以版本号的形式存在的,而是完全不同的包;
    4. yum安装;
    5. 执行:scl enable rh-ruby24 bash  使配置生效,注意rh-ruby24中的24要替换为你实际安装的版本;
    6. 执行:ruby -v确认版本升级是否成功。
  9.  安装ERLang
    1. C7的yum库中是R16B的版本,太低,不适合RabbitMQ等组件;
    2. 打开:https://www.erlang-solutions.com/downloads/
    3. 查找合适的rpm包下载,并上传后用rpm  -uvh命令安装
    4. 缺少包:
  10. 安装RabbitMQ 
    1. 先查询最新的稳定发布版:
      1. https://github.com/rabbitmq/rabbitmq-server/releases
      2. https://www.rabbitmq.com/install-rpm.html#downloads
      3. 下载相应的版本, 注意是el7.rpm
    2. 通过rpm -Uvh安装,RMQ 3.9.X版本在已经正确安装ERlang 24(23以上)版本的情况下无其它异常提示。
    3. rabbitmq-plugins enable rabbitmq_management  启用UI插件
    4. 启动systemctl start rabbitmq-server
    5. 自动启动systemctl enable rqbbitmq-server
    6. 新增用户:
      1. 默认情况下的guest用户只能在本机登录UI,可通过修改配置文件的方式解决此问题;但更简单的是新增一个用户;
      2. rabbitmqctl add_user 用户名 密码
      3. rabbitmqctl set_user_tags 用户名 administrator  #最后的administrator是固定的 用户名是之前新增的用户
      4. rabbitmqctl set_permissions -p / 用户名 “.*” “.*” “.*”   这是给指定用户,对“/”授予全部权限!否则将出现用户可登录,可管理,但不能创建交换机(包括用程序接口创建)的问题。
    7. 注意:以上配置增加的是权限极高的管理员用户,请确认需要上述权限。
  11. 安装Redis
    1. 安装base+epel之后的redis只有Redis3(如:3.2.12),不可直接安装Redis5
    2. 方案一:作废:安装IUS Repo(此repo依赖EPEL,必须先安装epel)
      1. 根据此文内容(https://blog.yowko.com/yum-install-redis5/)以下两个二选一(后者为官网方法)
      2. yum install -y https://repo.ius.io/ius-release-el7.rpm
      3. yum install -y https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      4. 使用官网链接安装成功
      5. 安装说明:
    3. 方案二:remi
    4. 安装完之后通过yum install redis5安装即可
      1. 注意,此命令安装的版本并非最新版。20211002安装时的IUS版本为5.0.9而官网的版本为5.0.13
    5. 默认安装的redis是绑定127.0.0.1地址的,将无法直接连接,先修改配置文件/etc/redis.conf
    6. 源码编译安装(手工安装,一般不推荐,仅当必须指定的版本且repo中没有时使用)
      1. 下载.tar.gz并解压
      2. 执行make;如果出现了“jemalloc/jemalloc.h: No such file or directory”或其它类似错误,先尝试make clean,尤其对于上次编译出错的情形可能适用;
      3. 执行make test检查编译结果
        1. 如果提示缺少tcl8.5,则可以安装yum install tcl或yum install expect,安装之后编译测试通过
      4. 执行make install安装,相应的文件会复制到默认的目录下;
        1. 安装到/usr/local/bin目录
        2. 复制了redis-server redis-benchmark redis-cli redis-check-rdb redis-check-aof redis-sentinel等文件
        3. 这种方式只编译并安装了可执行的文件,不包括redis.service,需要自行编译。
      5. 可执行make uninstall命令反安装!!!
      6. 区别比较:
        1. 编译版本安装到/usr/local/bin/目录下
        2. yum版本安装到/usr/bin目录下
        3. 编译版本没有redis.service文件。
        4. yum版本的service文件示例如下:(注意其中的文件路径)
        5.  [Unit]Description=Redis persistent key-value databaseAfter=network.targetAfter=network-online.targetWants=network-online.target[Service]ExecStart=/usr/bin/redis-server /etc/redis.conf –supervised systemdExecStop=/usr/libexec/redis-shutdownType=notifyUser=redisGroup=redisRuntimeDirectory=redisRuntimeDirectoryMode=0755[Install]WantedBy=multi-user.target
  12. 安装Nginx
    1. 在安装了epel之后,可直接安装
    2. 注意是epel中的stable最新版本
    3. 注意安装好后的默认页面显示的是centos的LOGO且没有任何nginx字样,别怀疑。
Continue Reading

CentOS 7网络配置笔记

主要配置文件

网卡配置文件

/etc/sysconfig/network-scripts/ifcfg-xxxx 其中xxxx是网卡名;常见的有ens##,eth#等;

其中ifcfg-lo表示local,即:127.0.0.1地址。

DNS配置文件

/etc/resolv.conf

此文件是自动生成(覆盖)的,每次重启(reboot)或重启网络(systemctl restart network)此文件将重新生成;因此修改此文件只能影响“当前”配置,一旦重启配置将丢失。

配置心得

  1. 网卡需要配置ONBOOT=yes网卡才会被启用;未被启用的网卡将不会工作,相当于windows中的禁用;如果配置为no,则此时将发现连接上有线网络后有灯闪(绿),但却实际不能通信。信号灯仅表示mac的工作状态。
  2. 默认是动态IP,即:dhcp,一般无需修改其它配置;
  3. 配置静态IP时
    1. BOOTPROTO=static
    2. IPADDR=192.168.1.100
    3. GATEWAY=192.168.1.1
    4. NETMASK=255.255.255.0
  4. 配置DNS时
    1. DNS1=1.2.3.4
    2. DNS2=5.6.7.8
  5. DNS配置对resolv.conf的影响;
    1. PEERDNS=yes为默认值;网卡启动时此文件中的配置将影响(写入)resolv.conf文件;配置为no时,此网卡不影响resolv.conf文件;但根据实际测试结果:此时相应文件中配置的DNS并不会生效!
      1. 例如:在网卡A中配置peerdns=yes,且配置DNS1=1.2.3.4;在网卡B中配置peerdns=no,且配置DNS1=223.5.5.5;其中1.2.3.4是一个错误的DNS不可解析域名;重启网卡后resolv.conf中将只有nameserver=1.2.3.4,而不包括223.5.5.5;同时将无法解析域名。
    2. 对dhcp而言,将获取来自DHCP的配置;
    3. 对static而言,将获取DNS1/DNS2配置;
Continue Reading

Linux代理设置

网上找了一堆的教程,其实都提到了,但没提到关键的容易踩中的坑:两者的环境变量名不同!

  1. shell中可用的全局代理,是在/etc/profile文件或~/.bash_profile中export http_proxy=http://xxxx的方式实现;注意:环境变量名是http_proxy;
  2. yum则需要修改/etc/yum.conf文件,而其中的变量名是proxy!!!

Continue Reading

MySQL常用操作

安装

在CentOS7上安装MySQL Community Server 8.0

通过Yum安装的是mariadb,为安装社区标准版,做如下操作:

  1. 官网查找最新的rpm包(repo)的下载地址https://dev.mysql.com/downloads/repo/yum/
  2. 下载rpm包,对CentOS7上的MySQL8来说是这个:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  3. 安装rpm包到系统:rpm -ivh xxxxx.rpm 其中xxxx.rpm是上面下载的rpm文件
  4. 安装mysql,注意mysql是命令行客户端,需要安装mysql-community-server
  5. 配置my.cnf文件:lower_case_table_names
    • lower_case_table_names=1
    • 此配置一定要在第一次启动MySQL前完成,否则将导致异常冲突;
    • 强烈建议在启动之前指定数据目录,省去不必要的麻烦!
    • 默认情况下:Linux=0, Windows=1, OSX=2
    • 区别在于:0,保存表名时大小写敏感(与create table语句一致),查找(比较)时亦是;1,保存表名时统一转换为小写,查找时亦统一转换为小写查询;2,保存表名时大小写敏感(与create table语句一致),查询(比较)时统一都转换为小写。
  6. 配置my.cnf文件,其它:
    • sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    • 配置此内容是为应对部分MySQL5.7与8.0的语法不兼容的问题,例如5.7的数据库在升级到8.0时,datetime字段不支持0000-00-00的字符串作为默认值(Wordpress)将提示:Invalid default value for xxxx;
    • MySQL8不支持NO_AUTO_CREATE_USER,删除此项配置即可;
  7. 启动MYSQL,常规的7.0启动服务命令:systemctl start mysqld,注意后面的d;
  8. 首次启动后会在日志中生成默认密码,通过grep ‘temporary password’ /var/log/mysqld.log查看默认密码;
  9. 修改密码ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘root_new_pwd’;
  10. 或通过mysql还是mysqladmin连接一次会自动提示修改密码;
  11. 通过update user set host =’%’ where user=’root’;允许任意IP连接;
  12. 注意上述操作需要执行flush privileges;
  13. 注意,如果修改了数据、日志等文件的路径,则必须确认selinux已经关闭(如果不是CentOS,是Ubuntu等),则可能需要检查apparmor等配置,否则即使常规权限配置正确也会报权限错误的异常而不能正常启动;
  14. 如果修改了数据目录的指向,而初始化失败,则相应的目录下大概率有初始化的文件,下次启动时将因为已经存在文件而无法继续,所以如果初始化未成功,则下次初始化前应当手工清空此目录;

其它安装相关技巧

  1. rpm查询相关包:rpm -qa | grep “mysql”
  2. 删除相关rpm包:rpm -e –nodeps mariadb-server,其中mariadb-server是包名;
  3. 删除mysql的相关文件:sudo rm -rf /var/lib/mysql /var/log/mysqld.log
  4. 查看yum中的repo库:yum repolist
  5. 启用或禁用yum中某个安装包:sudo yum-config-manager –disable mysql80-community,其中–disable改为–enable即为启用;可以通过启用或禁用5.7或8.0版本来安装(当然也可直接指定版本安装);
  6. 查看密码策略:SHOW VARIABLES LIKE ‘validate_password%’;
  7. 本机启用防火墙的情况下,添加防火墙规则:firewall-cmd –zone=public –add-port=3306/tcp –permanent,还需要通过firewall-cmd –reload加载一次方能生效。
  8. 可以通过创建root@%的新用户的方式来允许远程IP连接入;需要执行如下指令:
    1. CREATE USER ‘root’@’%’ IDENTIFIED BY ‘root’;
    2. GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;

补充:

  1. 在执行完update user set host=’%’之后应当执行flush privileges,否则外部仍然不能登录;
  2. 下载MySQL的bundle版本后,只需解压,里面包含了所有需要(依赖)的rpm包;
  3. mysqld –initialize 将住所/etc/my.cnf指定的参数(数据目录)重新初始化基础数据库,初始化之前必须先停服务并删除默认数据目录指向的目录中的所有数据;用root帐户执行initialize时,所有数据权限为root而运行必须是mysql,因此需要chmod -R mysql:mysql,否则将无法启动;
Continue Reading