作者: zel

  • Linux – mysql数据库的安装配置与使用

    mysql数据库的配置与使用

    安装mysql

    使用官方仓库安装

    Centos:

    首先导入 MySQL 官方的 Yum 源配置文件:

    sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm

    默认启用的是 MySQL 8.0,如果需要安装 5.7 版本,需修改配置文件:

    sudo vi /etc/yum.repos.d/mysql-community.repo

    [mysql57-community] 部分的 enabled=0 改为 enabled=1

    并将 [mysql80-community]enabled=1 改为 enabled=0

    Ubuntu:

    sudo apt update
    sudo apt install -y mysql-server

    默认安装的依然是 mysql 8.0 版本

    要安装 5.7 版本则需要添加 MySQL 官方源

    wget -qO - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo apt-key add -
    echo "deb http://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-5.7" | sudo tee /etc/apt/sources.list.d/mysql.list
    sudo apt update

    然后安装时指定 5.7 版本

    sudo apt install -y mysql-server-5.7

    安装完成后,启动服务并添加开机启动

    sudo yum install -y mysql-community-server
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    编译安装
  • Centos – 搭建私有软件yum源

    Centos – 搭建私有软件yum源

    Centos搭建私有软件yum源

    环境准备

    需要先安装好nginx,并将站点开启目录访问功能

    [postsbox post_id=15]

    建立软件源

    将RPM包放置nginx站点目录下

    RMP包一般通过系统安装映像获取,但是一般不是最新的

    安装 createrepo 用作建立索引

    yum install createrepo -y

    生成仓库索引文件,自行替换为自己的站点目录

    createrepo /usr/local/nginx/html/

    使用自建软件源

    客户端创建软件源文件

    vim /etc/yum.repos.d/myyum.repo

    文件内容如下,将 baseurl 替换为自己的IP或域名即可

    [test]
    name=yum test
    baseurl=http:/example.com
    enabled=1
    gpgcheck=0
    gpgkey=http://zelt.cn/RPM-GPG-KEY-TESTREPO

    软件源参数说明

    参数说明

    enabled 1为启用 改为0关闭

    gpgcheck key配对开关 参数为1开 0关

  • Linux – Nginx的安装与配置

    Linux – Nginx的安装与配置

    系统软件源直接安装

    使用命令一键安装

    Centos:

    yum install nginx -y

    Ubuntu:

    apt update
    apt install -y nginx

    nginx配置文件默认保存在 /etc/nginx

    其中 conf.d 的子文件夹中会有一个默认战队

    默认站点在 /var/www/html/,可以直接将网页存放至该目录后访问IP即可

    编译安装

    环境准备

    [postsbox post_id=7]

    获取nginx源码

    下载并解压下载的源码包

    wget https://nginx.org/download/nginx-1.28.0.tar.gz
    tar -zxf nginx-1.28.0.tar.gz

    这里下载的是nginx发行版1.28.0

    如需获取最新的nginx发行版本通过 Nginx官方下载页面 进行下载

    编译安装

    切换到解压的目录,开始进行安装

    默认参数安装:

    ./configure
    make
    make install

    命令解释:

    ./configure 为编译前检查,如果环境安装错误,则会报错,后续无法执行make进行编译

    make 编译源码获取运行文件与配置文件等

    make install 将编译后的结果安装至系统

    也可以一键运行,在没有报错时,会依次执行该3个命令

    直接运行 make install 也会直接编译,并安装

    ./configure && make install

    默认会将nginx安装至 /usr/local/nginx 的目录下

    默认不带参数安装不带ssl模块,这会导致无法开启https

    要开启https需要添加ssl参数

    ./configure \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module \
    --prefix=/usr/local/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --sbin-path=/usr/sbin/nginx \
    --error-log-path=/var/log/nginx/nginx_error.log \
    --http-log-path=/var/log/nginx/nginx_access.log \
    --pid-path=/usr/local/nginx/run/nginx.pid \
    --with-http_image_filter_module \
    --with-pcre \
    && make && make install

    编译参数说明

    参数名称 意义
    --user=nginx 指定启动用户
    --group=nginx 指定启动用户组
    --prefix=/usr/local/nginx 指定安装目录
    --conf-path=/etc/nginx/nginx.conf 指定配置文件路径
    --sbin-path=/usr/sbin/nginx 指定nginx的sbin目录,可执行文件的安装路径
    --error-log-path=/var/log/nginx/nginx_error.log 指定nginx错误日志存放路径
    --http-log-path=/var/log/nginx/nginx_access.log 指定nginx访问日志存放路径
    --pid-path=/usr/local/nginx/run/nginx.pid 指定nginx运行时的pid存放路径
    --with-http_image_filter_module 图片过滤处理模块
    --with-pcre pcre模块

    如果指定启动用户,需要创建一个无法登陆用户

    创建nginx用户组

    创建nginx用户并加入用户组,指定不创建home目录且shell设为/sbin/nologin

    groupadd -r nginx
    useradd -r -g nginx -d /var/cache/nginx -s /sbin/nologin -c "nginx user" nginx

    日志的变量

    变量名称 意义
    $remote_addr 用以记录客户端的IP地址
    $http_x_forwarded_for 用以记录客户端的IP地址(可记录代理前的真实IP)
    $remote_user 用来记录客户端用户名称(需HTTP认证)
    $time_local 用来记录访问时间与时区
    $request 用来记录请求的URL与HTTP协议
    $status 用来记录请求状态(如成功是200)
    $body_bytes_sent 记录发送给客户端文件主体内容大小
    $http_referer 用来记录从哪个页面链接访问过来的

    配置文件解析

    参数名称 意义
    user nginx 设置nginx服务的系统使用用户
    worker_processes auto 工作进程数,一般和CPU数保持一致
    error_log /var/log/nginx/error.log 错误日志的保存路径
    pid /run/nginx.pid 存放nginx服务启动时的pid文件路径
    use epoll epoll 是多路复用IO(I/O Multiplexing)中的-一种方式,
    但是仅用于linux2 .6以上内核,可以大大提高nginx 的性能
    events 如1个worker能同时允许多少连接
    include /etc/nginx/default.d/*.conf 加载某个目录下所以的.conf文件

    Server模块下

    参数名称 意义
    listen 80 监听端口(默认为HTTP协议的80端口)
    listen [::]:80 IPv6监听端口(用于支持IPv6协议)
    server_name test.com 域名(可配置多个,用空格分隔)
    root /usr/share/nginx/html 网站根目录(请求文件的查找路径)
    index index.php index.html index.htm 指定首页名称(按顺序查找,用于支持PHP或其他页面类型)

    进阶配置

    开启https(ssl)

    # HTTPS 服务器配置
    server {
        listen 443 ssl http2;
        server_name example.com;  # 替换为你的域名
    
        # SSL证书和私钥路径
        ssl_certificate /path/to/cert.pem;       # 证书文件
        ssl_certificate_key /path/to/key.pem;   # 私钥文件
    
        # SSL会话缓存和超时
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
    
        # TLS版本和加密套件(推荐配置)
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    
        # HSTS(HTTP严格传输安全)
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    
        # 其他安全头
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
    
        # 网站根目录和默认文件
        root /var/www/html;
        index index.php index.html;
    
        # 其他配置(如PHP解析、反向代理等)
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    }

    目录浏览功能

    在server块中添加

    autoindex on; # 开启目录文件列表
    autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
    autoindex_localtime on; # 显示的文件时间为文件的服务器时间
    charset utf-8,gbk,gb2312; # 避免中文乱码

    开启PHP

    需要先安装PHP

    [postsbox post_id=9]

    将一下代码添加进server模块中

    一般php-fpm的默认端口是9000

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;  # PHP-FPM监听地址
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    反向代理

    将代码配置进Server模块中,并将后端地址替换即可

    有其他的特殊地址问题,需要进行特殊处理

    location / {
            proxy_pass http://backend_server;  # 后端服务器地址
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
    
            # 可选性能优化参数
            proxy_connect_timeout 30s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;
            proxy_buffering on;
            proxy_buffer_size 4k;
            proxy_buffers 4 32k;
            proxy_busy_buffers_size 64k;
        }

    开机自动启动

    编译安装的nginx不会安装成为系统服务,需要手动添加

    添加nginx服务

    vim /usr/lib/systemd/system/nginx.service

    配置文件如下,路径需要改为自己安装的路径:

    [Unit]
    Description=nginx
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s quit
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target

    保存并重新载入服务

    systemctl daemon-reload

    控制命令:

    systemctl start nginx 开启服务

    systemctl stop nginx 关闭服务

    systemctl status nginx 服务状态

    systemctl restart nginx 重启服务

    systemctl reload nginx 不关闭服务并重新载入配置

    添加开机启动 创建一个脚本文件 vi /etc/init.d/nginx

    #!/bin/bash
    # nginx Startup script for the Nginx HTTP Server
    # it is v.0.0.2 version.
    # chkconfig: - 85 15
    # description: Nginx is a high-performance web and proxy server.
    # It has a lot of features, but it's not for everyone.
    # processname: nginx
    # pidfile: /usr/local/nginx/logs/nginx.pid
    # config: /usr/local/nginx/conf/nginx.conf
    nginxd=/usr/local/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/conf/nginx.conf
    nginx_pid=/usr/local/nginx/logs/nginx.pid
    RETVAL=0
    prog=nginx
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = no ] && exit 0
    [ -x $nginxd ] || exit 0
    # Start nginx daemons functions.
    start() {
    if [ -e $nginx_pid ];then
    echo nginx already running....
    exit 1
    fi
    echo -n
    <pre wp-pre-tag-1="">
    quot;Starting $prog: 
    daemon $nginxd -c ${nginx_config}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
    return $RETVAL
    } # Stop nginx daemons functions.
    stop() {
    echo -n
    <pre wp-pre-tag-1="">
    quot;Stopping $prog: 
    killproc $nginxd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
    }
    # reload nginx service functions.
    reload() {
    echo -n
    <pre wp-pre-tag-1="">
    quot;Reloading $prog: 
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
    }
    # See how we were called.
    case $1 in
    start)
    start
    ;;
    stop)
    stop
    ;;
    reload)
    reload
    ;;
    restart)
    stop
    start
    ;;
    status)
    status $prog
    RETVAL=$?
    ;;
    *)
    echo
    <pre wp-pre-tag-1="">
    quot;Usage: $prog {start|stop|restart|reload|status|help}
    exit 1
    esac
    exit $RETVAL

    chmod a+x /etc/init.d/nginx给脚本执行权限

    echo /etc/init.d/nginx start >>/etc/rc.local 添加开机服务

    chmod +x /etc/rc.local 给开机服务添加执行权限

  • Centos – 搭建DHCP及路由转发

    安装DHCP服务

    1. 安装dhcp服务

      yum install dhcp -y
      systemctl start dhcpd

      2.编辑并替换DHCP服务配置文件

      DHCP配置文件路径 /etc/dhcp/dhcpd.conf
      配置文件如下,按需修改

      # DHCP Server Configuration file.
      #   see /usr/share/doc/dhcp*/dhcpd.conf.example
      #   see dhcpd.conf(5) man page
      #
      #ddns-update-style ad-hoc;
      default-lease-time 21600;
      max-lease-time 43200;
      #DHCPDARGS=eth2
      option domain-name "a.com";
      option domain-name-servers 114.114.114.114, 223.5.5.5;#给主机获取的DNS服务器
      log-facility local7;
      shared-network "netname" {
      subnet 192.168.0.0 netmask 255.255.255.0 {  #分配的IP网段
      range 192.168.0.10 192.168.0.254;      #分配的IP范围
      option routers 192.168.0.1;             #默认网关
      option broadcast-address 192.168.0.255;   #广播地址
      #下面为静态IP设置
      #host 名称()
      # MAC地址与IP绑定
      host tplink {
      hardware ethernet 7C:B5:9B:2B:CC:A3;
      fixed-address 192.168.0.4;
      }
      host openwrt {
      hardware ethernet 50:64:2B:AB:A1:1B;
      fixed-address 192.168.0.2;
      }
      }
      }

      3.让DNS服务通过防火墙,否则其他客户端无法正常获取IP

      firewall-cmd --add-service=dns --permanent

    路由转发

    如果要将机器作为路由器上网,需要开启ip流量转发功能

    第一钟方法:直接允许IP转发

    firewall-cmd --add-masquerade --permanent

    第二种: 将内网外网网卡分开管理

    首先输入来查看当前防火墙配置

    firewall-cmd --list-all

    假设接口 interfaces:eth1 eth2 两个

    先配置外网接口:

    查看外网接口 查看masquerade属性是否是YES

    firewall-cmd --list-all --zone=external

    设置成外网接口,例如把eth1设置成外网接口WAN并永久生效,

    然后重启防火墙让其生效

    firewall-cmd --change-interface=eth1 --zone=external --permanent
    firewall-cmd --comlpete-reload

    然后查看外网接口是不是eth1

    firewall-cmd --list-all --zone=external

    然后现在配置内网接口 把剩下的两张网卡配置成内网接口LAN:

    把eth2配置成内网接口并设置永久生效

    firewall-cmd --change-interface=eth2 --zone=internal --permanent

    这时 eht2就配置成永久内网了,为了以防万一 我们还是查看一下内网的接口配置是否成功

    输入 firewall-cmd --list-all 查看,但是此时查看的并不是内网接口,是未配置的防火墙接口

    所以我们还必须设置默认的接口区域

    firewall-cmd --set-default-zone=internal

    这时就把区域设置成内网接口LAN

    此时重启一下防火墙 firewall-cmd --complete-reload

    然后在输入 firewall-cmd --list-all 此时就会显示internal的接口的信息

    现在我为内网接口添加本地 DNS服务使其允许通过防火墙,重启防火墙生效

    firewall-cmd --zone=internal --add-service=dns --permanent
    firewall-cmd --complete-reload

    最后使用 firewall-cmd --list-all 检查

    此时在service就会显示dns(未添加之前键入此行代码会看不到DNS)

    到这里就配置完成了!

  • Centos – 部署PHP

    安装PHP

    1. 安装PHP7.2

      yum install -y php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-opcache php72w-pdo php72w-xml php72w-mysql php72w-intl php72w-pear
    2. 安装PHP7.3
      1.先安装remi软件源

      yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

      2.安装remi源的PHP7.3

      yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xml

      3.为PHP添加smbclient拓展

      yum install libsmbclient libsmbclient-devel -y
      pecl install smbclient

      4.执行完上面两条安装后为php启用该拓展

      echo extension=smbclient.so >>/etc/php.ini

      也可以直接在PHP配置文件最后添加extension=smbclient.so

      5.重启PHP服务,使用命令检查是否有安装成功

      php -m|grep smbclient

      安装成功会返回以下结果

      libsmbclient
      smbclient
      6.开启php服务

      systemctl enable php-fpm.service
      systemctl start php-fpm.service
  • Linux – 部署gcc编译环境

    部署gcc编译环境

    Centos

    由于centos7停止更新,默认yum源无法使用,可以先使用脚本进行修复

    bash <(curl -sSL https://linuxmirrors.cn/main.sh)

    安装gcc编译环境的软件包

    yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel

    Ubuntu

    apt install -y build-essential zlib1g zlib1g-dev libtool libssl-dev libpcre3 libpcre3-dev