CentOS服务器环境配置


CentOS服务器环境配置

网络,yun源配置

  • 一般都是配置好的
    # internet
    /etc/sysconfig/network-scripts/ifcfg-eth0
    # yum repo
    /etc/yum.repos.d/CentOS-Base.repo
    # 更换清华yum源
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    # 更新软件包缓存
    sudo yum makecache

MySQL yum安装

# 下载官方的yum源
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
# Rocky Linux 9的OpenSSL是3.x,需要el9-1构建,使用下面的yum源
wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
# 安装rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 查看mysql的版本,默认是8.0
yum list|grep mysql
# 这个yum源支持多版本的mysql,所以可以修改一下安装的版本
vim /etc/yum.repos.d/mysql-community.repo
#将enabled置为1的就是要下载的版本,这里把connectors和tools取消
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# 查看是否是正确的版本
yum repolist enabled | grep mysql
#安装mysql
yum install mysql-community-server --nogpgcheck
#可能遇到的错误 Error: GPG check FAILED
使用 yum install xxx.rpm --nogpgcheck跳过公钥检查
yum install mysql-community-server --nogpgcheck
# 启动mysql并查看状态
systemctl start  mysqld.service
systemctl status mysqld.service
#找到root用户的密码
grep "password" /var/log/mysqld.log
mysql -uroot -pxxxx
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 如果需要若密钥,修改规则
set global validate_password_policy=0;
set global validate_password_length=1;
# mysql8.0
SET GLOBAL validate_password.policy = 0;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'the password';
# 远程访问
use mysql;
update user set host='%' where user='root';
# 新建用户
CREATE USER 'zwq'@'%' IDENTIFIED BY 'xxxxx';
GRANT ALL ON *.* TO 'zwq'@'%';
flush privileges;
# 防火墙
systemctl status firewalld
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
yum list installed
# 删除mysql yum源
yum -y remove mysql80-community-release.noarch

MySQL 二进制包安装

  • 下载解压
    下载https://dev.mysql.com/downloads/mysql
    tar -xvf mysql-8.4.11-linux-glibc2.28-x86_64-minimal.tar.xz
    mv mysql-8.4.11-linux-glibc2.28-x86_64-minimal /usr/local/mysql
    chown -R mysql:mysql /usr/local/mysql
  • 添加用户,创建相关文件夹
    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    mkdir -p /var/lib/mysql /var/log/mysql /var/run/mysql
    chown -R mysql:mysql /var/lib/mysql /var/log/mysql /var/run/mysql
    chmod 750 /var/lib/mysql
  • 配置文件
    mkdir /etc/mysql
    vi /etc/mysql/my.cnf
    [client]
    socket=/var/lib/mysql/mysql.sock
    port=3306
    
    [mysqld]
    bind-address=0.0.0.0
    port=3306
    user=mysql
    basedir=/usr/local/mysql
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    log-error=/var/log/mysql/mysql.err
    pid-file=/var/run/mysql/mysql.pid
    max_connections=1000
    max_user_connections=200
    wait_timeout=600
    character_set_server=utf8mb4
    symbolic-links=0
    explicit_defaults_for_timestamp=true
    lower_case_table_names=1
    open_files_limit=65535
  • 初始化
    cd /usr/local/mysql/bin
    ./mysqld --defaults-file=/etc/mysql/my.cnf --initialize
    可能报错shared libraries: libaio.so.l:cannot open shared object file: no such file ...
    相关依赖
    yum -y install libaio  ncurses-compat-libs  numactl-libs
    查看初始密码
    cat /var/log/mysql/mysql.err or grep 'temporary password' /var/log/mysql/mysql.err
  • 系统服务 vi /etc/systemd/system/mysql.service
    [Unit]
    Description=MySQL Server
    After=network.target
    
    [Service]
    Type=simple
    # 指定启动脚本和停止脚本(直接使用mysql.server)
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/mysql/my.cnf
    
    # 指定运行用户和组
    User=mysql
    Group=mysql
    
    # PID 文件路径(必须与 my.cnf 中 pid-file 设置一致)
    RuntimeDirectory=mysql
    RuntimeDirectoryMode=0755
    PIDFile=/var/run/mysql/mysql.pid
    
    # 重启策略
    Restart=on-failure
    RestartSec=10
    
    LimitNOFILE=65535
    # 超时设置
    TimeoutSec=300
    
    [Install]
    WantedBy=multi-user.target
    systemctl daemon-reload
    systemctl enable mysql
    systemctl start mysql
    systemctl is-enabled mysql
  • 修改mysql密码,用户
    cd /usr/local/mysql/bin/
    ./mysql -u root -p
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
    CREATE USER 'root'@'%' IDENTIFIED BY 'xxx';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    CREATE USER 'zwq'@'%' IDENTIFIED BY 'xxx';
    GRANT ALL PRIVILEGES ON *.* TO 'zwq'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  • 环境变量
    echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
    source /etc/profile

