在开始部署档案软件之前,必须确保服务器环境满足运行条件。本指南基于CentOS 7.9系统编写,涵盖了从环境清理到Docker引擎安装的全过程。首先执行系统更新并安装必要的工具:
1. 安装基础工具
使用yum安装wget、git及vim等必备工具,命令如下:
```bash yum install -y wget git vim lrzsz ```2. 安装Docker及Docker Compose
为了保证环境的一致性和迁移的便捷性,我们采用Docker容器化部署。执行以下脚本一键安装Docker:
```bash curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker ```接着安装Docker Compose编排工具。请直接下载v2.24.0版本(稳定版):
```bash curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version ```3. 配置防火墙与SELinux
为了避免端口拦截导致服务无法访问,建议关闭防火墙或放行必要端口,并临时关闭SELinux:
```bash setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld ```规范的目录结构是后期维护的基础。请在/data目录下创建档案软件专用目录,用于存放应用、数据库、配置文件及日志:
```bash mkdir -p /data/archive/{mysql,data,nginx/logs,nginx/conf,upload} ```目录说明如下:
档案软件通常依赖MySQL数据库和Redis缓存。我们将通过Docker Compose统一管理这些服务。
1. 创建MySQL初始化脚本
在/data/archive目录下创建init.sql文件,用于初始化数据库和用户权限:
```bash vim /data/archive/init.sql ```写入以下SQL内容(请根据实际需求修改密码):
```sql CREATE DATABASE IF NOT EXISTS archive_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'archive_user'@'%' IDENTIFIED BY 'Archive@2024Strong'; GRANT ALL PRIVILEGES ON archive_db. TO 'archive_user'@'%'; FLUSH PRIVILEGES; ```2. 配置环境变量文件
创建.env文件来统一管理敏感信息,避免将密码硬编码在yaml文件中:
```bash vim /data/archive/.env ```内容如下:
```properties MYSQL_ROOT_PASSWORD=Root@2024Secure MYSQL_DATABASE=archive_db MYSQL_USER=archive_user MYSQL_PASSWORD=Archive@2024Strong REDIS_PASSWORD=Redis@2024Secure TZ=Asia/Shanghai ```假设档案软件为Java应用(archive-app.jar),我们需要将其制作成Docker镜像。请先将应用包上传至/data/archive目录。
1. 编写Dockerfile
```bash vim /data/archive/Dockerfile ```
内容如下(基于OpenJDK 8构建):
```dockerfile FROM openjdk:8-jre-alpine MAINTAINER TechExpert VOLUME /tmp ADD archive-app.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT_ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ```2. 编写应用配置文件
如果应用需要外部配置文件(如application.yml),请创建config目录并编辑:
```bash mkdir -p /data/archive/config vim /data/archive/config/application.yml ```关键配置项示例如下,必须与上面的数据库环境变量对应:
```yaml server: port: 8080 spring: datasource: url: jdbc:mysql://mysql-server:3306/archive_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: archive_user password: Archive@2024Strong driver-class-name: com.mysql.cj.jdbc.Driver redis: host: redis-server port: 6379 password: Redis@2024Secure ```为了通过80端口访问服务并处理静态资源请求,需要配置Nginx。
```bash vim /data/archive/nginx/conf/archive.conf ```配置内容如下,包含反向代理和文件大小限制(档案上传通常涉及大文件):
```nginx server { listen 80; server_name your_domain_or_ip; client_max_body_size 500M; location / { proxy_pass http://archive-app: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; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } 静态资源直接映射 location /static/ { alias /data/archive/upload/; autoindex on; } } ```这是核心步骤,将所有组件整合。创建docker-compose.yml文件:
```bash vim /data/archive/docker-compose.yml ```完整内容如下,定义了MySQL、Redis、应用及Nginx四个服务:
```yaml version: '3.8' services: mysql-server: image: mysql:5.7 container_name: archive-mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} TZ: ${TZ} volumes: - /data/archive/mysql:/var/lib/mysql - /data/archive/init.sql:/docker-entrypoint-initdb.d/init.sql ports: - "3306:3306" networks: - archive-net restart: always redis-server: image: redis:6.2-alpine container_name: archive-redis command: redis-server --requirepass ${REDIS_PASSWORD} volumes: - /data/archive/redis:/data ports: - "6379:6379" networks: - archive-net restart: always archive-app: build: . container_name: archive-app environment: TZ: ${TZ} volumes: - /data/archive/data:/data - /data/archive/upload:/upload - /data/archive/config:/config depends_on: - mysql-server - redis-server networks: - archive-net restart: always nginx-web: image: nginx:alpine container_name: archive-nginx ports: - "80:80" volumes: - /data/archive/nginx/conf:/etc/nginx/conf.d - /data/archive/nginx/logs:/var/log/nginx - /data/archive/upload:/usr/share/nginx/html/static depends_on: - archive-app networks: - archive-net restart: always networks: archive-net: driver: bridge ```启动所有服务
在/data/archive目录下执行以下命令,构建镜像并后台启动所有容器:
```bash cd /data/archive docker-compose up -d --build ```1. 状态检查
启动后,查看所有容器状态,确保State为Up:
```bash docker-compose ps ```2. 日志查看
如果服务无法启动,首先查看应用日志定位报错信息:
```bash docker-compose logs -f archive-app ```3. 端口连通性测试
检查80端口是否正常监听:
```bash netstat -tlnp | grep 80 ```4. 数据库连接测试
进入MySQL容器验证数据是否已初始化:
```bash docker exec -it archive-mysql mysql -uarchive_user -pArchive@2024Strong -e "SHOW DATABASES;" ```如果看到archive_db数据库,说明数据库初始化成功。此时在浏览器输入服务器IP地址,即可访问档案管理系统。若遇到文件上传功能异常,请重点检查Nginx配置中的client_max_body_size参数以及应用目录的读写权限。