目录

  • 第一步:安装JDK 1.8
    • 方法 1:安装 Oracle JDK 1.8
    • 方法 2:安装 OpenJDK 1.8
  • 第二步:使用yum安装NGINX
  • 第三步:安装Tomcat
  • 第四步:安装Redis
  • 第五步:安装MySQL
  • 第六步:MySQL版本兼容性问题

第一步:安装JDK 1.8

在 CentOS 7 上安装 JDK 1.8 可以通过多种方式完成,例如使用 Oracle 的官方安装包、OpenJDK 或者通过 RPM 包管理工具。下面我将介绍两种常见的方法:使用 Oracle JDK 和使用 OpenJDK。

方法 1:安装 Oracle JDK 1.8

1、下载 JDK
访问 Oracle 官网下载 JDK 1.8 的 RPM 包。由于 Oracle JDK 需要接受许可协议,你也可以选择下载 tar.gz 包然后手动解压。
访问 Oracle JDK 下载页面 并选择 Linux x64 的 RPM 包。
2、安装 JDK
使用 wget 下载 RPM 包(如果你已经下载到本地,则跳过此步骤):

wget https://download.oracle.com/otn-pub/java/jdk/8uXXX-bXX/XXX_jdk-8uXXX-linux-x64.rpm

(其中 XXX 是版本号,例如 191 对于 8u191)
3、然后安装:

sudo yum localinstall XXX_jdk-8uXXX-linux-x64.rpm

4、配置环境变量
编辑 /etc/profile 或用户的 ~/.bashrc 文件,添加以下行:

export JAVA_HOME=/usr/java/jdk1.8.0_XXX
export PATH=$PATH:$JAVA_HOME/bin

(确保替换 XXX 为具体的版本号)
5、然后执行:

source /etc/profile

或重新登录终端。

方法 2:安装 OpenJDK 1.8

1、安装 OpenJDK
OpenJDK 是免费的开源实现,可以直接通过 yum 安装:

sudo yum install java-1.8.0-openjdk

2、配置环境变量
同样,编辑 /etc/profile 或 ~/.bashrc 文件,添加或修改以下行:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin

3、然后执行:

source /etc/profile

或重新登录终端。
4、验证安装
无论使用哪种方法,你都可以通过以下命令来验证 JDK 是否正确安装:

java -version

这将显示安装的 Java 版本,你应该看到类似java version "1.8.0_XXX"的输出。
以上就是在 CentOS 7 上安装 JDK 1.8 的步骤。选择适合你的方法进行安装。
如遇提示报错:报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“,参考如下:地址。

第二步:使用yum安装NGINX

参考如下:Nginx三种安装方式
这种方式安装的 nginx 版本一般也不是最新的,但是也够用了,主要是安装简单。

1 安装 EPEL 存储库

yum install -y epel-release

2 更新存储库

yum update

3 安装Nginx

yum install -y nginx

4 验证安装
查看nginx版本

nginx -v

5 启动NGINX服务并设置开机启动:

# 设置开机自启动
sudo systemctl enable nginx
# 取消开机自启动
sudo systemctl disable nginx# 启动
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重启
sudo systemctl reload nginx

6 验证NGINX是否安装成功:

sudo systemctl status nginx

7 Nginx的基本配置
Nginx的配置文件通常位于 /etc/nginx/nginx.conf ,以及位于 /etc/nginx/sites-available/ 目录下的站点特定配置文件。以下是一个基本的Nginx配置文件示例:执行 sudo vim /etc/nginx/nginx.conf

