一、准备环境
二、安装部署所需的软件
- 本次部署的服务器可以连接互联网,所以本次部署采用的安装也是在线安装。
- 如果发现yum安装依赖时连接失败或安装错误,可以查询一下看看是不是yum源没有配置。
(一)MYSQL
- MySQL是一个关系型数据库管理系统,是网站系统中常用的数据库软件。
- 安装MySQL服务器
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
| # 安装MySQL官方的yum源 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装rpm包 rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL服务器 yum install -y mysql-server
# 离线安装步骤(适用于无网络环境) # 1. 在有网络的机器下载所需rpm包: # repotrack mysql-server mysql-client # 2. 将rpm包传输到服务器 # 3. 创建本地yum源: # mkdir /local_repo # cp *.rpm /local_repo # createrepo /local_repo # 4. 配置本地源: # cat > /etc/yum.repos.d/mysql-local.repo << EOF # [mysql-local] # name=MySQL Local Repo # baseurl=file:///local_repo # enabled=1 # gpgcheck=0 # EOF # 5. 清除缓存并安装: # yum clean all # yum install -y mysql-server
# 启动MySQL服务 systemctl start mysqld
# 设置开机自启动 systemctl enable mysqld
# 查看MySQL状态 systemctl status mysqld
|
- 配置MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 查看MySQL初始密码 grep 'temporary password' /var/log/mysqld.log
# 登录MySQL mysql -uroot -p
# 修改密码(在MySQL命令行中执行) ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
# 创建远程访问用户(在MySQL命令行中执行) CREATE USER '用户名'@'%' IDENTIFIED BY '密码'; GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%'; FLUSH PRIVILEGES;
|
- 配置MySQL安全设置
1 2
| # 运行安全配置脚本 mysql_secure_installation
|
按照提示进行配置:
- 设置root密码复杂度
- 删除匿名用户
- 禁止root远程登录
- 删除测试数据库
- 重新加载权限表
- 调整MySQL配置文件
添加或修改以下配置:
1 2 3 4 5 6
| [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-storage-engine=INNODB max_connections=1000 innodb_buffer_pool_size=1G
|
重启MySQL使配置生效:
1
| systemctl restart mysqld
|
(二)NGINX
- Nginx是一个高性能的HTTP和反向代理服务器,常用于部署前端应用和反向代理后端服务。
1. 本地仓库安装(推荐批量部署)
- 安装Nginx
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
| # 安装Nginx的yum源 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx] name=nginx repo baseurl=https://nginx.org/packages/centos/7/\$basearch/ gpgcheck=0 enabled=1 EOF
# 安装Nginx yum install -y nginx
# 离线安装方法(适用于无网络环境): # 1. 在有网络的设备下载完整rpm包: # reposync --repoid=nginx -p /path/to/download # 2. 创建本地仓库: # createrepo /path/to/download/nginx # 3. 配置本地源: # cat > /etc/yum.repos.d/nginx-local.repo << EOF # [nginx-local] # name=nginx local repository # baseurl=file:///path/to/download/nginx # enabled=1 # gpgcheck=0 # EOF # 4. 清除缓存并安装: # yum clean all # yum install -y nginx
# 启动Nginx systemctl start nginx
# 设置开机自启动 systemctl enable nginx
# 查看Nginx状态 systemctl status nginx
|
2. 离线安装Nginx(使用tar.gz包)
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 47 48 49 50 51 52 53 54
| # 准备工作:在有网络的机器上下载Nginx # 下载地址:http://nginx.org/download/nginx-1.20.2.tar.gz
# 1. 安装编译所需的依赖包 yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 2. 将下载好的nginx-1.20.2.tar.gz上传到服务器
# 3. 解压安装包 tar -zxvf nginx-1.20.2.tar.gz cd nginx-1.20.2
# 4. 配置安装选项 ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_gzip_static_module
# 5. 编译安装 make && make install
# 6. 创建软链接 ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
# 7. 创建systemd服务文件 cat > /etc/systemd/system/nginx.service << EOF [Unit] Description=The NGINX HTTP and reverse proxy server After=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 EOF
# 8. 重新加载systemd配置 systemctl daemon-reload
# 9. 启动Nginx systemctl start nginx
# 10. 设置开机自启动 systemctl enable nginx
# 11. 查看Nginx状态 systemctl status nginx
|
- 配置防火墙(如果开启了防火墙)
1 2 3 4 5 6 7 8
| # 开放80端口 firewall-cmd --permanent --add-port=80/tcp
# 开放443端口(如果需要HTTPS) firewall-cmd --permanent --add-port=443/tcp
# 重新加载防火墙配置 firewall-cmd --reload
|
- 配置Nginx
1 2
| # 编辑Nginx主配置文件 vi /etc/nginx/nginx.conf
|
基本配置示例:
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
| user nginx; worker_processes auto;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;
events { worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; gzip on;
include /etc/nginx/conf.d/*.conf; }
|
- 创建网站配置文件
1 2
| # 创建网站配置文件 vi /etc/nginx/conf.d/mywebsite.conf
|
配置示例:
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
| server { listen 80; server_name example.com www.example.com;
location / { root /usr/share/nginx/html/mywebsite; index index.html index.htm; try_files $uri $uri/ /index.html; }
location /api/ { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
|
- 测试配置并重启Nginx
1 2 3 4 5
| # 测试配置文件语法 nginx -t
# 重新加载配置 systemctl reload nginx
|
(三)JDK
- JDK(Java Development Kit)是Java开发工具包,用于运行Java应用程序。
1. 在线安装OpenJDK(推荐)
1 2 3 4 5 6 7 8 9
| # 查看可用的JDK版本 yum list available java*
# 安装JDK 11(推荐版本) yum install -y java-11-openjdk-devel
# 验证安装 java -version javac -version
|
2. 离线安装JDK(使用tar.gz包)
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
| # 准备工作:在Oracle官网下载JDK安装包 # 下载地址:https://www.oracle.com/java/technologies/javase-downloads.html # 选择JDK 11或JDK 8的Linux x64 tar.gz版本
# 1. 将下载好的jdk-11.0.14_linux-x64_bin.tar.gz上传到服务器
# 2. 创建安装目录 mkdir -p /usr/local/java
# 3. 解压JDK到安装目录 tar -zxvf jdk-11.0.14_linux-x64_bin.tar.gz -C /usr/local/java/
# 4. 设置环境变量 cat > /etc/profile.d/java.sh << EOF export JAVA_HOME=/usr/local/java/jdk-11.0.14 export PATH=\$PATH:\$JAVA_HOME/bin export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar EOF
# 5. 使环境变量生效 source /etc/profile.d/java.sh
# 6. 验证安装 java -version javac -version
# 7. 设置系统默认Java alternatives --install /usr/bin/java java \$JAVA_HOME/bin/java 1 alternatives --install /usr/bin/javac javac \$JAVA_HOME/bin/javac 1 alternatives --install /usr/bin/jar jar \$JAVA_HOME/bin/jar 1
|
- 配置Java环境变量
1 2
| # 编辑环境变量配置文件 vi /etc/profile.d/java.sh
|
添加以下内容:
1 2 3
| export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))) export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
|
使环境变量生效:
1
| source /etc/profile.d/java.sh
|
- 验证环境变量
1 2
| echo $JAVA_HOME java -version
|
(四)MongoDB(如有必要)
- MongoDB是一个基于分布式文件存储的NoSQL数据库。
- 安装MongoDB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # 创建MongoDB的yum源 cat > /etc/yum.repos.d/mongodb-org.repo << EOF [mongodb-org-4.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc EOF
# 安装MongoDB yum install -y mongodb-org
# 启动MongoDB服务 systemctl start mongod
# 设置开机自启动 systemctl enable mongod
# 查看MongoDB状态 systemctl status mongod
|
- 配置MongoDB
1 2
| # 编辑MongoDB配置文件 vi /etc/mongod.conf
|
修改以下配置:
1 2 3 4 5 6 7 8
| net: port: 27017 bindIp: 127.0.0.1
security: authorization: enabled
|
- 创建管理员用户
1 2 3 4 5 6 7 8 9 10 11 12
| # 连接到MongoDB mongo
# 在MongoDB shell中执行 use admin db.createUser( { user: "adminUser", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] } )
|
- 重启MongoDB使配置生效
1
| systemctl restart mongod
|
(五)Redis(如有必要)
- Redis是一个开源的内存数据库,常用于缓存、会话存储等场景。
- 安装Redis
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 安装EPEL源 yum install -y epel-release
# 安装Redis yum install -y redis
# 启动Redis服务 systemctl start redis
# 设置开机自启动 systemctl enable redis
# 查看Redis状态 systemctl status redis
|
- 配置Redis
1 2
| # 编辑Redis配置文件 vi /etc/redis.conf
|
修改以下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| bind 127.0.0.1
requirepass yourpassword
save 900 1 save 300 10 save 60 10000
maxmemory 256mb maxmemory-policy allkeys-lru
|
- 重启Redis使配置生效
- 测试Redis连接
1 2 3
| redis-cli auth yourpassword ping # 应返回PONG
|
(六)RabbitMQ(如有必要)
- RabbitMQ是一个开源的消息队列服务器,用于应用程序之间的通信。
- 安装Erlang(RabbitMQ依赖)
1 2 3 4 5 6 7 8 9
| # 查看EPEL仓库中可用的Erlang版本 yum info erlang
# 输出示例: # Name : erlang # Arch : x86_64 # Version : R16B # Release : 03.18.el7 # ...
|
EPEL仓库提供的Erlang版本为R16B-03.18.el7,这个版本非常旧(发布于2013年左右),而现代版本的RabbitMQ(如3.10.0+)需要至少Erlang 23.2或更高版本。这就是为什么使用EPEL仓库安装的Erlang后,再安装RabbitMQ时会报错:Requires: erlang >= 23.2
。
解决方案是完全卸载旧版本并安装新版本:
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
| # 完全卸载旧版本Erlang yum remove -y erlang erlang-*
# 方法二:使用RabbitMQ官方提供的Erlang仓库(推荐) # 配置Erlang解决方案仓库 curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
# 或者手动添加仓库 cat > /etc/yum.repos.d/rabbitmq-erlang.repo << EOF [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/\$basearch gpgcheck=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey repo_gpgcheck=0 enabled=1 EOF
# 导入所有相关GPG密钥(包括PackageCloud的主要密钥和特定仓库密钥) rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey rpm --import https://packagecloud.io/gpg.key rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
# 刷新yum缓存,使新添加的仓库生效 yum clean all yum makecache
# 确认可安装的Erlang版本(应该会显示23.x或更高版本) yum info erlang
# 安装新版Erlang yum install -y erlang
# **推荐方案**:如果GPG密钥验证仍然出错,可以使用以下命令忽略GPG检查安装 yum install -y --nogpgcheck erlang
# 验证安装的Erlang版本(应该是23.x或更高版本) erl -version
# 备选方案:如果仍然遇到问题,可以直接下载Erlang RPM包安装 # 下载特定版本的Erlang RPM包 wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm
# 使用rpm命令直接安装,忽略依赖和GPG验证 rpm -ivh --nodeps erlang-23.3.4.11-1.el7.x86_64.rpm
|
- 安装RabbitMQ
安装完新版Erlang后,可以继续安装RabbitMQ:
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
| # 添加RabbitMQ仓库 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
# 或手动配置RabbitMQ仓库 cat > /etc/yum.repos.d/rabbitmq.repo << EOF [rabbitmq_rabbitmq-server] name=rabbitmq_rabbitmq-server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/\$basearch gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey EOF
# 导入所有相关GPG密钥(包括PackageCloud的主要密钥和特定仓库密钥) rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey rpm --import https://packagecloud.io/gpg.key rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
# 清除YUM缓存 yum clean all # 重建缓存 yum makecache
# 安装RabbitMQ 3.8.x(与Erlang 23.x兼容性最好) yum install -y rabbitmq-server-3.8.9
# **推荐方案**:如果GPG密钥验证仍然出错,可以使用以下命令忽略GPG检查安装 yum install -y --nogpgcheck rabbitmq-server-3.8.9
# 如果上述命令无法找到特定版本,可以使用以下命令列出可用版本 # yum list --showduplicates rabbitmq-server
|
- 启动RabbitMQ服务并配置
1 2 3 4 5 6 7 8
| # 启动RabbitMQ服务 systemctl start rabbitmq-server
# 设置开机自启动 systemctl enable rabbitmq-server
# 查看RabbitMQ状态 systemctl status rabbitmq-server
|
- 启用RabbitMQ管理插件
1 2 3 4 5
| # 启用RabbitMQ管理界面插件 rabbitmq-plugins enable rabbitmq_management
# 重启RabbitMQ服务以应用更改 systemctl restart rabbitmq-server
|
完成后,可以通过浏览器访问RabbitMQ管理界面:http://服务器IP:15672
- 创建RabbitMQ管理用户
1 2 3 4 5 6 7 8 9 10 11
| # 创建管理员用户(将 'admin' 和 'password' 替换为您想要的用户名和密码) rabbitmqctl add_user admin password
# 设置用户角色为管理员 rabbitmqctl set_user_tags admin administrator
# 设置用户权限(允许访问所有虚拟主机) rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 列出所有用户 rabbitmqctl list_users
|
- 创建应用程序专用用户
1 2 3 4 5 6 7 8
| # 创建应用程序使用的用户 rabbitmqctl add_user app_user app_password
# 设置为普通用户(不需要管理权限) rabbitmqctl set_user_tags app_user
# 设置用户权限 rabbitmqctl set_permissions -p / app_user ".*" ".*" ".*"
|
- 管理虚拟主机
1 2 3 4 5 6 7 8
| # 创建新的虚拟主机 rabbitmqctl add_vhost my_vhost
# 为用户设置特定虚拟主机的权限 rabbitmqctl set_permissions -p my_vhost app_user ".*" ".*" ".*"
# 列出所有虚拟主机 rabbitmqctl list_vhosts
|
- 常见命令和操作
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
| # 查看RabbitMQ状态 rabbitmqctl status
# 查看集群状态 rabbitmqctl cluster_status
# 列出所有队列 rabbitmqctl list_queues
# 列出所有交换机 rabbitmqctl list_exchanges
# 列出所有绑定 rabbitmqctl list_bindings
# 查看特定虚拟主机中的所有队列 rabbitmqctl list_queues -p my_vhost
# 删除用户 rabbitmqctl delete_user username
# 修改用户密码 rabbitmqctl change_password username newpassword
# 删除虚拟主机 rabbitmqctl delete_vhost vhost_name
# 清除特定队列的消息 rabbitmqctl purge_queue queue_name
|
- 设置防火墙规则(如果启用了防火墙)
1 2 3 4 5 6 7 8
| # 开放RabbitMQ管理界面端口 firewall-cmd --permanent --add-port=15672/tcp
# 开放RabbitMQ消息传递端口 firewall-cmd --permanent --add-port=5672/tcp
# 重新加载防火墙配置 firewall-cmd --reload
|
- 故障排查
1 2 3 4 5 6 7 8 9 10 11 12
| # 查看RabbitMQ日志 tail -f /var/log/rabbitmq/rabbit@$(hostname -s).log
# 查看系统日志中的RabbitMQ相关条目 journalctl -u rabbitmq-server # 检查RabbitMQ进程 ps aux | grep rabbit
# 检查RabbitMQ的端口是否正在监听 ss -tunlp | grep 5672 ss -tunlp | grep 15672
|
- 解决常见登录问题
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
| # 问题:User can only log in via localhost
# 这个问题通常发生在使用默认的guest用户远程登录时 # RabbitMQ 3.3.0及以后版本出于安全考虑,默认的guest用户只允许从localhost登录
# 解决方案1:创建新的管理员用户 rabbitmqctl add_user admin strong_password rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
# 解决方案2:修改RabbitMQ配置允许guest用户远程登录(不推荐,安全风险) # 编辑配置文件 vi /etc/rabbitmq/rabbitmq.conf # 如果不存在此文件,则创建它 touch /etc/rabbitmq/rabbitmq.conf
# 添加以下配置行 # loopback_users = none
# 或者使用以下命令一次性创建/修改配置 cat > /etc/rabbitmq/rabbitmq.conf << EOF loopback_users = none EOF
# 重启RabbitMQ服务 systemctl restart rabbitmq-server # 解决方案3:临时允许guest用户远程登录(不创建rabbitmq.conf文件) rabbitmqctl eval 'application:set_env(rabbit, loopback_users, []).' # 重启服务使更改生效 systemctl restart rabbitmq-server
|
三、准备部署所必需的资源
(一)数据库
- 在部署前,需要准备好数据库脚本,包括建库、建表和初始数据。
- 准备SQL脚本文件
1 2
| # 创建存放SQL脚本的目录 mkdir -p /opt/deploy/sql
|
- 上传SQL脚本文件
可以使用SFTP工具(如FileZilla、WinSCP等)将本地的SQL脚本上传到服务器的/opt/deploy/sql
目录。
- 导入数据库脚本
1 2 3 4 5 6 7
| # 登录MySQL mysql -u用户名 -p密码
# 在MySQL命令行中执行 source /opt/deploy/sql/create_database.sql source /opt/deploy/sql/create_tables.sql source /opt/deploy/sql/init_data.sql
|
(二)前端打包
- 准备前端打包文件
在本地开发环境中,使用构建工具(如npm、yarn等)打包前端项目:
1 2
| # 在前端项目目录中执行 npm run build
|
- 上传打包文件
使用SFTP工具将打包生成的文件(通常在dist或build目录)上传到服务器:
1 2
| # 在服务器上创建存放前端文件的目录 mkdir -p /usr/share/nginx/html/mywebsite
|
- 解压前端文件(如果是压缩包)
1 2
| # 解压前端文件到Nginx目录 unzip frontend.zip -d /usr/share/nginx/html/mywebsite
|
(三)后端打包
- 后端Java项目通常打包为JAR或WAR文件部署。
- 准备后端打包文件
在本地开发环境中,使用Maven或Gradle打包后端项目:
1 2 3 4 5
| # Maven打包 mvn clean package -Dmaven.test.skip=true
# 或Gradle打包 gradle build -x test
|
- 上传后端JAR文件
1 2
| # 在服务器上创建存放后端文件的目录 mkdir -p /opt/deploy/backend
|
使用SFTP工具将JAR文件上传到服务器的/opt/deploy/backend
目录。
- 准备配置文件
1 2 3 4 5
| # 创建配置文件目录 mkdir -p /opt/deploy/backend/config
# 创建应用配置文件 vi /opt/deploy/backend/config/application.yml
|
配置文件示例:
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
| server: port: 8080
spring: datasource: url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: dbuser password: dbpassword driver-class-name: com.mysql.cj.jdbc.Driver redis: host: localhost port: 6379 password: redispassword database: 0 data: mongodb: uri: mongodb://user:password@localhost:27017/mydb rabbitmq: host: localhost port: 5672 username: admin password: password virtual-host: /
|
四、部署资源并调试
(一)数据库
- 验证数据库连接
1 2 3 4 5 6 7 8
| # 连接MySQL数据库 mysql -u用户名 -p密码 -h数据库地址 数据库名
# 查看数据库表 SHOW TABLES;
# 查看表数据 SELECT * FROM 表名 LIMIT 10;
|
- 检查数据库字符集
1 2 3
| # 在MySQL命令行中执行 SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';
|
(二)前端
- 配置Nginx虚拟主机
确保Nginx配置文件已正确设置(参考前面的Nginx配置部分)。
- 检查文件权限
1 2 3
| # 确保Nginx用户有权限访问前端文件 chown -R nginx:nginx /usr/share/nginx/html/mywebsite chmod -R 755 /usr/share/nginx/html/mywebsite
|
- 重启Nginx服务
- 测试前端访问
在浏览器中访问服务器IP或域名,检查前端页面是否正常显示。
(三)后端
- 创建启动脚本
1 2
| # 创建启动脚本 vi /opt/deploy/backend/start.sh
|
添加以下内容:
1 2 3 4 5 6 7 8 9
| #!/bin/bash JAVA_OPTS="-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m" APP_NAME="myapp.jar" APP_PATH="/opt/deploy/backend"
cd $APP_PATH nohup java $JAVA_OPTS -jar $APP_NAME --spring.config.location=file:./config/application.yml > app.log 2>&1 & echo $! > app.pid echo "应用已启动,进程ID:$(cat app.pid)"
|
- 创建停止脚本
1 2
| # 创建停止脚本 vi /opt/deploy/backend/stop.sh
|
添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #!/bin/bash APP_PATH="/opt/deploy/backend" PID_FILE="$APP_PATH/app.pid"
if [ -f "$PID_FILE" ]; then PID=$(cat $PID_FILE) if ps -p $PID > /dev/null; then echo "正在停止应用,进程ID:$PID" kill $PID sleep 5 if ps -p $PID > /dev/null; then echo "应用未能正常停止,强制终止" kill -9 $PID fi else echo "应用未运行" fi rm -f $PID_FILE else echo "PID文件不存在,应用可能未运行" fi echo "应用已停止"
|
- 设置脚本权限
1 2
| chmod +x /opt/deploy/backend/start.sh chmod +x /opt/deploy/backend/stop.sh
|
- 启动后端应用
1 2 3 4 5
| # 启动应用 /opt/deploy/backend/start.sh
# 查看启动日志 tail -f /opt/deploy/backend/app.log
|
(四)调试
- 检查应用状态
1 2 3 4 5 6 7 8 9 10 11
| # 检查后端应用进程 ps -ef | grep java
# 检查端口监听情况 netstat -tunlp | grep 8080
# 检查Nginx进程 ps -ef | grep nginx
# 检查Nginx端口 netstat -tunlp | grep 80
|
- 检查日志
1 2 3 4 5 6 7 8
| # 查看后端应用日志 tail -f /opt/deploy/backend/app.log
# 查看Nginx访问日志 tail -f /var/log/nginx/access.log
# 查看Nginx错误日志 tail -f /var/log/nginx/error.log
|
- 测试API接口
1 2 3 4 5
| # 使用curl测试后端API curl -X GET http://localhost:8080/api/test
# 带参数的POST请求 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://localhost:8080/api/data
|
- 常见问题排查
- 前端访问404:检查Nginx配置和前端文件路径
- 后端无法启动:检查Java版本、内存设置和配置文件
- 数据库连接失败:检查数据库配置、用户权限和防火墙设置
- 跨域问题:检查Nginx代理配置和后端CORS设置
- RabbitMQ管理界面无法访问:
1 2 3 4 5 6 7 8 9
| # 检查服务状态 systemctl status rabbitmq-server
# 检查日志 cat /var/log/rabbitmq/rabbit@$(hostname -s).log journalctl -u rabbitmq-server
# 检查端口是否开放 ss -tunlp | grep 15672
|
五、总结
本文详细介绍了在CentOS 7空服务器上部署网页系统的完整流程,包括环境准备、软件安装、资源准备和部署调试等步骤。通过按照本文的步骤操作,可以快速搭建一个包含前端、后端和数据库的完整网页系统。
在实际部署过程中,可能会遇到各种问题,建议根据具体情况灵活调整配置参数,并结合日志信息进行排查。同时,为了保证系统的安全性和稳定性,还应该考虑添加防火墙规则、设置定时备份、配置监控告警等措施。
六、参考链接