部署 AWS EC2 版本
本地安装基于AWS Linux2版本进行安装
系统更新及资源下载
-
配置安全组
添加如下端口:
- 22:远程客户端访问EC2
- 15672:RabbitMQ的网页端访问
- 42000: 仓鼠站点端口
- 42010: 仓鼠调度接口端口
-
更新系统环境
更新新建的EC2系统环境,
[ec2-user@ip-172-31-29-0 ~]$ sudo su
[root@ip-172-31-29-0 tools]# yum update
[root@ip-172-31-29-0 tools]# yum install ca-certificates
[root@ip-172-31-29-0 tools]# update-ca-trust
# 调整时区
[root@ip-172-31-29-0 ec2-user]# timedatectl set-timezone "Asia/Shanghai"
[root@ip-172-31-29-0 ec2-user]# timedatectl status
Local time: Tue 2024-12-24 13:58:50 CST
Universal time: Tue 2024-12-24 05:58:50 UTC
RTC time: Tue 2024-12-24 05:58:51
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[root@ip-172-31-29-0 ec2-user]#下载中间件安装包
[root@ip-172-31-29-0 tools]# mkdir /hamster
[root@ip-172-31-29-0 tools]# mkdir -p /hamster/tools
[root@ip-172-31-29-0 tools]# chmod 777 /hamster/tools/
[root@ip-172-31-29-0 tools]# cd /hamster/tools/
[root@ip-172-31-29-0 tools]# wget https://download.visualstudio.microsoft.com/download/pr/4e3b04aa-c015-4e06-a42e-05f9f3c54ed2/74d1bb68e330eea13ecfc47f7cf9aeb7/dotnet-sdk-8.0.404-linux-x64.tar.gz
[root@ip-172-31-29-0 tools]# wget https://github.com/erlang/otp/releases/download/OTP-27.2/otp_src_27.2.tar.gz
[root@ip-172-31-29-0 tools]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.0.5/rabbitmq-server-generic-unix-4.0.5.tar.xz
[root@ip-172-31-29-0 tools]# wget https://ftp.postgresql.org/pub/source/v17.2/postgresql-17.2.tar.gz
安装Erlang/OTP 27
-
安装系统
[root@ip-172-31-29-0 tools]# yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
[root@ip-172-31-29-0 tools]# tar -zxf otp_src_27.2.tar.gz
[root@ip-172-31-29-0 tools]# cd otp_src_27.2/
[root@ip-172-31-29-0 otp_src_27.2]# ./configure --prefix=/hamster/erlang27
[root@ip-172-31-29-0 otp_src_27.2]# make && make install -
配置系统
[root@ip-172-31-29-0 otp_src_27.2]# vi /etc/profile
export ERLPATH=/hamster/erlang27
export PATH=$PATH:$ERLPATH/bin
export USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@ip-172-31-29-0 otp_src_27.2]# source /etc/profile
[root@ip-172-31-29-0 otp_src_27.2]# vi /root/.bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# load /etc/profile auto
if [ -f /etc/profile ]; then
. /etc/profile
fi
# 验证安装是否成功
[root@ip-172-31-29-0 otp_src_27.2]# erl
Erlang/OTP 27 [erts-15.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]
Eshell V15.2 (press Ctrl+G to abort, type help(). for help)
1> halt().
# 清理安装的中间过程目录
[root@ip-172-31-29-0 otp_src_27.2]# rm -rf /hamster/tools/otp_src_27.2
安装RabbitMQ4
-
安装系统
[root@ip-172-31-29-0 tools]# mkdir /hamster/rabbitmq4
[root@ip-172-31-29-0 tools]# tar -xvf rabbitmq-server-generic-unix-4.0.5.tar.xz -C /hamster/rabbitmq4 --strip-components=1
[root@ip-172-31-29-0 tools]# vi /etc/profile
export ERLPATH=/hamster/erlang27
export RABPATH=/hamster/rabbitmq4
export PATH=$PATH:$ERLPATH/bin:$RABPATH/sbin
export USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@ip-172-31-29-0 tools]# source /etc/profile -
配置服务
[root@ip-172-31-29-0 tools]# cd /hamster/rabbitmq4/sbin/
[root@ip-172-31-29-0 sbin]# ./rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@ip-172-31-29-0:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@ip-172-31-29-0...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
# 如果需要的话,可以激活MQTT协议
[root@ip-172-31-29-0 sbin]# ./rabbitmq-plugins enable rabbitmq_mqtt
Enabling plugins on node rabbit@Hamster:
rabbitmq_mqtt
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_mqtt
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@Hamster...
The following plugins have been enabled:
rabbitmq_mqtt
started 1 plugins.
[root@ip-172-31-29-0 sbin]# cd /hamster/rabbitmq4/etc/rabbitmq/
[root@ip-172-31-29-0 rabbitmq]# ls
enabled_plugins
# 创建rabbitmq.conf配置文件,并下载模板内容后再修改
[root@ip-172-31-29-0 rabbitmq]# vi rabbitmq.conf
# 创建rabbitmq.conf文件,默认是没有的,修改,将超时时间设置为4小时
consumer_timeout = 14400000
# 运行guest用户从任何机器上登录,默认只能localhost登录,修改配置可以从任何机器上访问站点。
loopback_users.guest = false
# 额外添加配置:max message size
max_message_size = 10485760 -
配置自启动服务
[root@ip-172-31-29-0 rabbitmq]# vi /etc/systemd/system/rabbitmq.service
[Unit]
Description=RabbitMQ Service
After=network.target
[Service]
Type=simple
User=root
Group=root
Environment=PATH=$PATH:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/hamster/erlang27/bin:/hamster/rabbitmq4/sbin
ExecStart=/hamster/rabbitmq4/sbin/rabbitmq-server
ExecStop=/hamster/rabbitmq4/sbin/rabbitmqctl stop
restart=always
[Install]
WantedBy=multi-user.target
[root@ip-172-31-29-0 rabbitmq]# systemctl daemon-reload
[root@ip-172-31-29-0 rabbitmq]# systemctl enable rabbitmq.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq.service to /etc/systemd/system/rabbitmq.service.
[root@ip-172-31-29-0 rabbitmq]# systemctl start rabbitmq.service
[root@ip-172-31-29-0 rabbitmq]# systemctl status rabbitmq.service
● rabbitmq.service - RabbitMQ Service
Loaded: loaded (/etc/systemd/system/rabbitmq.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-12-24 14:31:14 CST; 7s ago
Main PID: 13817 (rabbitmq-server)
CGroup: /system.slice/rabbitmq.service
├─13817 /bin/sh /hamster/rabbitmq4/sbin/rabbitmq-server
├─13836 /hamster/erlang27/lib/erlang/erts-15.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -pc u...
├─13877 erl_child_setup 65535
├─14054 sh -s disksup
├─14057 /hamster/erlang27/lib/erlang/lib/os_mon-2.10.1/priv/bin/memsup
├─14059 /hamster/erlang27/lib/erlang/lib/os_mon-2.10.1/priv/bin/cpu_sup
├─16037 /hamster/erlang27/lib/erlang/erts-15.2/bin/inet_gethost 4
├─16041 /hamster/erlang27/lib/erlang/erts-15.2/bin/inet_gethost 4
└─17480 /bin/sh -s rabbit_disk_monitor -
创建用户
[root@ip-172-31-29-0 rabbitmq]# rabbitmqctl add_user hamster hamster123
Adding user "hamster" ...
Done. Dont forget to grant the user permissions to some virtual hosts! See rabbitmqctl help set_permissions to learn more.
[root@ip-172-31-29-0 rabbitmq]# rabbitmqctl set_user_tags hamster administrator
Setting tags for user "hamster" to [administrator] ...
[root@ip-172-31-29-0 rabbitmq]# rabbitmqctl set_permissions -p / hamster ".*" ".*" ".*"
Setting permissions for user "hamster" in vhost "/" ...
[root@ip-172-31-29-0 rabbitmq]# rabbitmqctl list_users
Listing users ...
user tags
guest [administrator]
hamster [administrator] -
客户端访问
在启动服务并添加安全组端口后,既可以访问RabbitMQ的Web端界面,地址一般类似为:
安装PostgreSQL17
-
安装编译环境
[root@ip-172-31-29-0 rabbitmq]# cd /hamster/tools/
[root@ip-172-31-29-0 tools]# yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake bison
[root@ip-172-31-29-0 tools]# yum install -y libicu-devel --skip-broken
[root@ip-172-31-29-0 tools]# yum install -y libuuid-devel -
安装系统
[root@ip-172-31-29-0 tools]# tar -zxvf postgresql-17.2.tar.gz
[root@ip-172-31-29-0 tools]# cd postgresql-17.2/
[root@ip-172-31-29-0 postgresql-17.2]# ./configure --prefix=/hamster/postgresql17 --with-uuid=e2fs
[root@ip-172-31-29-0 postgresql-17.2]# make && make install
[root@ip-172-31-29-0 postgresql-17.2]# cd contrib/uuid-ossp/
[root@ip-172-31-29-0 uuid-ossp]# make && make install -
创建操作账号
[root@ip-172-31-29-0 uuid-ossp]# groupadd postgres
[root@ip-172-31-29-0 uuid-ossp]# useradd -g postgres postgres
[root@ip-172-31-29-0 uuid-ossp]# passwd postgres
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@ip-172-31-29-0 uuid-ossp]# id postgres
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres) -
创建数据目录并配置环境
[root@ip-172-31-29-0 uuid-ossp]# mkdir -p /hamster/postgresql17/data
[root@ip-172-31-29-0 uuid-ossp]# chown -R postgres:postgres /hamster/postgresql17/data/
[root@ip-172-31-29-0 uuid-ossp]# chmod -R 700 /hamster/postgresql17/data/
[root@ip-172-31-29-0 uuid-ossp]# vi /home/postgres/.bashrc
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
export PGHOME=/hamster/postgresql17
export PGDATA=/hamster/postgresql17/data
export PATH=$PATH:/$PGHOME/bin
[root@ip-172-31-29-0 uuid-ossp]# source /home/postgres/.bashrc
[root@ip-172-31-29-0 uuid-ossp]# su postgres
[postgres@ip-172-31-29-0 uuid-ossp]$ initdb
[postgres@ip-172-31-29-0 uuid-ossp]$ cd /hamster/postgresql17/data/
[postgres@ip-172-31-29-0 data]# vi postgresql.conf
# 修改配置文件,修改为*,允许其他机器可以连接改数据库
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
max_connections=200 # 调整数据库最大用户连接数,可以适当调整
[postgres@ip-172-31-29-0 data]$ vi pg_hba.conf
# IPv4 local connections:
### 下面可选修改,配置后所有机器均可以无密码访问数据库(仅仅在安全的环境下可用,不建议修改)
# host all all 0.0.0.0/0 trust
# 下面配置将限制仅IP地址为239的服务器可远程连接数据库,且需要密码访问
host all all 192.168.13.239/32 md5
# 本地也需要使用密码访问。如果设置为:trust,则可以无密码登陆
host all all 127.0.0.1/32 md5
# 启动数据库服务测试
[postgres@ip-172-31-29-0 data]$ pg_ctl -D /hamster/postgresql17/data -l /hamster/postgresql17/data/logfile start
waiting for server to start.... done
server started
# 登陆数据库服务,修改postgres登陆密码为:abc123456
[postgres@ip-172-31-29-0 data]$ psql
psql (17.2)
Type "help" for help.
postgres=# alter user postgres with password 'abc123456';
ALTER ROLE
postgres=# \q
[postgres@ip-172-31-29-0 data]$ pg_ctl stop
waiting for server to shut down.... done
server stopped -
配置自启动服务
[postgres@ip-172-31-29-0 data]$ exit
exit
[root@ip-172-31-29-0 ec2-user]# vi /etc/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL Database Server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/hamster/postgresql17/bin/pg_ctl start -D /hamster/postgresql17/data -l /hamster/postgresql17/data/logfile
ExecStop=/hamster/postgresql17/bin/pg_ctl stop -D /hamster/postgresql17/data
ExecReload=/hamster/postgresql17/bin/pg_ctl reload -D /hamster/postgresql17/data
[Install]
WantedBy=multi-user.target
[root@ip-172-31-29-0 ec2-user]#
[root@ip-172-31-29-0 data]# systemctl daemon-reload
[root@ip-172-31-29-0 data]# systemctl enable postgresql.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /etc/systemd/system/postgresql.service.
[root@ip-172-31-29-0 data]# systemctl start postgresql.service
[root@ip-172-31-29-0 data]# systemctl status postgresql.service
● postgresql.service - PostgreSQL Database Server
Loaded: loaded (/etc/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-12-24 16:04:48 CST; 8s ago
Process: 24885 ExecStart=/hamster/postgresql16/bin/pg_ctl start -D /hamster/postgresql16/data -l /hamster/postgresql16/data/logfile (code=exited, status=0/SUCCESS)
Main PID: 24887 (postgres)
CGroup: /system.slice/postgresql.service
├─24887 /hamster/postgresql16/bin/postgres -D /hamster/postgresql16/data
├─24888 postgres: checkpointer
├─24889 postgres: background writer
├─24891 postgres: walwriter
├─24892 postgres: autovacuum launcher
└─24893 postgres: logical replication launcher
安装.Net8 SDK
[root@ip-172-31-29-0 data]# cd /hamster/tools/
[root@ip-172-31-29-0 tools]# mkdir -p /hamster/dotnet8
[root@ip-172-31-29-0 tools]# tar -zxf dotnet-sdk-8.0.404-linux-x64.tar.gz -C /hamster/dotnet8/
[root@ip-172-31-29-0 tools]# vi /etc/profile
export DOTNET_ROOT=/hamster/dotnet8
export ERLPATH=/hamster/erlang27
export RABPATH=/hamster/rabbitmq4
export PATH=$PATH:$ERLPATH/bin:$RABPATH/sbin:$DOTNET_ROOT
export USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@ip-172-31-29-0 tools]# source /etc/profile
[root@ip-172-31-29-0 tools]# dotnet --version
8.0.404
部署仓鼠数据服务
-
Hamster Portal
[root@ip-172-31-29-0 data]# cd /hamster/tools/
[root@ip-172-31-29-0 tools]# unzip hamster_portal_linux_2024.zip -d /hamster/hamster-portal
[root@ip-172-31-29-0 tools]# chmod +X /hamster/hamster-portal/FlyEnter.Hamster.Portal.dll
[root@ip-172-31-29-0 tools]# vi /etc/systemd/system/hamster-portal.service
[Unit]
Description=Hamster Portal Service
After=network.target rabbitmq.service postgresql.service
Requires=rabbitmq.service postgresql.service
[Service]
Type=simple
Environment=DOTNET_ROOT=/hamster/dotnet8
Environment=ASPNETCORE_ENVIRONMENT=Linux
Environment=PATH=$PATH:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/hamster/dotnet8
ExecStart=/hamster/dotnet8/dotnet /hamster/hamster-portal/FlyEnter.Hamster.Portal.dll
WorkingDirectory=/hamster/hamster-portal/
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=Hamster Portal
User=root
Group=root
[Install]
WantedBy=multi-user.target
[root@ip-172-31-29-0 tools]# systemctl daemon-reload
[root@ip-172-31-29-0 tools]# systemctl enable hamster-portal.service
Created symlink from /etc/systemd/system/multi-user.target.wants/hamster-portal.service to /etc/systemd/system/hamster-portal.service.
[root@ip-172-31-29-0 tools]# systemctl start hamster-portal.service
[root@ip-172-31-29-0 tools]# systemctl status hamster-portal.service
● hamster-portal.service - Hamster Portal Service
Loaded: loaded (/etc/systemd/system/hamster-portal.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-12-24 16:35:47 CST; 8s ago
Main PID: 3479 (dotnet)
CGroup: /system.slice/hamster-portal.service
└─3479 /hamster/dotnet8/dotnet /hamster/hamster-portal/FlyEnter.Hamster.Portal.dll -
Hamster Scheduler
[root@ip-172-31-29-0 tools]# unzip hamster_scheduler_linux_2024.zip -d /hamster/hamster-scheduler
[root@ip-172-31-29-0 tools]# chmod +X /hamster/hamster-scheduler/FlyEnter.Hamster.Scheduler.dll
[root@ip-172-31-29-0 tools]# vi /etc/systemd/system/hamster-scheduler.service
[Unit]
Description=Hamster Scheduler Service
After=network.target rabbitmq.service postgresql.service
Requires=rabbitmq.service postgresql.service
[Service]
Type=simple
Environment=DOTNET_ROOT=/hamster/dotnet8
Environment=ASPNETCORE_ENVIRONMENT=Linux
Environment=PATH=$PATH:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/hamster/dotnet8
ExecStart=/hamster/dotnet8/dotnet /hamster/hamster-scheduler/FlyEnter.Hamster.Scheduler.dll
WorkingDirectory=/hamster/hamster-scheduler/
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=Hamster Scheduler 2024
User=root
Group=root
[Install]
WantedBy=multi-user.target
[root@ip-172-31-29-0 tools]# systemctl daemon-reload
[root@ip-172-31-29-0 tools]# systemctl enable hamster-scheduler.service
Created symlink from /etc/systemd/system/multi-user.target.wants/hamster-scheduler.service to /etc/systemd/system/hamster-scheduler.service.
[root@ip-172-31-29-0 tools]# systemctl start hamster-scheduler.service
[root@ip-172-31-29-0 tools]# systemctl status hamster-scheduler.service
[root@ip-172-31-29-0 tools]# systemctl status hamster-scheduler.service
● hamster-scheduler.service - Hamster Scheduler Service
Loaded: loaded (/etc/systemd/system/hamster-scheduler.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-12-24 16:39:18 CST; 14s ago
Main PID: 3836 (dotnet)
CGroup: /system.slice/hamster-scheduler.service
└─3836 /hamster/dotnet8/dotnet /hamster/hamster-scheduler/FlyEnter.Hamster.Scheduler.dll -
Hamster Slaver
[root@ip-172-31-29-0 tools]# unzip hamster_slaver_linux_2024.zip -d /hamster/hamster-slaver
[root@ip-172-31-29-0 tools]# chmod +X /hamster/hamster-slaver/FlyEnter.Hamster.Slaver.dll
[root@ip-172-31-29-0 tools]# vi /etc/systemd/system/hamster-slaver.service
[Unit]
Description=Hamster Slaver Service
After=network.target rabbitmq.service postgresql.service
Requires=rabbitmq.service postgresql.service
[Service]
Type=simple
Environment=DOTNET_ROOT=/hamster/dotnet8
Environment=ASPNETCORE_ENVIRONMENT=Linux
Environment=PATH=$PATH:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/hamster/dotnet8
ExecStart=/hamster/dotnet8/dotnet /hamster/hamster-slaver/FlyEnter.Hamster.Slaver.dll
WorkingDirectory=/hamster/hamster-slaver/
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=Hamster Slaver 2024
User=root
Group=root
[Install]
WantedBy=multi-user.target
[root@ip-172-31-29-0 tools]# systemctl daemon-reload
[root@ip-172-31-29-0 tools]# systemctl enable hamster-slaver.service
Created symlink from /etc/systemd/system/multi-user.target.wants/hamster-slaver.service to /etc/systemd/system/hamster-slaver.service.
[root@ip-172-31-29-0 tools]# systemctl start hamster-slaver.service
[root@ip-172-31-29-0 tools]# systemctl status hamster-slaver.service
● hamster-slaver.service - Hamster Slaver Service
Loaded: loaded (/etc/systemd/system/hamster-slaver.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-12-24 16:43:23 CST; 8s ago
Main PID: 4293 (dotnet)
CGroup: /system.slice/hamster-slaver.service
└─4293 /hamster/dotnet8/dotnet /hamster/hamster-slaver/FlyEnter.Hamster.Slaver.dll -
验证仓鼠服务
- 仓鼠站点:
- 访问站点:http://ec2-xxx.cn-north-1.compute.amazonaws.com.cn:42000/
- 使用默认管理账号登陆,并创建用户
- 进入左侧菜单:系统设置-服务节点 模块,情况服务列表,并重启如下服务,便于系统自动刷新配置
[root@ip-172-31-29-0 tools]# systemctl stop hamster-slaver
[root@ip-172-31-29-0 tools]# systemctl stop hamster-scheduler
[root@ip-172-31-29-0 tools]# systemctl start hamster-slaver
[root@ip-172-31-29-0 tools]# systemctl start hamster-scheduler - 进入左侧菜单:安全管理-功能菜单 模块,编辑 Monitor - Scheduler Monitor项目,调整其中的默认模块的连接地址, 如下:http://ec2-xxx.cn-north-1.compute.amazonaws.com.cn:42010/myhangfire