目录
一、实验
1.环境
2. kylin 部署mysql数据库
3. kylin 构建Java运行环境
4. 创建博客使用的数据库
5. kylin 部署 halo博客系统
6. kylin 部署nginx
7. kylin 使用 SSL证书基于https访问部署的博客系统
二、问题
1.mysql安装报错
2.查看mysql数据库报错
3.systemd服务如何实现脚本编写与管理
4. Linux软件安装
5.安装 OpenJDK 11 两种方式
6. Halo 如何下载不同版本与配置文件
7.Halo 服务启动失败
8. Halo 附件上传报错
一、实验
1.环境
(1)主机
表1 主机
主机 | 架构 | 版本 | IP | 备注 |
kylin | 银河麒麟 | V10 | 192.168.204.77 | |
mysql数据库 | 8.0.18-1 | |||
openjdk | 11.0.21 | |||
halo博客 | 1.6.0 |
2. kylin 部署mysql数据库
(1) 修改yum仓库
[root@kylin ~]# cd /etc/yum.repos.d/[root@kylin yum.repos.d]# ls[root@kylin yum.repos.d]# vim kylin_x86_64.repo
修改前:
修改后:
###Kylin Linux Advanced Server 10 - os repo###[ks10-adv-os]
name = Kylin Linux Advanced Server 10 - Os
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/base/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1[ks10-adv-updates]
name = Kylin Linux Advanced Server 10 - Updates
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/updates/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1[ks10-adv-addons]
name = Kylin Linux Advanced Server 10 - Addons
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP2/os/adv/lic/addons/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 0[kylin-epel]
name = epel
baseurl = https://update.cs2c.com.cn/NS/V10/V10SP3/EPKL/x86_64/
gpgcheck = 0
enabled = 1
(2)安装
[root@kylin yum.repos.d]# dnf install mysql-server mysql mysql-common mysql-libs
(3) 启动服务
[root@kylin yum.repos.d]# systemctl start mysqld[root@kylin yum.repos.d]# ps -ef|grep mysqld
(4)查看临时密码
[root@kylin yum.repos.d]# tail -f /var/log/mysqld.log
……
A temporary password is generated for root@localhost: 0A.Ks%yihwei
……
(5)登录
输入上一步的临时密码
[root@kylin yum.repos.d]# mysql -uroot -p
(6)修改密码
mysql> alter user 'root'@'localhost' identified by 'root@mySQL123';
(7)查看数据库
mysql> show databases;
(8)退出
mysql> quit
3. kylin 构建Java运行环境
(1) 卸载java-1.8.0
[root@kylin ~]# dnf remove java-1.8.0*
(2)安装
[root@kylin ~]# dnf install java-11
(2) 查看版本
[root@kylin ~]# java -version
4. 创建博客使用的数据库
(1)创建
字符集(Character Set):utf8mb4
排序规则(Collate):utf8mb4_bin
[root@kylin ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.18 MySQL Community Server - GPLCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database halodb character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.01 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)mysql> quit
Bye
5. kylin 部署 halo博客系统
(1)上传jar包
[root@kylin ~]# mkdir -p /data/halo
[root@kylin ~]# cd /data/halo/[root@kylin halo]# wget https://dl.halo.run/release/halo-1.6.0.jar
[root@kylin halo]# ll
(2)配置部署文件
编辑配置文件
[root@kylin halo]# mkdir /root/.halo
[root@kylin halo]# cd /root/.halo
[root@kylin .halo]# ll[root@kylin .halo]# vim application.yaml
server:port: 8090# Response data gzip.compression:enabled: false
spring:datasource:# H2 database configuration.#driver-class-name: org.h2.Driver#url: jdbc:h2:file:~/.halo/db/halo#username: admin#password: 123456# MySQL database configuration.driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: root@mySQL123# H2 database console configuration.#h2:# console:# settings:# web-allow-others: false# path: /h2-console# enabled: falsehalo:# Your admin client path is https://your-domain/{admin-path}admin-path: admin# memory or levelcache: memory
(3)编写服务脚本
修改
[root@kylin halo]# vim /etc/systemd/system/halo.service
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -server -Xms1024m -Xmx1024m -jar /data/halo/halo-1.6.0.jar
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslogStandError=inherit[Install]
WantedBy=multi-user.target
(4)重载服务
[root@kylin halo]# systemctl daemon-reload
(5)启动服务
[root@kylin halo]# systemctl start halo
(6)查看服务
[root@kylin halo]# systemctl status halo
[root@kylin halo]# ps -ef |grep halo
(7)查看信息
[root@kylin halo]# vim /etc/systemd/system/halo.service
[root@kylin halo]# cd /root/.halo/
[root@kylin .halo]# ll
(8)查看防火墙状态
[root@kylin .halo]# systemctl status firewalld.service
查看规则
[root@kylin .halo]# firewall-cmd --list-all
添加端口
[root@kylin .halo]# firewall-cmd --add-port=8090/tcp
再次查看规则
[root@kylin .halo]# firewall-cmd --list-all
另一种方式:关闭防火墙
[root@kylin .halo]# systemctl stop firewalld.service
[root@kylin .halo]# systemctl status firewalld.service
(9)访问halo
http://192.168.204.77:8090
(10)设置
(11)输入账户
进入系统
(12)安装主题
安装
访问
https://halo.run/themes
手动下载
上传
启用
修改主题样式
查看效果
6. kylin 部署nginx
(1)安装
[root@kylin ~]# dnf install nginx
(3)查看目录
默认配置文件:nginx.conf
[root@kylin ~]# ll /etc/nginx
(4)反向代理
[root@kylin ~]# vim /etc/nginx/nginx.conf
location / {proxy_pass http://192.168.204.77:8090;proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
(5)启动服务
[root@kylin ~]# systemctl start nginx
查看 (1个父进程。多个子进程)
[root@kylin ~]# ps -ef |grep nginx
自启
[root@kylin nginx]# systemctl enable nginx
(6)查看网络
nginx监听80端口
[root@kylin ~]# netstat -antlp
(7)访问测试反向代理
http://192.168.204.77
(8) 登录
http://192.168.204.77/admin
修改博客地址
修改前:
修改后:
7. kylin 使用 SSL证书基于https访问部署的博客系统
(1)阿里云数字证书管理服务
数字证书管理服务(原SSL证书)(SSL Certificate)-阿里云帮助中心 (aliyun.com)
(2)SSL证书类型
SSL证书选购指引_数字证书管理服务(原SSL证书)(SSL Certificate)-阿里云帮助中心 (aliyun.com)
(3) 申请个人测试证书
(4)证书审核
(5)DNS验证
设置
验证成功
已签发
(6)下载证书
选择nginx
(7) 上传证书
nginx相对路径上传证书
[root@kylin maojing]# ls
maojing.site.key maojing.site.pem
[root@kylin maojing]# ll
总用量 8
-rw-r--r-- 1 root root 1675 2月 21 2024 maojing.site.key
-rw-r--r-- 1 root root 3822 2月 21 2024 maojing.site.pem
[root@kylin maojing]# pwd
/etc/nginx/maojing
(8)修改nginx配置文件
[root@kylin maojing]# vim /etc/nginx/nginx.conf
http段新增1个server段
server{listen 443 ssl;server_name www.maojing.site;ssl_certificate maojing/maojing.site.pem;ssl_certificate_key maojing/maojing.site.key;ssl_prefer_server_ciphers on;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers "HIGH:!aNULL:!MD5";add_header X-Frame-Options DENY;add_header X-Content-Type-Options nosniff;add_header X-Xss-Protection 1;location / {proxy_pass http://192.168.204.77:8090;proxy_set_header Host $proxy_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
(9)重启服务
[root@kylin maojing]# systemctl restart nginx
(10)修改Windows域名
notepad
打开
添加解析
192.168.204.77 www.maojing.site
(11) 访问
https://www.maojing.site/
查看安全性
(12) 登录
https://www.maojing.site/admin
进入系统
二、问题
1.mysql安装报错
(1)报错
下载的软件包保存在缓存中,直到下次成功执行事务。
您可以通过执行 'dnf clean packages' 删除软件包缓存。
错误:事物测试失败:file /etc/my.cnf from install of mysql-community-server-8.0.18-1.ky10.x86_64 conflicts with file from package mariadb-common-3:10.3.39-1.p01.ky10.x86_64
(2)原因分析
mysql-community-server-8.0.18-1.ky10.x86_64 和 后面的mariadb-common-3:10.3.39-1.p01.ky10.x86_64 冲突
(3)解决方法
卸载冲突的包再重新安装。
[root@kylin yum.repos.d]# dnf remove mariadb-common-3:10.3.39-1.p01.ky10.x86_64
成功:
[root@kylin yum.repos.d]# dnf install mysql-server mysql mysql-common mysql-libs
2.查看mysql数据库报错
(1)报错
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
(2)原因分析
需要重置密码。
(3)解决方法
设置密码
mysql> alter user 'root'@'localhost' identified by 'root@mySQL123';
成功:
3.systemd服务如何实现脚本编写与管理
(1)service文件存放路径
/etc/systemd/system/* ―――― 系统管理员手动软件安装包或脚本放置于此,优先级更高/run/systemd/system/* ―――― 运行时配置文件,这个目录一般是进程在运行时动态创建unit文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即Session级别的,才在这里做修改。/usr/lib/systemd/system/* ―――― 该目录中包含的是软件包安装的单元,也就是说通过yum、dnf、rpm等软件包管理命令管理的systemd单元文件,都放置在该目录下。/lib/systemd/system: 指向/usr/lib/systemd/system。
(2)systemd 使用语法
1)语法
systemctl [command] [unit](配置的应用名称)2(command可选项
start:启动指定的unit systemctl start nginx
stop:关闭指定的unit systemctl stop nginx
restart:重启指定unit systemctl restart nginx
reload:重载指定unit systemctl reload nginx
enable:系统开机时自动启动指定unit,前提是配置文件中有相关配置 systemctl enable nginx
disable:开机时不自动运行指定unit systemctl disable nginx
status:查看指定unit当前运行状态 systemctl status nginx
(3)service unit文件
整个文件分三个部分,[Unit]·[Service]·[Install][Unit]:记录unit文件的通用信息。[Service]:记录Service的信息[Install]:安装信息。
1)[Unit]部分
Description:对本service的描述
Before, After:定义启动顺序,Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx之后启动。2) [Service]部分
Type:service的种类,包含下列几种类型:
simple 默认,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出,那么一切都退出。
forking 标准的启动方式。服务包含父进程和子进程,启动程序后,会调用 fork() 函数,通过父进程生成子进程。
oneshot:这种服务类型就是启动完成,进程就没了。属于一次性启动。
notify:跟simple 类似,但是notify会在当前服务启动完毕,发送一个信号通知Systemd。ExecStart:服务启动时执行的命令,此命令就是服务的主体。
ExecStartPre:ExecStart执行前所调用的命令。
ExecStartPost:ExecStart执行后所调用的命令。
ExecStop:定义停止当前服务时执行的命令。
EnvironmentFile:环境配置文件
PIDFile:指向当前服务 PID file 的绝对路径注意:启动、重启、停止命令全部要求使用绝对路径3)[Install]部分
WantedBy:何种情况下,服务被启用。
例如:WantedBy=multi-user.target(多用户环境下启用)
4. Linux软件安装
(1)yum/dnf
安装命令
1)安装
yum install -y XXX
dnf install -y XXX2)查找
yum search XXX
dnf search XXX3)卸载
yum remove XXX
dnf remove XXX
dnf 与 yum相同
whereis dnf
ll /usr/bin/dnfwhereis yum
ll /usr/bin/yum
(2)RPM
一般安装:rpm -ivh xxx.rpm升级安装:rpm -Uvh xxx.rpm卸载:rpm -e xxx
5.安装 OpenJDK 11 两种方式
(1)下载
OpenenJDK:Java Platform, Standard Edition 11 ReferenceImplementations
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/
(2)卸载
查看系统是否已安装OpenJDK。一般的linux都默认使用了开源的OpenJDK。
查看
rpm -qa | grep java
rpm -qa | grep jdk
批量卸载
rpm -qa | grep jdk | xargs rpm -e --nodeps
rpm -qa | grep java | xargs rpm -e --nodeps
(3)第一种方式:yum安装(适用于在线)
1)yum安装
yum search java-11-openjdk # 可以不用执行,查找安装包
yum install -y java-11-openjdk java-11-openjdk-devel # 安装2)查找JAVA安装目录3)查找安装目录
which java 或 ls -l $(which java)# 如果显示的是/usr/bin/java请执行下面命令
ls -lr /usr/bin/java
ls -lrt /etc/alternatives/java# 输出:/etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64/bin/java
# 上面的/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64就是JAVA的安装路4)配置环境变量
# 通过yum方式安装默认安装在/usr/lib/jvm文件下
# 修改JAVA_HOME为/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64
# 编辑/etc/profile文件
vim /etc/profile# 按" i "键进行编辑,设置环境变量,ESC退出编辑," :wq "保存内容
# Java Environment
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH5)使环境变量生效
source /etc/profile
(4)第二种方式:tar解压安装(适用于离线)
1)切换到root用户,在/usr下创建java文件夹
su root
mkdir /usr/java
cd /usr/java/2)tar解压文件
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz3)配置环境变量
# 修改JAVA_HOME为/usr/java/jdk-11
# 编辑/etc/profile文件
vim /etc/profile# 按" i "键进行编辑,设置环境变量,ESC退出编辑," :wq "保存内容
# Java Environment
export JAVA_HOME=/usr/java/jdk-11
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH4)使环境变量生效
source /etc/profile5)检查是否安装成功
java -version
javac
java
echo $JAVA_HOME
6. Halo 如何下载不同版本与配置文件
(1)下载
1)官网
https://halo.run2)文档
https://docs.halo.run3)社区
https://bbs.halo.run4)主题仓库
https://halo.run/themes.html5)开源地址
https://github.com/halo-dev/halo
(2)版本
下载新的 halo.service 配置文件
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service
(3)配置文件
下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
7.Halo 服务启动失败
(1)报错
[root@kylin .halo]# systemctl status halo
(2)原因分析
java服务未配置环境变量,脚本版本指定错误。
(3)解决方法
安装
[root@kylin .halo]# dnf install java-11-openjdk-devel
查找JAVA安装目录
# 查找安装目录
which java 或 ls -l $(which java)# 如果显示的是/usr/bin/java请执行下面命令
ls -lr /usr/bin/java
ls -lrt /etc/alternatives/java# 输出:/etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.21.9-1.ky10.x86_64/bin/java# 上面的/usr/lib/jvm/java-11-openjdk-11.0.21.9-1.ky10.x86_64/bin/java
就是JAVA的安装路径
配置环境变量
# 通过yum或dnf方式安装默认安装在/usr/lib/jvm文件下
# 修改JAVA_HOME为/usr/lib/jvm/java-11-openjdk-11.0.21.9-1.ky10.x86_64/bin/java# 编辑/etc/profile文件
vim /etc/profile# 按" i "键进行编辑,设置环境变量,ESC退出编辑," :wq "保存内容
# Java Environment
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.21.9-1.ky10.x86_64/bin/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH# 使环境变量生效
source /etc/profile
修改脚本:
修改前:
修改后:
成功:
[root@kylin ~]# systemctl start halo
[root@kylin ~]# systemctl status halo
8. Halo 附件上传报错
(1)报错
(2)原因分析
查看nginx日志
[root@kylin ~]# cd /var/log/nginx/[root@kylin nginx]# ls[root@kylin nginx]# ll
查看错误日志 (文件太大,都没转发出去就被nginx拦截了)
[root@kylin nginx]# tail -100 error.log
2024/02/19 22:33:58 [error] 67431#0: *86 client intended to send too large body: 4309547 bytes, client: 192.168.204.1, server: _, request: "POST /api/admin/attachments/upload HTTP/1.1", host: "192.168.204.77", referrer: "http://192.168.204.77/admin"
(3)解决方法
配置nginx上传文件最大限制。
[root@kylin nginx]# vim /etc/nginx/nginx.conf
#http段添加
client_max_body_size 500M;
重启
[root@kylin nginx]# systemctl restart nginx
查看服务
[root@kylin nginx]# ps -ef |grep nginx
成功: