服务器环境部署-ARM架构

前言

常见的信创环境是麒麟操作系统,使用的ARM架构

服务器信息

查看服务器架构

1
uname -m
  • 如果输出是 x86_64,则表示服务器是 x86 架构。
  • 如果输出是 aarch64,则表示服务器是 ARM 架构(ARM 64位)。
  • 如果输出是 armv7l,则表示服务器是 ARM 架构(ARM 32位)。

系统版本

1
cat /etc/redhat-release

查看磁盘是否都挂载

1
lsblk

镜像设置

https://mirrors.huaweicloud.com/mirrorDetail/5ec1f784c1bbdcb43010ab9f?mirrorName=centos-altarch&catalog=os

一定要注意是arm版的镜像地址。

备份配置文件:

1
cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

下载

1
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-AltArch-7.repo

刷新缓存

1
2
3
yum clean all
yum makecache
sudo yum update -y

配置时间同步

chrony

卸载

1
yum remove -y chrony

安装chrony(时间同步客户端)

Centos/redhat/alios:

1
yum install -y chrony

打开/etc/chrony.conf,新增一行

1
vim /etc/chrony.conf

添加

1
server ntp.aliyun.com iburst

重启chrony

1
systemctl restart chronyd

查看同步源是否可达

1
chronyc sources
  • Reach:表示服务器的可达性(8 进制),377 表示完全可达。

手动触发同步

1
chronyc -a makestep

查看是否正常

1
chronyc tracking

1
2
date
timedatectl

开机启动

CentOS7

1
systemctl enable chronyd.service

ntp

查看是否安装

1
ntpd --version

安装

1
yum install -y ntp

装完成后,进入ntp服务的配置文件,一般位于/etc/ntp.conf。使用文本编辑器打开该文件:

1
vi /etc/ntp.conf

将服务器地址添加到配置文件中,在文件最后添加以下内容:

1
2
3
4
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org

重启ntp服务,使配置的修改生效:

1
systemctl restart ntpd

查看服务状态

1
systemctl status ntpd

开机启动

1
systemctl enable ntpd

查看时间

1
date

查看硬件时钟

1
hwclock

查看同步服务器状态

1
ntpq -p

查看同步状态

1
ntpstat

如果不同步查找原因

1
2
ping 0.pool.ntp.org
traceroute 0.pool.ntp.org

查看日志

1
sudo journalctl -u ntpd

手动同步时间

1
date -s "2024-11-06 10:35:10"

Nginx安装与配置

安装

下载

1
wget https://nginx.org/download/nginx-1.22.0.tar.gz

安装依赖

1
yum install -y pcre pcre-devel zlib zlib-devel gcc-c++ openssl openssl-devel

解压

1
2
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0

编译安装

1
2
./configure
make && make install

查找安装路径

1
whereis nginx

查看配置信息

1
2
cd  /usr/local/nginx/sbin
./nginx -t

添加软连接

1
sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

这时就可以这样检测了

1
nginx -t

注册服务

在 Linux 上,将 Nginx 配置为一个服务以便它可以作为系统服务启动、停止和管理,通常需要创建一个 systemd 服务文件。

以下是如何为编译安装的 Nginx 创建一个 systemd 服务文件的步骤:

1. 创建 Nginx 服务文件

/etc/systemd/system/ 目录下创建一个新的服务文件,例如 nginx.service

1
sudo vi /etc/systemd/system/nginx.service

2. 编辑服务文件内容

将以下内容粘贴到 nginx.service 文件中。

注意,根据你的 Nginx 安装路径调整 ExecStartExecReload 的路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3. 启用并启动 Nginx 服务

保存并关闭文件后,使用以下命令重新加载 systemd 配置,启动 Nginx 服务,并设置开机自启动:

1
2
3
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx

4. 检查服务状态

你可以使用以下命令检查 Nginx 服务的状态:

1
sudo systemctl status nginx

5. 常用操作

启动服务

1
sudo systemctl start nginx

停止服务

1
sudo systemctl stop nginx

