[{"data":1,"prerenderedAt":80},["ShallowReactive",2],{"$fidChTr1D8TtakfaV-SpW-ln2C3Fde_KLtiTFxdID22s":3,"$fOh5PTiy_bJwwTVC0FMHsVYmlhVAyu7_pneyUIpruX70":35},{"code":4,"msg":5,"data":6},200,"操作成功",[7,15,20,25,30],{"id":8,"content":9,"image":10,"tag":11,"views":12,"likes":12,"createTime":13,"updateTime":13,"deleted":14},5,"立志用功如种树然，方其根芽，犹未有干;及其有干，尚未有枝;枝而后叶，叶而后花。------王守仁","https://img.qiqii.cn/cover/188.webp","柒柒",9,"2025-05-08 11:33:32",0,{"id":16,"content":17,"image":18,"tag":11,"views":12,"likes":12,"createTime":19,"updateTime":19,"deleted":14},4,"学无止境，犹如天际之辽阔。——庄子，他的话语让我懂得学习永无止境。","https://img.qiqii.cn/cover/54.webp","2025-04-16 09:27:25",{"id":21,"content":22,"image":23,"tag":11,"views":12,"likes":12,"createTime":24,"updateTime":24,"deleted":14},3,"学习如磨砺宝剑，日久见锋芒，愿你持之以恒，铸就辉煌人生。","https://img.qiqii.cn/cover/67.webp","2025-01-16 17:43:09",{"id":26,"content":27,"image":28,"tag":11,"views":12,"likes":12,"createTime":29,"updateTime":29,"deleted":14},2,"在寻求真理的长河中，唯有学习，不断地学习，勤奋地学习，有创造性地学习，才能越重山跨峻岭。——华罗庚","https://img.qiqii.cn/cover/18.webp","2024-12-26 10:43:22",{"id":31,"content":32,"image":33,"tag":11,"views":12,"likes":12,"createTime":34,"updateTime":34,"deleted":14},1,"望断金马门，劳歌采樵路。乡曲无知己，朝端乏亲故。谁能为扬雄，一荐甘泉赋。","https://img.qiqii.cn/cover/105.webp","2024-11-21 08:12:32",{"code":4,"msg":5,"data":36},{"records":37,"total":39,"size":8,"current":31,"pages":21},[38,45,53,62,71],{"id":39,"title":40,"content":41,"description":42,"coverImg":43,"state":14,"categoryId":16,"authorName":11,"views":14,"likes":14,"createTime":44,"updateTime":44,"deleted":14},15,"如何在CentOS 8.5 系统中运行 JAR 包","在 CentOS 8.5 系统中运行 JAR 包并注册为系统服务，可通过 **`systemd`服务管理**实现开机自启和便捷运维。假设我们已经将 JAR 包（如 `api-0.0.1-SNAPSHOT.jar`）上传至服务器目录（如 `/opt/api`）以下是具体步骤：\r\n\r\n------\r\n\r\n### ⚙️ **一、运行 JAR 包（临时测试）**\r\n\r\n#### 1. **前台运行**（关闭终端即停止）：\r\n\r\n```\r\njava -jar /opt/api/api-0.0.1-SNAPSHOT.jar\r\n```\r\n\r\n#### 2. **后台运行**（终端关闭后持续运行）：\r\n\r\n```\r\nnohup java -jar /opt/api/api-0.0.1-SNAPSHOT.jar > /opt/api/output.log 2>&1 &\r\n```\r\n\r\n------\r\n\r\n### 🔧 **二、注册为 Systemd 系统服务（推荐）**\r\n\r\n#### 1. **创建服务文件**\r\n\r\n进入 systemd 配置目录，创建服务文件（如 `api.service`）：\r\n\r\n```\r\nsudo vi /etc/systemd/system/api.service\r\n```\r\n\r\n#### 2. **编写服务配置**\r\n\r\n复制以下内容（按需修改参数）：\r\n\r\n```\r\n[Unit]\r\nDescription=API Application (SpringBoot Service)\r\nAfter=network.target  # 确保网络就绪后启动\r\n\r\n[Service]\r\nUser=appuser         # 替换为运行服务的非root用户（如专用用户）\r\nWorkingDirectory=/opt/api  # JAR 所在目录\r\nExecStart=/usr/bin/java -jar api-0.0.1-SNAPSHOT.jar\r\nRestart=always       # 异常退出时自动重启\r\nRestartSec=10        # 重启间隔（秒）\r\nSuccessExitStatus=143 # SpringBoot 默认退出码\r\nEnvironment=\"JAVA_HOME=/usr/lib/jvm/java-11-openjdk\" # 可选：指定JDK路径\r\n# 日志配置（可选）\r\nStandardOutput=file:/var/log/api.log\r\nStandardError=file:/var/log/api_error.log\r\n\r\n[Install]\r\nWantedBy=multi-user.target  # 多用户模式启用\r\n```\r\n\r\n#### 3. **设置权限并重载配置**\r\n\r\n```\r\nsudo chmod 644 /etc/systemd/system/api.service  # 服务文件权限\r\nsudo systemctl daemon-reload                    # 重载 systemd 配置\r\n```\r\n\r\n#### 4. **启动服务并设置开机自启**\r\n\r\n```\r\nsudo systemctl start api        # 启动服务\r\nsudo systemctl enable api       # 开机自启\r\nsudo systemctl status api       # 检查状态（确认 Active: active (running)）\r\n```\r\n\r\n------\r\n\r\n#### 4. **重启服务**\r\n\r\n（1）上传新 JAR 文件\r\n\r\n将新版本（如 `api-0.0.2-SNAPSHOT.jar`）上传至服务器目录（如 `/opt/api`）。\r\n\r\n（2）编辑 `/etc/systemd/system/api.service`，更新 `ExecStart`路径：\r\n\r\n```\r\nExecStart=/usr/bin/java -jar /opt/api/api-0.0.2-SNAPSHOT.jar  # 修改 JAR 文件名\r\n```\r\n\r\n（3）重载配置并重启\r\n\r\n```\r\nsudo systemctl daemon-reload     # 重载 systemd 配置\r\nsudo systemctl restart api       # 触发优雅重启\r\nsudo systemctl status api        # 检查状态（确认 Active: active (running)）\r\n```\r\n\r\n### ⚡ **三、服务管理常用命令**\r\n\r\n| **操作**     | **命令**                     | **说明**           |\r\n| :----------- | :--------------------------- | :----------------- |\r\n| 启动服务     | `sudo systemctl start api`   | 立即运行服务       |\r\n| 停止服务     | `sudo systemctl stop api`    | 安全停止服务       |\r\n| 重启服务     | `sudo systemctl restart api` | 重新加载配置并重启 |\r\n| 查看状态     | `sudo systemctl status api`  | 检查运行状态和日志 |\r\n| 查看实时日志 | `journalctl -u api -f`       | 动态追踪服务日志   |\r\n| 禁用开机自启 | `sudo systemctl disable api` | 取消开机启动       |","在 CentOS 8.5 系统中运行 JAR 包并注册为系统服务，可通过systemd服务管理实现开机自启和便捷运维","https://img.qiqii.cn/cover/15.webp","2025-08-27 09:29:58",{"id":46,"title":47,"content":48,"description":49,"coverImg":50,"state":14,"categoryId":31,"authorName":11,"views":31,"likes":14,"createTime":51,"updateTime":52,"deleted":14},14,"如何通过宝塔面板快速部署网站服务","闲着没事，我把网站服务器系统重装为*Alibaba* *Cloud* *Linux 3*，完全兼容Centos生态和命令。为了方便，我使用宝塔面板部署前后端项目和数据库，具体包括 MySQL、Redis、Java (jar) 和 Nuxt.js 。\r\n\r\n------\r\n\r\n### 🔧 **一、环境准备**\r\n\r\n1. **服务器配置**\r\n\r\n   - 操作系统：*Alibaba* *Cloud* *Linux 3* \r\n   - 硬件要求：2核2G\r\n   - 开放端口：\r\n     - 为了方便，云服务器安全组开放所有端口，使用宝塔面板防火墙进行管理。\r\n\r\n2. **安装宝塔面板**\r\n\r\n   - 执行命令（适用于Centos/OpenCloud/Alibaba）：\r\n\r\n     ```\r\n     url=https://download.bt.cn/install/install_panel.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_panel.sh $url;fi;bash install_panel.sh ed8484bec\r\n     ```\r\n\r\n   - 安装完成后记录面板地址、账号密码\r\n\r\n     安全设置：登录后修改面板端口、用户名和密码，并绑定宝塔账号\r\n\r\n------\r\n\r\n### ⚙️ **二、环境部署**\r\n\r\n#### **1. MySQL \r\n\r\n- 安装：\r\n\r\n  - 宝塔面板主页 → 数据库 → 选择MySQL→ 根据提示点击安装→选择版本（我选择MySQL 8.0.24）→ 极速安装\r\n\r\n- 配置：\r\n\r\n  - 点击“添加数据库”：输入数据库名、用户名、密码登信息，并确认\r\n\r\n  - 开启远程访问：把权限改为所有人\r\n\r\n  - 防火墙放行端口3306\r\n\r\n#### **2. Redis\r\n\r\n- 安装：\r\n\r\n  - 宝塔面板主页 → 数据库 → 选择Redis→ 根据提示点击安装→ 选择版本（我选择Redis 8.0.1）→ 极速安装\r\n\r\n- 配置：\r\n\r\n  - 点击Redis 8.0.1按钮→选择配置文件，修改为如下：\r\n\r\n    ```\r\n    bind 127.0.0.1      # 限制本地访问\r\n    requirepass password  # 设置密码\r\n    maxmemory 512mb     # 根据内存调整\r\n    ```\r\n\r\n  -  点击Redis 8.0.1按钮→服务→重载配置：\r\n\r\n\r\n#### **3. Java\r\n\r\n- 安装jdk：\r\n\r\n  - 宝塔面板主页 →网站 → Java项目→ Java环境管理→JDK管理→ 选择版本（我选择jdk-21.0.2）→ 极速安装\r\n- 部署jar 应用：\r\n\r\n  1. 上传jar  文件至服务器目录（如 `/www/wwwroot/jar-app`）。\r\n\r\n  2. 添加Java项目，项目路径选择/www/wwwroot/jar-app，其他信息会自动填充，点击确定。\r\n\r\n\r\n#### **4. Node.js\r\n\r\n- 安装 Node.js：\r\n\r\n  - 宝塔面板主页 →网站 →Node项目→ 安装Node版本管理器→在Node版本管理器选择版本（我选择Node-22.16）→ 极速安装\r\n\r\n- 安装 Node.js：\r\n\r\n  - 宝塔面板主页 →软件商店 →搜索“PM2管理器 5.6”→ 安装\r\n\r\n- 部署 Nuxt.js 项目：\r\n\r\n  1. 上传项目文件至目录（如 `/www/wwwroot/nuxt-app`）。\r\n\r\n  2. 安装依赖：\r\n\r\n     ```\r\n     cd /www/wwwroot/nuxt-app\r\n     npm install --production\r\n     ```\r\n\r\n  3. 构建项目：\r\n\r\n     - 构建命令：`npm run build`\r\n\r\n  4. PM2 守护进程：\r\n\r\n     - 项目根目录添加ecosystem.config.cjs文件：\r\n     \r\n       ```\r\n       module.exports = {\r\n         apps: [\r\n           {\r\n             name: 'NuxtAppName',\r\n             port: '3000',\r\n             exec_mode: 'cluster',\r\n             instances: 'max',\r\n             script: './.output/server/index.mjs'\r\n           }\r\n         ]\r\n       }\r\n       ```\r\n     \r\n     - 添加Node项目  →PM2项目 →从文件内容添加→配置文件选择/www/wwwroot/nuxt-app/ecosystem.config.cjs，其他信息会自动填充，点击确定。\r\n\r\n对比上次手动部署，使用宝塔面板极大简化操作步骤。","闲着没事，我把网站柒柒知道服务器系统重装为Alibaba Cloud Linux 3，完全兼容Centos生态和命令。为了方便，我使用宝塔面板部署前后端项目和数据库，具体包括 MySQL、Redis、Java (jar) 和 Nuxt.js 。","https://img.qiqii.cn/cover/14.webp","2025-06-30 19:22:49","2024-11-28 15:09:03",{"id":54,"title":55,"content":56,"description":57,"coverImg":58,"state":14,"categoryId":8,"authorName":11,"views":59,"likes":14,"createTime":60,"updateTime":61,"deleted":14},13,"Redis基础：String Redis Template用法介绍","## 简述\r\n\r\nString Redis Template是Spring Data Redis提供的一个模板类，用于简化对Redis数据库的操作，特别是当数据存储为字符串格式时。\r\n\r\n#### 依赖引入\r\n\r\n```\r\n\u003Cdependency>\r\n    \u003CgroupId>org.springframework.boot\u003C/groupId>\r\n    \u003CartifactId>spring-boot-starter-data-redis\u003C/artifactId>\r\n\u003C/dependency>\r\n```\r\n\r\n#### 配置文件\r\n\r\n```yml\r\nspring:\r\n  data:\r\n    redis:\r\n      host: localhost\r\n      port: 6379\r\n      database: 0\r\n```\r\n\r\n## 使用方法1（值为字符串格式）\r\n\r\n#### 设置值\r\n\r\n```\r\n@Service\r\npublic class RedisService {\r\n\r\n    @Autowired\r\n    private StringRedisTemplate stringRedisTemplate;\r\n\r\n    public void setValue(String key, String value) {\r\n        stringRedisTemplate.opsForValue().set(key, value);\r\n    }\r\n}\r\n```\r\n\r\n#### 获取值\r\n\r\n```\r\npublic String getValue(String key) {\r\n    return stringRedisTemplate.opsForValue().get(key);\r\n}\r\n```\r\n\r\n#### 删除键\r\n\r\n```\r\npublic void deleteValue(String key) {\r\n    stringRedisTemplate.delete(key);\r\n}\r\n\r\n```\r\n\r\n## 使用方法2（值为hash格式）\r\n\r\n#### 设置值\r\n\r\n```\r\n@Service\r\npublic class RedisService {\r\n\r\n    @Autowired\r\n    private StringRedisTemplate stringRedisTemplate;\r\n    \r\n    // 获取 HashOperations 对象\r\n    private HashOperations\u003CString, String, String> hashOps;\r\n\r\n    // 添加哈希项\r\n    public void putHashValue(String key, String hashKey, String value) {\r\n        hashOps.put(key, hashKey, value);\r\n    }\r\n}\r\n```\r\n\r\n#### 获取值\r\n\r\n```\r\n// 获取哈希项\r\npublic String getHashValue(String key, String hashKey) {\r\n    return hashOps.get(key, hashKey);\r\n}\r\n\r\n// 获取整个哈希\r\npublic Map\u003CString, String> getAllHashValues(String key) {\r\n    return hashOps.entries(key);\r\n}\r\n```\r\n\r\n#### 删除键\r\n\r\n```\r\n// 删除哈希项\r\npublic void deleteHashValue(String key, String hashKey) {\r\n    hashOps.delete(key, hashKey);\r\n}\r\n```\r\n\r\n","String Redis Template是Spring Data Redis提供的一个模板类，用于简化对Redis数据库的操作，特别是当数据存储为字符串格式时。","https://img.qiqii.cn/cover/13.webp",63,"2024-11-20 15:25:39","2024-12-25 19:12:19",{"id":63,"title":64,"content":65,"description":66,"coverImg":67,"state":14,"categoryId":16,"authorName":11,"views":68,"likes":14,"createTime":69,"updateTime":70,"deleted":14},12,"Ubuntu 22.04 LTS部署环境","2024年8月30日，本网站正式弃用centos5.7，改用Ubuntu 22.04，为保证网站成功运行，一共部署四个必要软件，分别是mysql8.0、redis6.0、ngnix1.18、jdk21。\r\n\r\n# 一、mysql8.0\r\n\r\n在 Ubuntu 22.04 上安装 MySQL 8.0 ，安装操作需root权限：\r\n\r\n1. 通过 sudo su -，切换到root用户\r\n\r\n   > 本文选择这种方式操作\r\n\r\n2. 或在每一个命令前，加上sudo，用来临时提升权限\r\n\r\n### 1.卸载仓库信息\r\n\r\n如果已经安装过MySQL5.7版本，需要卸载仓库信息\r\n\r\n```\r\n# 卸载MySQL5.7版本\r\napt remove -y mysql-client=5.7* mysql-community-server=5.7*\r\n\r\n# 卸载5.7的仓库信息\r\ndpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -P\r\n```\r\n\r\n### 2.更新apt仓库信息\r\n\r\n```bash\r\nsudo apt update\r\n```\r\n\r\n### 3.安装mysql\r\n\r\n```bash\r\nsudo apt install -y mysql-server\r\n```\r\n\r\n### 4.**启动 MySQL 服务**：\r\n\r\n```bash\r\n/etc/init.d/mysql start\t\t\t# 启动\r\n/etc/init.d/mysql stop\t\t\t# 停止\r\n/etc/init.d/mysql status\t\t# 查看状态\r\n```\r\n\r\n### 5.登陆MySQL设置密码\r\n\r\n给root账号设置密码\r\n\r\n```\r\n# 直接执行：mysql\r\nmysql\r\nALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';\r\n```\r\n\r\n### 6.根据需要，也可以创建新用户\r\n\r\n```\r\nCREATE USER 'abcde'@'localhost' IDENTIFIED BY 'event123';\r\n```\r\n\r\n如果你希望该用户可以从任何主机连接，可以使用：\r\n\r\n```sql\r\nCREATE USER 'abcde'@'%' IDENTIFIED BY 'event123';\r\n```\r\n\r\n### 7.**授予权限**：\r\n\r\n```sql\r\nGRANT ALL PRIVILEGES ON *.* TO 'abcde'@'localhost' WITH GRANT OPTION;\r\n```\r\n\r\n如果使用 `%`，则命令为：\r\n\r\n```sql\r\nGRANT ALL PRIVILEGES ON *.* TO 'abcde'@'%' WITH GRANT OPTION;\r\n```\r\n\r\n### 8.**刷新权限**：\r\n\r\n```sql\r\nFLUSH PRIVILEGES;\r\n```\r\n\r\n### 9.退出MySQL控制台\r\n\r\n```sql\r\nEXIT;\r\n```\r\n\r\n### 10.对MySQL进行初始化\r\n\r\n```\r\n# 执行如下命令，此命令是MySQL安装后自带的配置程序\r\nmysql_secure_installation\r\n# 可以通过which命令查看到这个自带程序所在的位置\r\nroot@DESKTOP-Q89USRE:~# which mysql_secure_installation\r\n/usr/bin/mysql_secure_installation\r\n```\r\n\r\n### 11.重新登陆MySQL（用更改后的密码）\r\n\r\n```\r\nmysql -uroot -p\r\n```\r\n\r\n### 12.**退出MySQL控制台**：\r\n\r\n```sql\r\nEXIT;\r\n```\r\n\r\n### 13.检查防火墙设置\r\n\r\n确保防火墙允许 MySQL 的端口（默认是 3306）通过。\r\n\r\n```bash\r\nsudo ufw allow 3306\r\n```\r\n\r\n### 14.检查 MySQL 配置\r\n\r\n```bash\r\nsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf\r\n```\r\n\r\n确保 `bind-address` 设置为 `0.0.0.0` 或注释掉这一行：\r\n\r\n```plaintext\r\nbind-address = 0.0.0.0\r\n```\r\n\r\n### 15.重启 MySQL 服务\r\n\r\n```bash\r\nsudo systemctl restart mysql\r\n```\r\n\r\n# 二、redis6.0\r\n\r\n在 Ubuntu 22.04 上安装 Redis，可以按照以下步骤进行：\r\n\r\n### 1. 更新系统包\r\n\r\n打开终端并运行以下命令：\r\n\r\n```bash\r\nsudo apt update\r\nsudo apt upgrade\r\n```\r\n\r\n### 2. 安装 Redis\r\n\r\n使用以下命令安装 Redis：\r\n\r\n```bash\r\nsudo apt install redis-server\r\n```\r\n\r\n### 3. 配置 Redis\r\n\r\n编辑 Redis 配置文件以确保其在后台运行：\r\n\r\n```bash\r\nsudo nano /etc/redis/redis.conf\r\n```\r\n\r\n找到以下行并进行修改：\r\n\r\n```plaintext\r\nsupervised no\r\n```\r\n\r\n改为：\r\n\r\n```plaintext\r\nsupervised systemd\r\n```\r\n\r\n### 4. 启动 Redis 服务\r\n\r\n启动 Redis 服务并使其在系统启动时自动启动：\r\n\r\n```bash\r\nsudo systemctl start redis\r\nsudo systemctl enable redis\r\n```\r\n\r\n### 5. 检查 Redis 状态\r\n\r\n确认 Redis 正在运行：\r\n\r\n```bash\r\nsudo systemctl status redis\r\n```\r\n\r\n### 6. 测试 Redis\r\n\r\n使用 Redis CLI 测试安装：\r\n\r\n```bash\r\nredis-cli\r\n```\r\n\r\n在 Redis 提示符下，输入：\r\n\r\n```plaintext\r\nping\r\n```\r\n\r\n如果返回 `PONG`，则表示 Redis 正在正常运行。\r\n\r\n### 7. 配置远程访问\r\n\r\n打开 Redis 配置文件：\r\n\r\n```bash\r\nsudo nano /etc/redis/redis.conf\r\n```\r\n\r\n修改允许连接的 IP 地址，找到以下行：\r\n\r\n```plaintext\r\nbind 127.0.0.1\r\n```\r\n\r\n将其修改为：\r\n\r\n```plaintext\r\nbind 0.0.0.0\r\n```\r\n\r\n这将允许 Redis 接受来自任何 IP 地址的连接。\r\n\r\n### 8. 设置密码\r\n\r\n在配置文件中添加或修改以下行，以设置访问密码：\r\n\r\n```plaintext\r\nrequirepass yourpassword\r\n```\r\n\r\n### 9. 重启 Redis 服务\r\n\r\n保存文件并退出编辑器，然后重启 Redis 服务以应用更改：\r\n\r\n```bash\r\nsudo systemctl restart redis\r\n```\r\n\r\n### 10. 配置防火墙\r\n\r\n确保你的防火墙允许访问 Redis 默认端口（6379）：\r\n\r\n```bash\r\nsudo ufw allow 6379\r\n```\r\n\r\n### 11. 测试远程连接\r\n\r\n在远程机器上使用以下命令连接：\r\n\r\n```bash\r\nredis-cli -h your_server_ip -p 6379 -a yourpassword\r\n```\r\n\r\n# 三、安装Nginx\r\n\r\n安装 Nginx，按照以下步骤进行操作：\r\n\r\n### 1. 更新包列表\r\n\r\n首先，确保你的包列表是最新的：\r\n\r\n```bash\r\nsudo apt update\r\n```\r\n\r\n### 2. 安装 Nginx\r\n\r\n使用以下命令安装 Nginx：\r\n\r\n```bash\r\nsudo apt install nginx\r\n```\r\n\r\n### 3. 启动 Nginx 服务\r\n\r\n安装完成后，启动 Nginx 服务：\r\n\r\n```bash\r\nsudo systemctl start nginx\r\n```\r\n\r\n### 4. 启用 Nginx 开机自启\r\n\r\n使 Nginx 在系统启动时自动启动：\r\n\r\n```bash\r\nsudo systemctl enable nginx\r\n```\r\n\r\n### 5. 检查 Nginx 状态\r\n\r\n确认 Nginx 服务正在运行：\r\n\r\n```bash\r\nsudo systemctl status nginx\r\n```\r\n\r\n### 6. 测试 Nginx\r\n\r\n在浏览器中访问你的服务器 IP 地址（例如 `http://your_server_ip`），如果看到 Nginx 的欢迎页面，说明安装成功。\r\n\r\n### 7. 配置防火墙\r\n\r\n如果你使用的是 UFW 防火墙，允许 HTTP 和 HTTPS 流量：\r\n\r\n```bash\r\nsudo ufw allow 'Nginx Full'\r\n```\r\n\r\n### 8.部署前端项目\r\n\r\nvue项目执行npm run build 命令打包后，将dist文件放到/var/www/html即可\r\n\r\n# 四、安装jdk21\r\n\r\n要安装 JDK21，请按照以下步骤进行操作：\r\n\r\n### 1. 更新包列表\r\n\r\n首先，确保你的包列表是最新的：\r\n\r\n```bash\r\nsudo apt update\r\n```\r\n\r\n### 2. 安装 JDK 21\r\n\r\n使用以下命令安装 OpenJDK 21：\r\n\r\n```bash\r\nsudo apt install openjdk-21-jdk\r\n```\r\n\r\n### 3. 验证安装\r\n\r\n安装完成后，可以通过以下命令验证 JDK 是否安装成功：\r\n\r\n```bash\r\njava -version\r\n```\r\n\r\n你应该看到类似于以下的输出：\r\n\r\n```plaintext\r\nopenjdk version \"21.0.x\" ...\r\n```\r\n\r\n### 4. 设置环境变量\r\n\r\n如果需要设置 JAVA_HOME 环境变量，可以编辑 `~/.bashrc` 文件：\r\n\r\n```bash\r\nnano ~/.bashrc\r\n```\r\n\r\n在文件末尾添加以下行：\r\n\r\n```bash\r\nexport JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64\r\nexport PATH=$PATH:$JAVA_HOME/bin\r\n```\r\n\r\n保存并退出后，运行以下命令以使更改生效：\r\n\r\n```bash\r\nsource ~/.bashrc\r\n```\r\n\r\n### 5.部署jar包（nohup）\r\n\r\n如果已经运行过，需先关闭进程\r\n\r\n```\r\nps aux | grep api.jar\r\n\r\nkill \u003CPID>\r\n```\r\n\r\n启动服务\r\n\r\n```\r\nnohup java -jar /root/api.jar --server.port=8443 > /root/api.log 2>&1 &\r\n```\r\n\r\n查看日志\r\n\r\n```\r\ntail -f /root/api.log\r\n```\r\n\r\n### 6.部署jar包（systemd）\r\n\r\n使用以下命令运行 JAR 包：\r\n\r\n```bash\r\njava -jar /path/to/your/file.jar\r\n```\r\n\r\n如果希望 JAR 包在后台运行并在系统启动时自动启动，可以使用 `systemd` 创建一个服务文件：\r\n\r\n```\r\nsudo nano /etc/systemd/system/myapp.service\r\n```\r\n\r\n添加以下内容：\r\n\r\n```\r\n[Unit]\r\nDescription=My Java Application\r\nAfter=network.target\r\n\r\n[Service]\r\nUser=your_username\r\nExecStart=/usr/bin/java -jar /path/to/your/file.jar\r\nSuccessExitStatus=143\r\n\r\n[Install]\r\nWantedBy=multi-user.target\r\n```\r\n\r\n将 `your_username` 替换为实际用户名。\r\n\r\n启动服务\r\n\r\n```bash\r\nsudo systemctl enable myapp\r\nsudo systemctl start myapp\r\n```","2024年8月30日，本网站正式弃用centos5.7，改用Ubuntu 22.04，为保证网站成功运行，一共部署四个必要软件，分别是mysql8.0、redis6.0、ngnix1.18、jdk21。","https://img.qiqii.cn/cover/12.webp",50,"2024-11-20 15:25:26","2024-12-25 19:10:58",{"id":72,"title":73,"content":74,"description":75,"coverImg":76,"state":14,"categoryId":21,"authorName":11,"views":77,"likes":31,"createTime":78,"updateTime":79,"deleted":14},11,"css媒体查询","CSS媒体查询（Media Queries）是一种CSS技术，用于根据设备的特性和屏幕尺寸，为不同的设备或屏幕应用不同的样式。通过使用媒体查询，我们可以创建响应式的网页设计，使网页在不同设备上呈现出最佳的布局和样式。下面是对CSS媒体查询的详细介绍：\r\n\r\n1. 基本概念：\r\n\r\n   - 媒体查询允许我们根据不同的媒体类型和媒体特性来应用样式。\r\n   - 媒体类型可以是`all`（所有设备）、`screen`（屏幕）、`print`（打印机）等。\r\n   - 媒体特性可以是设备宽度、设备高度、设备方向等。\r\n\r\n2. 媒体查询的语法：\r\n\r\n   - 媒体查询使用`@media`规则来定义。\r\n\r\n   - 语法格式如下：\r\n\r\n     ```css\r\n     @media 媒体类型 and (媒体特性) {\r\n       /* 样式规则 */\r\n     }\r\n     ```\r\n\r\n3. 常用的媒体特性：\r\n\r\n   - `width`：设备宽度。\r\n   - `height`：设备高度。\r\n   - `orientation`：设备方向（纵向或横向）。\r\n   - `min-width`：最小设备宽度。\r\n   - `max-width`：最大设备宽度。\r\n   - `min-height`：最小设备高度。\r\n   - `max-height`：最大设备高度。\r\n\r\n4. 示例代码：\r\n\r\n   - 下面是一个简单的媒体查询示例，当设备宽度小于等于600像素时，应用特定的样式：\r\n\r\n     ```css\r\n     @media (max-width: 600px) {\r\n       /* 在宽度小于等于600px的设备上应用以下样式 */\r\n       body {\r\n         background-color: lightblue;\r\n       }\r\n     }\r\n     ```\r\n\r\n   - 另一个示例，当设备是横向方向时，应用特定的样式：\r\n\r\n     ```css\r\n     @media (orientation: landscape) {\r\n       /* 在横向方向的设备上应用以下样式 */\r\n       body {\r\n         font-size: 20px;\r\n       }\r\n     }\r\n     ```\r\n\r\n通过媒体查询，我们可以根据设备的特性和屏幕尺寸，为不同的设备提供最佳的用户体验。使用媒体查询可以实现响应式布局、适配不同尺寸的屏幕、隐藏或显示特定的内容等。\r\n\r\n总结：\r\n\r\n- 媒体查询是一种CSS技术，用于根据设备的特性和屏幕尺寸应用不同的样式。\r\n- 使用`@media`规则来定义媒体查询。\r\n- 常用的媒体特性包括设备宽度、设备高度、设备方向等。\r\n- 通过媒体查询，可以创建响应式的网页设计，为不同设备提供最佳的用户体验。\r\n\r\n以上是对CSS媒体查询的详细介绍和示例代码，希望能帮助你更好地理解和应用CSS媒体查询。","CSS媒体查询（Media Queries）是一种CSS技术，用于根据设备的特性和屏幕尺寸，为不同的设备或屏幕应用不同的样式。通过使用媒体查询，我们可以创建响应式的网页设计，使网页在不同设备上呈现出最佳的布局和样式。下面是对CSS媒体查询的详细介绍：\r\n\r\nCSS媒体查询（Media Queries）是一种CSS技术，用于根据设备的特性和屏幕尺寸，为不同的设备或屏幕应用不同的样式。通过使用媒体查询，我们可以创建响应式的网页设计，使网页在不同设备上呈现出最佳的布局和样式。下面是对CSS媒体查询的详细介绍：","https://img.qiqii.cn/cover/11.webp",17,"2023-12-22 17:06:59","2025-02-04 14:19:50",1761936904414]