server {listen       80;listen       [::]:80;server_name  _;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {root   html;index  index.html index.htm;autoindex on;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}

检查是否有语法错误

sudo nginx -t

查看错误日志
查看 Nginx 的错误日志可以提供更多关于为什么页面找不到的信息。日志文件通常位于 /var/log/nginx/error.log。使用以下命令查看日志:

sudo tail -f /var/log/nginx/error.log
  1. 修改权限

修改/usr/local/nginx/html/目录的读写权限,或者是把nginx的启动用户改成目录的所属用户

chmod -R 777 /usr/local/nginx/html/
  1. 检查 SELinux 状态
    !!!!!!!!!!!!!!!!注意这一步非常重要!!!!!!!!!!!!!!!!!!!
    如果你的系统启用了 SELinux(Security-Enhanced Linux),它可能会阻止某些操作。你可以临时禁用 SELinux 来测试是否是 SELinux 导致的问题:
sudo setenforce 0

在这里插入图片描述
如果禁用 SELinux 后问题解决,那么你可能需要调整 SELinux 的策略而不是完全禁用它。例如,你可以为 Nginx 设置适当的上下文:

sudo restorecon -v /etc/nginx/nginx.conf

检查目录和文件的 SELinux 上下文
确保 Nginx 的配置文件和目录具有正确的 SELinux 上下文:

ls -Z /etc/nginx/nginx.conf

运行 http://localhost/upload/defaultpicture/1.jpg,成功后看到
在这里插入图片描述

第三步:安装Tomcat

Tomcat的下载和安装过程比较简单,适用于多种操作系统:
访问Tomcat官方网站,下载对应操作系统的Tomcat二进制版本。
解压缩下载的文件到一个目录,例如 /opt/tomcat 或 C:\apache-tomcat-9.0.34 。
运行Tomcat的 bin/startup.sh (Unix/Linux)或 bin/startup.bat (Windows)脚本来启动Tomcat服务器。
用文件夹下面的startup.shshutdown.sh来进行启动和关闭。
检查是否启动成功:在浏览器输入:http://localhost:8080

第四步:安装Redis

  1. 安装 EPEL 仓库
    首先,你需要启用 EPEL (Extra Packages for Enterprise Linux) 仓库,因为 Redis 可能不在 CentOS 的默认仓库中。
sudo yum install epel-release
sudo yum update
  1. 安装 Redis

安装 Redis 服务器和客户端工具。

sudo yum install redis
  1. 启动 Redis 服务
sudo systemctl start redis
  1. 设置 Redis 服务开机自启
sudo systemctl enable redis
  1. 检查 Redis 状态
sudo systemctl status redis
  1. 在Redis配置文件(通常是redis.conf)中添加:
requirepass 123456

第五步:安装MySQL

参考地址1
参考地址2

  1. 获取 mysql 官方 yum 源
    下载地址
# 一定要看好下面的文字!如果后面自己安装不成功,就看看这个
# 注意:最好安装和自己系统一致的mysql版本,否则可能会存在软件兼容性问题
# 查看自己的系统版本
# [root@VM-8-5-centos ~]# cat /etc/redhat-release
# CentOS Linux release 7.8.2003(Core)
# 可以进入 http://repo.mysql.com/,找一下和自己版本一致的资源
# 下载到你的本地,然后上传到你的Linux服务器
  1. 安装Mysql

2.1 输入以下命令开始安装

[root@localhost src]# yum localinstall mysql80-community-release-el7-5.noarch.rpm

2.2 完成后继续执行以下命令安装

[root@localhost src]# yum install mysql-community-server

2.3 安装完毕,启动Mysql服务

[root@localhost src]# service mysqld start

2.4 查看Mysql服务启动状态是否成功,或:ps -ef | grep mysql

[root@localhost src]# service mysqld status
  1. 修改Mysql密码
    3.1 查询Mysql临时密码
[root@localhost src]# more /var/log/mysqld.log

在这里插入图片描述

3.2 复制临时密码,然后登陆Mysql

在这里插入图片描述
3.3 此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

其中‘new password’替换成你要设置的密码,
注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功
在这里插入图片描述

3.4 创建lexian数据库
运行乐鲜数据库sql脚本文件:

mysql> source /home/51testing/Desktop/WorkSpace/lexian/lexian.sql

请注意确保lexian.sql文件的路径正确。可以看到创建个表、存储过程以及插入初始数据的语句运行结果。
验证数据库,运行下列命令确保返回相应的结果:

use lexian;
select * from category;

3.5 创建和使用非管理员账号
  一般不建议直接在应用程序中使用 root 账号访问数据库,应创建新的非管理员账号。

  • 创建账号etc,密码为51Testing~

以root账号进入mysql,运行以下语句:

CREATE USER 'etc'@'%' IDENTIFIED BY '51Testing~';
  • 赋予etc账号访问lexian数据库的权限:
grant all on lexian.* to 'etc'@'%';
  • 验证etc账号:
    以etc身份进入mysql:
mysql -uetc -p
  • 执行下列命令,确保可以看到返回相应的结果:
use lexian;
show tables;

第六步:MySQL版本兼容性问题

解决数据库MySQL 5.* 迁移到MySQL 8.*的问题。

问题1:MySQL 5.* 和MySQL 8.*的jdbc连接数据库的方式不同。
解决方式参考另一篇博文。

问题2:ERROR 6125 (HY000): Failed to add the foreign key constraint. Missing unique key for constraint 'commodity_browse' in the referenced table 'commodity'
通常在尝试在MySQL数据库中添加外键约束时出现,当引用的列不是唯一索引或主键时,就会触发这个错误。为了解决这个问题,你需要确保引用的列(即在FOREIGN KEY中指定的列)具有唯一性。
添加一个UNIQUE的约束就行。
在这里插入图片描述

问题3:注册时无法注册报错如下。
在这里插入图片描述
参考链接:jdbc配置之后,提示table does not exist

查看数据库表名是wallet小写,而这里是Wallet是大写的‘W’,改成大写的就行了,无语。

问题4:首页商品图片加载不显示。
在这里插入图片描述
这里是MySQL 8.* 与MySQL 5.*的兼容性的问题,MySQL 8.* 默认支持sql_mode = only_full_group_by,而MySQL 5.*则默认不支持,这里需要在配置中删掉这个only_full_group_by。

mysql> select @@global.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)mysql> use lexian;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select @@sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                            |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql> set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)mysql> select @@sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                         |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

