0x01 安装工具

sudo dnf install vim
sudo dnf install tar
sudo dnf install gzip

0x02 安装和配置 MySQL 5.7

一、 安装 MySQL 5.7.44 版本

1. 添加 MySQL 官方 Yum 仓库

# 下载 MySQL 5.7 的官方 repo(适用于 RHEL 7/8)
sudo wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
注意:这个包默认启用的是 MySQL 8.0,我们需要禁用 8.0 并启用 5.7。

2. 安装 repo 包

sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm

3. 启用 MySQL 5.7 仓库,禁用 8.0

sudo dnf config-manager --disable mysql80-community
sudo dnf config-manager --enable mysql57-community
如果提示 dnf config-manager 未找到,请先安装 sudo dnf install -y dnf-plugins-core

4. 查看 MySQL 5.7 可用版本

sudo dnf list mysql-community-server --showduplicates | grep 5.7

5. 安装对应版本

sudo dnf install -y mysql-community-server-5.7.44

6. 启动和设置 MySQL 自启

sudo systemctl start mysqld
sudo systemctl enable mysqld

二、 配置 MySQL

1. 获取 root 账户临时密码

sudo grep 'temporary password' /var/log/mysqld.log

2. 运行安全初始化

sudo mysql_secure_installation

输入临时密码,然后设置新密码

需要外部访问时进行配置

3. 配置 MySQL 账户全局访问权限

mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. 修改 /etc/my.cnf 配置文件

bind-address = 0.0.0.0  # 监听外网端口
port = 3306             # 配置数据库端口

5. 配置端口过防火墙

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

6. 添加 SELinux 端口授权

sudo semanage port -a -t mysqld_port_t -p tcp 3307
如果修改默认端口需要添加授权,否则无法重新启动

如果提示找不到 semanage 命令需进行安装

sudo dnf install -y policycoreutils-python-utils

0x03 安装 JDK 1.8.0

一、 安装 OpenJDK 8

sudo dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

二、 验证安装

java -version
javac -version

0x04 安装和配置 Apache 2.4

一、 安装 Apache

1. 安装 Apache 2.4

sudo dnf install -y httpd

2. 验证安装

httpd -v

3. 设置开机自启

sudo systemctl start httpd
sudo systemctl enable httpd

二、 配置 Apache

1. 修改默认端口

编辑 /etc/httpd/conf/httpd.conf 修改默认端口

Listen 8080

2. 配置端口过防火墙

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

3. 添加 SELinux 端口授权

sudo semanage port -a -t http_port_t -p tcp 8080

0x05 安装和配置 PHP 7.2.9

一、 安装 PHP 7.2.9

1. 安装编译依赖

sudo dnf install -y gcc make autoconf gcc-c++ libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel bzip2-devel libzip-devel systemd-devel sqlite-devel oniguruma-devel

2. 上传 php-7.2.9.tar.gz 包并解压

cd /usr/local/src
# sudo wget https://www.php.net/distributions/php-7.2.9.tar.gz
sudo tar -xzf php-7.2.9.tar.gz
cd php-7.2.9

3. 配置编译选项(与 Apache 集成)

./configure --prefix=/usr/local/php72 --with-config-file-path=/usr/local/php72/etc --with-config-file-scan-dir=/usr/local/php72/etc/conf.d --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --with-apxs2=/usr/bin/apxs --with-openssl --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --enable-xml --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-pcntl --enable-soap --enable-sockets --enable-zip --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
如果提示 apxs 未找到,请先安装 httpd-devel
sudo dnf install -y httpd-devel

4. 编译并安装

make -j
sudo make install

二、 配置 PHP 环境

1. 拷贝 PHP 配置文件

sudo mkdir -p /usr/local/php72/etc/conf.d
sudo cp php.ini-production /usr/local/php72/etc/php.ini

2. 验证 Apache 加载 PHP 模块

检查 /etc/httpd/conf/httpd.conf 中是否包含 PHP 模块

LoadModule php7_module modules/libphp7.so

3. 添加 php 文件解析

添加以下内容以解析 .php 文件

<FilesMatch \.php$ >
    SetHandler application/x-httpd-php
</FilesMatch>

修改内容以识别 index.php 文件

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

4. 添加 Apache 用户目录操作权限

避免 PHP 目录操作出现 mkdir(): Permission denied 报错,需为 Apache 用户添加目录权限

sudo chown -R apache:apache uploads

5. 重启 httpd 服务使 PHP 模块生效

sudo systemctl restart httpd

0x06 附录:JAR 包后台运行执行脚本

#!/bin/bash
JAVA="java"
APP="app.jar"
OPT=""

running(){ 
    pid=`ps -ef|grep $APP|grep -v grep|awk '{print $2}'`
    if [ -z "${pid}" ]; then
        return 1
    else
        return 0
    fi
}

start(){ 
    running 
    if [ $? -eq "0" ]; then 
        echo "${APP} is already running. pid=${pid}"
    else 
        #nohup java $OPT -jar $APP > /dev/null 2>&1 &
        nohup $JAVA $OPT -jar $APP > app.log 2>&1 &
        echo "${APP} START success"
    fi
} 

stop(){ 
    running 
    if [ $? -eq "0" ]; then
        kill -9 $pid
    echo "${APP} STOP success"
    else
        echo "${APP} is NOT running"
    fi
}

status(){ 
    running 
    if [ $? -eq "0" ]; then 
        echo "${APP} is running. Pid is ${pid}" 
    else 
        echo "${APP} is NOT running." 
    fi 
}

restart(){ 
    stop
    start
} 

usage() { 
    echo "Usage: sh run.sh [start|stop|restart|status]" 
    exit 1 
} 

case "$1" in 
    "start") 
        start 
    ;; 
    "stop") 
        stop 
    ;; 
    "status") 
        status 
    ;; 
    "restart") 
        restart 
    ;; 
    *) 
        usage 
    ;; 
esac

设置 .sh 文件执行权限

sudo chmod +x run.sh

标签: Linux

添加新评论