JDK

rpm -ivh jdk-8u241-linux-x64.rpm
java -version

Redis

  • 用户
    useradd -r -s /sbin/nologin redis
  • 编译
    tar -zxvf redis-7.2.4.tar.gz
    mv redis-7.2.4 /usr/local/redis
    cd /usr/local/redis
    make MALLOC=libc
    cd src
    make install
  • 配置文件
    vi /usr/local/redis/redis.conf
    注释bind 127,使其能远程访问
    # bind 127.0.0.1
    protected-mode 改成yes
    daemonize 改成no
    dir /usr/local/redis
    pidfile /usr/local/redis/redis.pid  
    # 配置密码
    requirepass foobared
    requirepass xxxxx
    chown -R redis:redis /usr/local/redis
    chown root:redis /usr/local/redis/redis.conf
    chmod 640 /usr/local/redis/redis.conf
  • 内存过度提交overcommit_memory配置
    vi /etc/sysctl.conf
    vm.overcommit_memory = 1
    sysctl -p
    sysctl vm.overcommit_memory
  • 系统服务vi /etc/systemd/system/redis.service
  • 系统服务需要daemonize no | vi /usr/local/redis/redis.conf
    [Unit]
    Description=Redis
    After=network.target
    
    [Service]
    ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
    Restart=always
    RestartSec=3
    User=redis
    Group=redis
    
    SyslogIdentifier=redis
    LimitNOFILE=10032
    
    [Install]
    WantedBy=multi-user.target
    systemctl daemon-reload
    systemctl start redis
    systemctl enable redis
    journalctl -u redis -e
    # 测试密码
    cd /usr/local/redis
    ./src/redis-cli PING
    ./src/redis-cli -a '你的密码' PING

Nginx

  • 用户
    useradd -r -s /sbin/nologin -M nginx
  • 下载
    http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
    https://nginx.org/en/download.html
  • g++
    # Rocky Linux没有C++编译器(g++),需要安装
    dnf install gcc-c++
    g++ --version
  • pcre
    # 查看是否安装
    pcre-config --version
    tar zxvf pcre-8.35.tar.gz
    cd pcre-8.35
    ./configure
    make && make install
  • nginx
    # rockylinux中glibc版本较高,需要高版本nginx,可以用nginx-1.26.3
    tar zxvf nginx-1.26.3.tar.gz
    cd nginx-1.26.3
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_v3_module
    make
    make install
    /usr/local/nginx/sbin/nginx -v
    vi /usr/local/nginx/conf/nginx.conf
    user  nginx;
    chown -R nginx:nginx /usr/local/nginx/logs
  • 系统服务
    vi /etc/systemd/system/nginx.service
    [Unit]
    Description=nginx
    After=network.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/bin/kill -s HUP \$MAINPID
    ExecStop=/bin/kill -s TERM \$MAINPID
    PrivateTmp=true
    LimitNOFILE=65535
    Restart=on-failure
    RestartSec=10s
    TimeoutStartSec=120s
    
    [Install]
    WantedBy=multi-user.target
    systemctl daemon-reload
    systemctl enable nginx
    systemctl start nginx
    systemctl status nginx
  • 预编译
    #下载
    nginx-common_1.18.0-6ubuntu14.10_all.deb
    nginx-core_1.18.0-6ubuntu14.10_amd64.deb
    nginx_1.18.0-6ubuntu14.10_amd64.deb
    #安装
    sudo dpkg -i nginx-common_1.18.0-6ubuntu14.10_all.deb
    # 强制安装 core(忽略依赖)
    sudo dpkg -i --force-depends nginx-core_1.18.0-6ubuntu14.10_amd64.deb
    # 强制安装 nginx
    sudo dpkg -i --force-depends nginx_1.18.0-6ubuntu14.10_amd64.deb
    # 修复依赖关系
    sudo apt --fix-broken install -y

  目录