重启服务

1
sudo systemctl restart nginx

重新加载配置

1
sudo systemctl reload nginx

查看服务日志

1
sudo journalctl -u nginx

添加配置

1
cd /usr/local/nginx/conf

修改根配置

1
vi nginx.conf

http内,server同级添加

1
include /etc/nginx/conf.d/*.conf;

创建目录

1
mkdir -p /etc/nginx/conf.d/

添加配置

_school81.xhkjedu.com.conf

1
2
3
4
5
6
server {  
listen 81;
server_name 127.0.0.1;
index index.html;
root /data/web_front/school;
}

重启Nginx

1
2
3
cd /usr/local/nginx

systemctl restart nginx

毕昇JDK(ARM)

毕昇JDK是华为内部基于OpenJDK定制的Huawei JDK的开源版本。

Huawei JDK运行在华为内部500多个产品上,研发团队积累了丰富的开发经验,解决了业务实际运行中遇到的多个疑难问题。

毕昇JDK作为OpenJDK的下游,是一款高性能、可用于生产环境的OpenJDK发行版。毕昇JDK对华为内部应用场景中遇到的一些性能问题和稳定性问题进行了修复,并在ARM架构上进行了性能优化和稳定性增强,在ARM架构上更稳定,在大数据等场景下可以获得更好的性能。

毕昇JDK致力于为JAVA开发者提供一款稳定可靠、高性能、易调测的JDK,也为用户在ARM架构上提供一个更好的选择。

https://www.openeuler.org/zh/other/projects/bishengjdk/

下载

arm

1
wget https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-8u422-linux-aarch64.tar.gz

解压

1
2
3
4
sudo mkdir /usr/local/jdk/
sudo mv bisheng-jdk-8u422-linux-aarch64.tar.gz /usr/local/jdk/
cd /usr/local/jdk
sudo tar zxvf bisheng-jdk-8u422-linux-aarch64.tar.gz

打开文件

1
sudo vi /etc/profile

添加

1
2
3
4
export JAVA_HOME=/usr/local/jdk/bisheng-jdk1.8.0_422
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

生效

1
source /etc/profile

测试

1
java -version

数据库-PolarDB

https://openpolardb.com/document?type=PolarDB-X

集中式部署

这里只是为了体验,采用集中式部署

安装

下载地址

https://github.com/polardb/polardbx-engine/releases/

通过百度网盘分享的文件:t-polardbx-engine-2.4.0-a6d7022.el7…
链接:https://pan.baidu.com/s/1jQYsHe_Xnv1tUiOCKjkhbw?pwd=psvm
提取码:psvm

安装

1
yum install -y t-polardbx-engine-2.4.0-a6d7022.el7.aarch64.rpm

安装后的二进制文件,会出现在 /opt/polardbx_engine/bin 中,推荐确认一下该目录已经包含 mysqld 文件。

1
cd /opt/polardbx_engine/bin

配置及启动

配置及启动

创建 polarx 用户(您也可以使用其他非 root 用户),准备一份 my.cnf(参考模板)和数据目录(如果改了 my.cnf,则下面的目录也要相应修改),就可以准备启动了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建并切换到 polarx 用户
useradd -ms /bin/bash polarx
echo "polarx:polarx" | chpasswd
echo "polarx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - polarx
# 创建必要目录
mkdir polardbx-engine
cd polardbx-engine && mkdir log mysql run data tmp

# 准备一份 my.cnf 文件,可以参考本文末尾的模板,放置于当前目录
vi my.cnf

# 初始化,如果 my.cnf 不在当前目录,请将下述命令的 my.cnf 改成绝对路径
/opt/polardbx_engine/bin/mysqld --defaults-file=my.cnf --initialize-insecure
# 启动
/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf &

稍等片刻,即可登录数据库。

查看是否启动

1
lsof -i:4886

在 Leader 节点上执行下面的命令,可以看到整个集群的状态。

我们用的集中式部署,可以看到集群只有1台,并且它是Leader

1
SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL;

配置文件

创建日志目录

1
mkdir /home/polarx/polardbx-engine/log

编辑配置文件

1
vi /home/polarx/polardbx-engine/my.cnf

my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[mysqld]
basedir = /opt/polardbx_engine
log_error_verbosity = 2
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = mysql-binlog
binlog_format = row
binlog_row_image = FULL
master_info_repository = TABLE
relay_log_info_repository = TABLE

# change me if needed
datadir = /home/polarx/polardbx-engine/data
tmpdir = /home/polarx/polardbx-engine/tmp
socket = /home/polarx/polardbx-engine/tmp.mysql.sock
log_error = /home/polarx/polardbx-engine/log/alert.log
port = 4886
cluster_id = 1234
cluster_info = 127.0.0.1:14886@1
server_id = 2712347953

# base config
character-set-server=utf8mb4
max_connections = 1000
max_allowed_packet = 256M
lower_case_table_names=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_authentication_plugin=mysql_native_password

# slow_query
slow_query_log = ON
slow-query-log-file = /home/polarx/polardbx-engine/log/polardbx-slow.log
long_query_time = 2

# performance optimization
innodb_flush_log_at_trx_commit=2
sort_buffer_size = 4M
thread_cache_size = 128
innodb_buffer_pool_size = 5000M
group_concat_max_len = 102400

[mysqld_safe]
pid_file = /home/polarx/polardbx-engine/run/mysql.pid

[client]
default-character-set=utf8mb4

其中新增了如下的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysqld]
# base config
character-set-server=utf8mb4
max_connections = 1000
max_allowed_packet = 256M
lower_case_table_names=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_authentication_plugin=mysql_native_password

# slow_query
slow_query_log = ON
slow-query-log-file = /home/polarx/polardbx-engine/log/polardbx-slow.log
long_query_time = 2

# performance optimization
innodb_flush_log_at_trx_commit=2
sort_buffer_size = 4M
thread_cache_size = 128
innodb_buffer_pool_size = 5000M
group_concat_max_len = 102400

[client]
default-character-set=utf8mb4

其中

基本配置

  • max_connections=1000:设置 MySQL 允许的最大连接数为 1000。这意味着最多可以同时有 1000 个客户端连接到 MySQL 服务器。
  • max_allowed_packet=256M:设置 MySQL 服务器允许的最大数据包大小为 256MB。这一配置决定了单个 SQL 语句、数据行或结果集允许的最大字节数。
  • lower_case_table_names=1:表名不区分大小写。
  • sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES:放宽了SQL限制,在SQL报错时配置。
  • default_authentication_plugin=mysql_native_password:使用旧版本默认的身份验证机制,兼容性更好。

字符集配置

1
2
3
4
5
[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

性能优化配置

1
2
3
4
5
innodb_flush_log_at_trx_commit=2
sort_buffer_size = 4M
thread_cache_size = 128
innodb_buffer_pool_size = 5000M
group_concat_max_len = 102400

作用

  1. innodb_flush_log_at_trx_commit=2
  • 作用:此设置控制事务日志的刷新策略。值为 2 表示每次事务提交时,日志只会写到日志文件,而不会立即刷新到磁盘。这提高了性能,但在崩溃情况下可能会丢失最近的部分事务。
  • 用途:适合性能要求较高的场景,但要注意可能的数据丢失风险。
  1. sort_buffer_size=4M
  • 作用:这个参数指定每个线程用于排序操作的缓冲区大小,默认设置为 4MB。在执行 ORDER BYGROUP BY 查询时,MySQL 会使用这个缓冲区。
  • 用途:增大该值可以提高大型数据集的排序效率,特别是在频繁进行排序操作时。需要根据实际需求和系统内存来调整该值。
  1. thread_cache_size=128
  • 作用:控制 MySQL 为新连接缓存的线程数量。该设置表明最多可以缓存 128 条线程。如果当前活跃线程少于这个数量,MySQL 将重用这些线程,而不是每次都创建新线程。
  • 用途:提高连接处理的效率,减少频繁创建和销毁线程的开销,适合高并发的应用场景。
  1. innodb_buffer_pool_size=5000M
  • 作用:指定 InnoDB 存储引擎用于缓冲数据和索引的内存池大小,总共 5000MB(5GB)。这是提升 InnoDB 表性能的关键参数。
  • 用途:一个较大的缓冲池可以显著提高读写性能,能够缓存更多的数据和索引,从而减少磁盘 I/O。recommended to set this value to approximately 70-80% of your available memory if the server is dedicated to MySQL.
  1. group_concat_max_len=102400
  • 作用:该参数定义了 GROUP_CONCAT 函数返回的最大长度,设置为 102400 字节。如果结果超过该值,将会被截断。
  • 用途:适合需要处理大数据量结果的查询,增加这个值可以避免在拼接字符串时信息丢失。

表名不区分大小写

1
SHOW VARIABLES LIKE 'lower_case_table_names';

  • 0: 表名是区分大小写的。在 Linux 系统上,默认使用此设置。
  • 1: 表名不区分大小写。通常在 Windows 系统上使用。
  • 2: 表名是区分大小写的,但在网站服务器上访问时隐式转换为小写。

配置文件中添加

1
lower_case_table_names=1

sql-mode

Expression #3 of ORDER BY clause is not in SELECT list, references column ‘ireciting_base.m.create_time’ which is not in SELECT list; this is incompatible with DISTINCT

原因

DISTINCT去重关键字版本不兼容(字面意思), 其实修改以下配置文件,去掉sqlmode中的ONLY_FULL_GROUP_BY模式即可

解决办法

mysql配置文件添加如下代码

1
2
[mysqld]
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

sql_mode 变量用于控制数据库的行为,尤其是在数据验证和执行 SQL 语句时。你提到的 sql_mode 包含多个选项,它们的具体作用如下:

  1. STRICT_TRANS_TABLES
  • 作用:在事务表(例如使用 InnoDB 存储引擎的表)中,如果出现不合法的插入,MySQL 将返回错误,而不是默默地将数据插入为 NULL 或默认值。这意味着如果你试图向表中插入无效的数据,MySQL 将停止执行并给出错误提示。
  • 用途:帮助维护数据的完整性,使得应用程序能够更早地捕捉到数据问题。
  1. NO_ZERO_IN_DATE
  • 作用:禁止在日期字段中使用零值。例如,'2024-00-01'(月份为零)将被视为无效,插入将失败。
  • 用途:确保日期数据的有效性,防止不合法的日期插入数据库。
  1. NO_ZERO_DATE
  • 作用:禁止使用‘0000-00-00’作为日期值。如果试图插入或更新为此值,MySQL 会返回错误。
  • 用途:确保插入的日期数据是有效的,防止使用零日期占位符。
  1. ERROR_FOR_DIVISION_BY_ZERO
  • 作用:当发生除以零的操作时,MySQL 将返回错误,而不是将结果返回为 NULL 或其他值。
  • 用途:在执行 SQL 查询计算时,避免由于除以零导致的不准确结果,从而更容易发现潜在的逻辑错误。
  1. NO_ENGINE_SUBSTITUTION
  • 作用:如果指定的存储引擎在创建表时不可用,MySQL 将返回错误,而不是用默认存储引擎(如 InnoDB)替代它。
  • 用途:确保使用的存储引擎是用户期望的,避免意外地使用其他引擎。

重启

以下是通过 mysqld_safe 启动的 PolarDB-X 实例重启的步骤:

  1. 找到正在运行的 MySQL 实例进程

首先,你需要找到 PolarDB-X 服务的进程 ID (PID):

1
ps aux | grep /opt/polardbx_engine/bin/mysqld

这条命令会列出所有与 mysqld 相关的进程。

结束的先后顺序

1
2
/opt/polardbx_engine/bin/mysqld_safe
/opt/polardbx_engine/bin/mysqld
  1. 停止 PolarDB-X 实例

使用 kill 命令停止该进程:

1
sudo kill -TERM <PID>

sudo kill -TERM 命令中,-TERM 实际上是 -15 的别名,用于向进程发送一个终止信号(SIGTERM)。

这是一个请求进程优雅地终止的信号,它允许进程清理资源并进行正常的关闭。

或者,若需要强制终止进程,可以使用:

1
sudo kill -9 <PID>
  1. 确认进程已停止
1
lsof -i:4886
  1. 启动 PolarDB-X 实例

使用原来的启动命令重新启动 PolarDB-X 实例:

1
/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf &
  1. 检查服务状态

你可以通过以下命令检查 PolarDB-X 实例是否成功启动:

1
lsof -i:4886

如果启动失败可以查看日志:

1
tail -f /home/polarx/polardbx-engine/log/alert.log

登录

PolarDB没有客户端,因为兼容Mysql,我们可以使用MySQL的客户端进行连接

添加源

1
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

安装客户端

1
2
sudo yum update
yum install -y --nogpgcheck mysql-community-client

登录

1
mysql -h127.0.0.1 -P4886 -uroot

修改

查看用户

1
SELECT User, Host,authentication_string FROM mysql.user;

添加远程root用户

1
2
3
4
5
6
7
8
CREATE USER 'root'@'%' IDENTIFIED BY 'Xhkjedud07';
ALTER USER 'root'@'%' PASSWORD EXPIRE NEVER;

-- 赋予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

-- 刷新权限
FLUSH PRIVILEGES;

修改密码

1
2
alter user 'root'@'%' identified by "Xhkjedud07_2";
flush privileges;

修改本地root密码

1
2
alter user root@localhost identified by "Xhkjedud07";
flush privileges;

如果想清空本地root的密码

1
2
alter user root@localhost identified by "";
flush privileges;

重装

默认安装后,表名是区分大小写的,这时候修改配置不区分大小写会失败,所以这里只能重装。

首先,你需要找到 PolarDB-X 服务的进程 ID (PID):

1
ps aux | grep mysqld

这条命令会列出所有与 mysqld 相关的进程。记下你认为是 PolarDB-X 实例的 PID。

注意进程的用户是polarx

停止 PolarDB-X 实例

使用 kill 命令停止该进程:

1
sudo kill -TERM <PID>

结束的先后顺序

1
2
/opt/polardbx_engine/bin/mysqld_safe
/opt/polardbx_engine/bin/mysqld

查看是否停止

1
lsof -i:4886

删除之前的数据

1
2
3
4
5
rm -rf /opt/polardbx_engine
rm -rf /home/polarx/polardbx-engine

yum list installed
yum remove -y t-polardbx-engine.x86_64

然后再按上面重新安装即可

Redis

安装

1
2
yum install -y epel-release
yum install -y redis

启动

1
service redis start

设置开机自启

1
chkconfig redis on

查看运行状态

1
ps -ef | grep redis

允许远程连接

yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到

1
vi /etc/redis.conf

注释bind 127.0.0.1 就可以远程访问 如下

1
bind 127.0.0.1

改为

1
# bind 127.0.0.1

Redis3.2之后还要修改protected-mode 默认的yes改为no

第80行:

1
protected-mode no

重启

1
service redis restart

设置连接密码

yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到

1
vim /etc/redis.conf

找到 480行

1
#requirepass foobared

去掉行前的注释,并修改密码为所需的密码,保存文件

1
requirepass myRedis

重启redis

1
service redis restart

带密码连接

1
redis-cli -h 127.0.0.1 -p 6379 -a myRedis

RabbitMQ

安装

1
yum install -y rabbitmq-server

启动

1
systemctl start rabbitmq-server

查看版本

1
rpm -q rabbitmq-server

状态

1
systemctl status rabbitmq-server

可以看到

Logs: /var/log/rabbitmq/rabbit@dc6-80-564.log

打开这个文件

1
vi /var/log/rabbitmq/rabbit@dc6-80-564.log

可以看到

config file(s) : /etc/rabbitmq/rabbitmq.config

打开配置文件

1
vi /etc/rabbitmq/rabbitmq.config

编辑内容如下:

1
[{rabbit, [{loopback_users, []}]}].

这里的意思是开放使用

默认创建的用户guest,密码也是guest。

该用户不能用于远程登录,可用于管理UI的登录。

登录后能添加账号后删除guest账号。

image-20241107095516946

保存配置后重启服务:

1
systemctl restart rabbitmq-server

开放5672端口:

1
2
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload

开机启动

1
systemctl enable rabbitmq-server

查看

1
systemctl list-units --type=service | grep mq

开启管理UI:

1
2
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server

添加防火墙规则

1
2
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload

就可以通过http://ip:15672访问管理页面

添加用户后要设置权限

image-20241108121233904

远程测试

1
nc -zv 10.208.175.82 5672

Tomcat

自己安装Tomcat8

下载安装

https://archive.apache.org/dist/tomcat/tomcat-8/

这里使用8.5.99版本

https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.99/bin/

搜索apache-tomcat-8.5.99.tar.gz

查看Java环境变量

1
2
3
echo $JAVA_HOME
echo $JRE_HOME
java -version

创建目录

1
mkdir -p /data/tools

服务器上下载

1
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.99/bin/apache-tomcat-8.5.99.tar.gz

解压

1
tar zxvf apache-tomcat-8.5.99.tar.gz -C /data/tools

启动

1
2
cd /data/tools/apache-tomcat-8.5.99/bin/
./startup.sh

注册为服务

创建配置

1
vi /etc/init.d/tomcat8.sh

配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run

#Tomcat根位置
TOMCAT_ROOT=/data/tools/apache-tomcat-8.5.99/

# 手动加载 /etc/profile
. /etc/profile

javahome() {
echo "Show JAVA_HOME"
echo $JAVA_HOME
}

#开始方法
start() {
cd $TOMCAT_ROOT
./bin/startup.sh
}

#结束方法
stop() {
cd $TOMCAT_ROOT
./bin/shutdown.sh
}

case "$1" in
javahome)
javahome
;;
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac

注意

/etc/profile 文件通常在用户登录时由用户会话(如 bash 会话)读取并执行。

init.d 脚本是在系统启动时由 init 进程(或 systemd)执行的,它们运行在系统级别,而不是用户会话级别。

所以init.d 中的脚本读取不到 /etc/profile 文件中的环境变量。

我们可以使用. /etc/profile进行手动加载。

设置权限

1
chmod +x /etc/init.d/tomcat8.sh

首先,添加为系统服务

1
chkconfig --add tomcat8.sh

开机自启动

1
chkconfig tomcat8.sh on

查看

1
chkconfig --list

启动

1
service tomcat8.sh start

停用

1
service tomcat8.sh stop

查看启动情况

1
lsof -i:8080

yum安装Tomcat7

这种方式安装的是Tomcat7.0.76

安装

1
yum install -y tomcat

安装位置

1
cd /usr/share/tomcat

日志文件路径

1
cd /var/log/tomcat

启动

1
systemctl start tomcat

开放端口

1
2
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

查看服务

1
lsof -i:8080

查看服务位置

1
systemctl status tomcat

image-20241108174929861

编辑配置

1
vi /usr/lib/systemd/system/tomcat.service

从中可以看到服务启动时加载的配置

添加环境变量

1
vi /etc/tomcat/tomcat.conf

添加

1
JAVA_OPTS="-Desen.abi.workdir=/usr/share/app/workdir"

重启

1
2
3
4
systemctl stop tomcat
rm -rf /var/log/tomcat/*
systemctl restart tomcat
lsof -i:8080

查看日志

1
grep "esen.abi.workdir" /var/log/tomcat/catalina.2024-11-11.log

查看版本

1
grep "Apache Tomcat" /var/log/tomcat/catalina.2024-11-11.log

开机启动

1
sudo systemctl enable tomcat

禁用开机启动

1
sudo systemctl disable tomcat

卸载

1
yum remove -y tomcat