在这里插入图片描述
终于成功了!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90717.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90717.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/90717.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何设计一个登录管理系统:单点登录系统架构设计

关键词:如何设计一个登录管理系统、登录系统架构、用户认证、系统安全设计 📋 目录 开篇:为什么登录系统这么重要?整体架构设计核心功能模块安全设计要点技术实现细节性能优化策略总结与展望 开篇:为什么登录系统这么…

论迹不论心

2025年7月11日,16~26℃,阴 紧急不紧急重要 备考ing 备课不重要 遇见:免费人格测试 | 16Personalities,下面是我的结果 INFJ分析与优化建议 User: Anonymous (隐藏) Created: 2025/7/11 23:38 Updated: 2025/7/11 23:43 Exported:…

【面板数据】省级泰尔指数及城乡收入差距测算(1990-2024年)

对中国各地区1990-2024年的泰尔指数、城乡收入差距进行测算。本文参考龙海明等(2015),程名望、张家平(2019)的做法,采用泰尔指数测算城乡收入差距。参考陈斌开、林毅夫(2013)的做法&…

http get和http post的区别

HTTP GET 和 HTTP POST 是两种最常用的 HTTP 请求方法,它们在用途、数据传输方式、安全性等方面存在显著差异。以下是它们的主要区别:1. 用途GET:主要用于请求从服务器获取资源,比如获取网页内容、查询数据库等。GET 请求不应该用…

I2C集成电路总线

