Ubuntu 24.04 LTS 服务器配置:安装 JDK、Nginx、Redis。


新建用来放置软件安装包的目录

mkdir /home/software

配置目录所有者为 ubuntu 用户:

chown ubuntu /home/software

将软件安装包上传到 /home/software


配置 JDK-8

新建 jdk 安装目录

mkdir /usr/java

解压 jdk 压缩包

tar -zxvf jdk-8u191-linux-x64.tar.gz

把解压后的 jdk 放到 /usr/java 下,这个目录专门用于存放 jdk

mv jdk1.8.0_191/ /usr/java/

修改 profile 文件,配置 jdk 环境变量(注:环境变量配置在 profile 文件的最末尾即可)

vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_191
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar  
export PATH=$PATH:$JAVA_HOME/bin

刷新 profile,使其生效

source /etc/profile

验证是否安装成功

java -version

至此,JDK 安装成功。


配置 nginx 1.24.0


下载安装包

wget http://nginx.org/download/nginx-1.24.0.tar.gz

解压

tar -zxvf nginx-1.24.0.tar.gz

创建 nginx 临时目录,如果不创建,在启动 nginx 的过程中会报错

mkdir /var/temp/nginx -p

进入目录

cd nginx-1.24.0

安装编译依赖

sudo apt update
sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev

配置编译选项,创建 makefile 文件

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi --with-http_ssl_module

进行编译

make -j$(nproc)

进行安装

make install