(摘要:空闲时,时钟线数据线都是高电平,主机发送数据前,要在时钟为高电平时,把数据线从高电平拉低,数据发送采取高位先行,时钟线低电平时可以修改数据线,时钟线高电平时要…

为了安全应该使用非root用户启动nginx

nginx基线安全,修复步骤。主要是由于使用了root用户启动nginx。为了安全应该使用非root用户启动nginx一、检查项和问题检查项分类检查项名称身份鉴别检查是否配置Nginx账号锁定策略。服务配置检查Nginx进程启动账号。服务配置Nginx后端服务指定的Header隐藏状态服务…

论文解析篇 | YOLOv12:以注意力机制为核心的实时目标检测算法

前言:Hello大家好,我是小哥谈。长期以来,改进YOLO框架的网络架构一直至关重要,但尽管注意力机制在建模能力方面已被证明具有优越性,相关改进仍主要集中在基于卷积神经网络(CNN)的方法上。这是因…

学习C++、QT---20(C++的常用的4种信号与槽、自定义信号与槽的讲解)

每日一言相信自己,你比想象中更接近成功,继续勇往直前吧!那么我们开始用这4种方法进行信号与槽的通信第一种信号与槽的绑定方式我们将按键右键后转到槽会自动跳转到这个widget.h文件里面并自动生成了定义,我们要记住我们这个按钮叫…

Anolis OS 23 架构支持家族新成员:Anolis OS 23.3 版本及 RISC-V 预览版发布

自 Anolis OS 23 版本发布之始,龙蜥社区就一直致力于探索同源异构的发行版能力,从 Anolis OS 23.1 版本支持龙芯架构同源异构开始,社区就在持续不断地寻找更多的异构可能性。 RISC-V 作为开放、模块化、可扩展的指令集架构,正成为…

4万亿英伟达,凭什么?

CUDA正是英伟达所有神话的起点。它不是一个产品,而是一个生态系统。当越多的开发者使用CUDA,就会催生越多的基于CUDA的应用程序和框架;这些杀手级应用又会吸引更多的用户和开发者投身于CUDA生态。这个正向飞轮一旦转动起来,其产生…

Unity3D iOS闪退问题解决方案

前言 在Unity3D开发中解决iOS闪退问题需要系统性排查,以下是关键步骤和解决方案: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀! 1. 获取崩溃日志(关键第一步&#xff…

嵌入式八股文之 GPIO

1. GPIO 的基本概念(1) 什么是 GPIO?GPIO 的中文意思是通用输入输出端口(General Purpose Input/Output),是嵌入式系统中可编程控制的通用引脚,可通过软件配置为输入或输出模式。(背诵)(2) 它的…

Umi-OCR 的 Docker安装(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)

前置博客:Ubuntu-Server 22.04.4 详细安装图文教程 wget命令在windows终端下不能使用的原因及解决办法 在 Ubuntu 22.04 LTS 上离线安装 Docker 手把手教你在Win11下安装docker Umi-OCR 安装docker时报错:workstation服务启动报错。错误1075&#…

力扣242.有效的字母异位词

给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词。示例 1:输入: s "anagram", t "nagaram" 输出: true示例 2:输入: s "rat", t "car" 输出: false提示:1 < s.length, t.length < 5 * 104s…

基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建

本节介绍本项目后端项目的开发工具及基础项目的搭建&#xff0c;包括开发工具介绍及后端项目的创建和依赖框架的引入及对应配置。 源码下载&#xff1a; 点击下载 讲解视频&#xff1a; UniappSpringbootKimi实现模拟面试小程序-Springboot项目创建一&#xff0e;开发工具 1.…

Linux711 Mysql

模版 root192.168.235.130s password:┌──────────────────────────────────────────────────────────────────────┐│ • MobaXterm Personal Edition v23.2 • ││…

QT 秘钥生成工具

该项目是注册机和验证机项目&#xff0c;分别是密钥生成工具&#xff0c;和密钥验证demo,可以识别电脑唯一标识码。#include "frmmain.h" #include "ui_frmmain.h" #include "qmessagebox.h" #include "qfile.h" #pragma execution_ch…

PyTorch神经网络训练全流程详解:从线性层到参数优化

目录 一、神经网络训练的核心组件 二、代码逐行解析与知识点 三、核心组件详解 3.1 线性层(nn.Linear) 3.2 损失函数(nn.MSELoss) 3.3 优化器(optim.SGD) 四、训练流程详解 五、实际应用建议 六、完整训练循环示例 七、总结 在深度学习实践中&#xff0c;理解神经网络…

从代码学习深度学习 - 针对序列级和词元级应用微调BERT PyTorch版

文章目录 前言针对序列级和词元级应用微调BERT单文本分类文本对分类或回归文本标注问答总结前言 在自然语言处理(NLP)的广阔天地里,预训练模型(Pre-trained Models)的出现无疑是一场革命。它们如同站在巨人肩膀上的探索者,使得我们能够利用在大规模文本语料上学到的丰富…

学习笔记丨卷积神经网络(CNN):原理剖析与多领域Github应用

本文深入剖析了卷积神经网络&#xff08;CNN&#xff09;的核心原理&#xff0c;并探讨其在计算机视觉、图像处理及信号处理等领域的广泛应用。下面就是本篇博客的全部内容&#xff01;&#xff08;内附相关GitHub数据库链接&#xff09; 目录 一、什么是CNN&#xff1f; 二、…