配置 HTTPS

  • 把 ssl 证书 *.crt 和私钥 *.key 拷贝到 /usr/local/nginx/conf 目录中

  • 新增 server 监听 443 端口

    server {listen       443;server_name  www.xxx.com;# 开启sslssl     on;# 配置ssl证书ssl_certificate      www.xxx.com.crt;# 配置证书秘钥ssl_certificate_key  www.xxx.com.key;# ssl会话cachessl_session_cache    shared:SSL:1m;# ssl会话超时时间ssl_session_timeout  5m;# 配置加密套件,写法遵循 openssl 标准ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;location / {proxy_pass http://tomcats/;index  index.html index.htm;}}
    

    检查配置文件有效性

    sudo /usr/local/nginx/sbin/nginx -t
    

    启动

    sudo /usr/local/nginx/sbin/nginx
    

    停止

    sudo /usr/local/nginx/sbin/nginx -s stop
    

    重新加载

    sudo /usr/local/nginx/sbin/nginx -s reload
    

    检查版本,查询配置参数

    /usr/local/nginx/sbin/nginx -v
    

    安装完成。


配置 redis 7.0(注册到 systemd,实现开机自启)


下载源码

wget https://download.redis.io/releases/redis-7.0.12.tar.gz

安装依赖 & 准备环境

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential tcl curl

解压

tar xzf redis-7.0.12.tar.gz

编译安装

cd redis-7.0.12
make -j$(nproc)               # 使用全部 CPU 核心加速编译
sudo make install             # 默认安装到 /usr/local/bin

修改配置文件

sudo mkdir -p /usr/local/redis
sudo cp redis.conf /usr/local/redis/redis.conf
vim /usr/local/redis/redis.conf

以下配置项逐个进行修改

bind 0.0.0.0                                   # 不限制 IP,可以远程连接
daemonize no                                   # 改为 no(由 systemd 管理)
supervised systemd                             # 改为 systemd
dir /usr/local/redis/working                   # 修改数据存储路径
logfile /usr/local/redis/log/redis-server.log  # 设置日志路径
requirepass xxxxyyyy                           # 设置密码# 启用混合持久化
appendonly yes            # 启用 AOF
appendfsync everysec      # 每秒同步一次(安全性和性能的平衡点)
aof-use-rdb-preamble yes  # 开启混合持久化# AOF 重写策略
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 设置 AOF 目录
appenddirname "aof-files"

创建 Systemd 服务文件,实现自启动管理

sudo vim /etc/systemd/system/redis.service

完整拷贝以下配置

[Unit]
Description=Redis In-Memory Data Store
After=network.target[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
RestartSec=3
Type=notify
TimeoutStopSec=10
SyslogIdentifier=redis# 声明 Redis 需要访问的路径
ReadWritePaths=/usr/local/redis/working /usr/local/redis/log
LogsDirectory=redis# 资源限制 (可选但推荐)
LimitNOFILE=65536
OOMScoreAdjust=-200[Install]
WantedBy=multi-user.target

创建必要目录

sudo mkdir -p /usr/local/redis/working              # 创建 Redis 工作目录
sudo mkdir -p /usr/local/redis/log                  # 创建 Redis 日志目录
sudo mkdir -p /usr/local/redis/working/aof-files    # 创建上面配置的 AOF 目录

创建 Redis 专用用户和目录

# 创建专用用户和组
sudo adduser --system --group --no-create-home redis# 设置数据目录权限
sudo chown -R redis:redis /usr/local/redis/working
sudo chown -R redis:redis /usr/local/redis/log# 设置合适的权限 (所有者:读+写+执行、组用户:读+执行、其他用户:无权限)
sudo chmod 750 /usr/local/redis/working
sudo chmod 750 /usr/local/redis/log# 设置配置文件权限
sudo chown redis:redis /usr/local/redis/redis.conf

启动 Redis 并设置开机自启

# 重载 systemd
sudo systemctl daemon-reload# 启动服务
sudo systemctl start redis# 停止服务
sudo systemctl stop redis# 设置开机自启
sudo systemctl enable redis# 检查状态
sudo systemctl status redis

检查数据目录,验证持久化配置

sudo ls -lh /usr/local/redis/working    # 应看到 aof-files 文件夹和 dump.rdb 文件

安装完成。


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

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

相关文章

工作中用到过哪些设计模式?是怎么实现的?

1. 单例模式(结合 Spring Component)场景:配置中心、全局状态管理 Spring 实现:java// 自动注册为Spring Bean(默认单例) Component public class AppConfig {Value("${server.port}")private in…

Leetcode 3609. Minimum Moves to Reach Target in Grid

Leetcode 3609. Minimum Moves to Reach Target in Grid 1. 解题思路2. 代码实现 题目链接:3609. Minimum Moves to Reach Target in Grid 1. 解题思路 这一题我一开始走岔了,走了一个正向遍历走法的思路,无论怎么剪枝都一直超时。后来看了…

工作流引擎:IDEA没有actiBPMN插件怎么办?

文章目录一、问题描述二、替代方案一、问题描述 我们在学习activiti7工作流引擎的时候,需要设计流程图。 一般推荐的就是使用IDEA插件actiBPMN进行开发。 但是,这个插件在IDEA2019后的版本都不在支持。 也就是搜不到 那么,怎么办了&#x…

Android音视频探索之旅 | CMake基础语法 创建支持Ffmpeg的Android项目

一.CMake语法 CMake语法非常多,我们知道如何导入静态库和动态库以及最基础的使用,目前是够用的。其它方面则根据实际项目同步学习。 1.1.基础语法-常用 cmake_minimum_required:指定cmake最小版本include_directories:引入&#x…

React Native 初始化项目和模拟器运行

中文官方文档:https://reactnative.cn/docs/environment-setup 英文官方文档:https://reactnative.dev/docs/getting-started-without-a-framework#step-1-creating-a-new-application 创建新项目 1、初始化 # 如果你之前全局安装过旧的react-native-cli…

20250706-5-Docker 快速入门(上)-创建容器常用选项_笔记

一、创建容器常用选项1. 创建容器常用选项1)常用选项创建容器常用选项交互式选项:-i:保持标准输入打开,允许交互式操作-t:分配伪终端,使容器像传统终端一…

插值与拟合(3):B样条曲线

在路径规划问题中,通常会用到B样条来平滑路径,本文实现并封装了三次准均匀开放B样条曲线,供大学学习使用。作者提供了三套代码方案。可以用于不同平台:方案1:MATLAB;方案2:标准C;方案…

[免费]基于Python豆瓣电影数据分析及可视化系统(Flask+echarts+pandas)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的于Python豆瓣电影数据分析及可视化系统(Flaskechartpandas)【论文源码SQL脚本】,分享下哈。项目介绍随着如今电影越来越多,各种各样的烂片和捞钱的商业片也层出不穷,而有意…

SQL127 月总刷题数和日均刷题数

SQL127 月总刷题数和日均刷题数 withtemp as (selectDATE_FORMAT(submit_time, "%Y%m") as submit_month,count(question_id) as month_q_cnt,round(count(question_id) / day(last_day(max(submit_time))),3) as avg_day_q_cntfrompractice_recordwhereyear(submit…

unity luban接入

1.找到luban官网并下载他的例子和.net8.0的sdk安装 官网地址如下 快速上手 | Luban 参考大佬教程如下 Luban新版本接入教程_哔哩哔哩_bilibili 2.找到他的luban_examples-main示例下的两个文件MiniTemplate和tool 3.MiniTemplate这个文件复制一份到项目工程下,自…

Django服务开发镜像构建

最后完整的项目目录结构1、安装依赖pip install django django-tables2 django-filter2、创建项目和主应用django-admin startproject configcd configpython manage.py startapp dynamic_models3、配置settings.py将项目模块dynamic_models加入进来,django_tables2…

20250706-3-Docker 快速入门(上)-常用镜像管理命令_笔记

一、配置加速器1. Docker Hub简介与地址公共镜像仓库: 由Docker公司维护的公共镜像仓库,包含大量容器镜像默认下载源: Docker工具默认从这个公共镜像库下载镜像访问地址: https://hub.docker.com镜像搜索功能: 可通过浏览器访问图形化管理系…

【unity游戏开发——优化篇】使用Occlusion Culling遮挡剔除,只渲染相机视野内的游戏物体提升游戏性能

注意:考虑到优化的内容比较多,我将该内容分开,并全部整合放在【unity游戏开发——优化篇】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言实战1、确保所有静止的3D物体都标记为Occluder Static静态遮挡体和Occludee …

通用业务编号生成工具类(MyBatis-Plus + Spring Boot)详解 + 3种调用方式

在企业应用开发中,我们经常需要生成类似 BZ -240704-0001 这种“业务编号”,它通常具有以下特点:前缀:代表业务类型,如 BZ 表示包装日期:年月日格式,通常为 yyMMdd序列号:当天内递增…

前端相关性能优化笔记

1.打开速度怎么变快 - 首屏加载优化2.再次打开速度怎么变快 - 缓存优化了3.操作怎么才顺滑 - 渲染优化4.动画怎么保证流畅 - 长任务拆分2.1 首屏加载指标细化:1.FP(First Paint 首次绘制) 2.FCP(First contentful Paint 首次内容绘制),FP 到 FCP 中间其实主要是 SPA…

7.7晚自习作业

实操作业02:Spark核心开发 作业说明 请严格按照步骤操作,并将最终结果文件(命名为:sparkcore_result.txt)于20点前上传。结果文件需包含每一步的关键命令执行结果文本输出。 一、数据读取与转换操作 上传账户数据$…

手机FunASR识别SIM卡通话占用内存和运行性能分析

手机FunASR识别SIM卡通话占用内存和运行性能分析 --本地AI电话机器人 上一篇:手机无网离线使用FunASR识别SIM卡语音通话内容 下一篇:手机通话语音离线ASR识别商用和优化方向 一、前言 书接上一文《阿里FunASR本地断网离线识别模型简析》,…

虚幻引擎Unreal Engine5恐怖游戏设计制作教程,从入门到精通从零开始完整项目开发实战详细讲解中英字幕

和大家分享一个以前收集的UE5虚幻引擎恐怖游戏开发教程,这是国外一个大神制作的视频教程,教程从零开始到制作出一款完整的游戏。内容讲解全面,如蓝图基础知识讲解、角色控制、高级交互系统、高级库存系统、物品检查、恐怖环境氛围设计、过场动…

多人协同开发时Git使用命令

拉取仓库代码 # 拉取远程仓库至本地tar_dir路径 git clone gitgithub.com:your-repo.git target_dir # 默认是拉取远程master分支,下面拉取并切换到自己需要开发的分支上 # 假设自己需要开发的分支是/feature/my_branch分支 git checkout -b feature/my_branch orig…

线性表——双向链表

线性表——双向链表1. 双向链表的实现1.1 简单图例1.2 结点的定义1.3 新结点的创建1.4 链表的初始化1.5 结点的插入1.5.1 头部插入(头插)1.5.2 尾部插入(尾插)1.5.3 任意位置(前)插入1.6 结点的删除1.6.1 头…