搭建一个基于Web的文档管理系统,用于存储、共享和协作编辑文档

ops/2024/12/14 15:09:37/

搭建一个基于Web的文档管理系统,用于存储、共享和协作编辑文档

本项目采用以下架构:

  • NFS****服务器: 负责存储文档资料。
  • Web****服务器: 负责提供文档访问和编辑功能。
  • SELinux: 负责权限控制,确保文档安全。
  • Git服务器: 负责存储文档版本历史,并提供版本控制功能
  • Shell****脚本: 负责自动化运维,例如定期备份、日志清理等

步骤一:搭建NFS服务器

1.安装NFS软件包
[root@server data]# yum install -y nfs-utils rpcbind
2.配置NFS共享目录

我们需要创建一个共享目录,例如/var/nfs/share,并配置其访问权限。这里我们允许所有来自192.168.137.128网段的客户端以读写方式访问共享目录。

[root@server data]# mkdir -p /var/nfs/share[root@server data]# cat /etc/exports /data 192.168.137.128(rw)
3.启动NFS服务

需要启动NFS服务,并启用开机自启动,确保服务器一直提供NFS服务

[root@server data]# chmod o+w /data/
[root@server data]# systemctl disable firewalld --now  //记得关防火墙
[root@server data]# getenforce
Enforcing
[root@server data]# setenforce 0
[root@server data]# systemctl restart nfs-server//之后可以查看一下

步骤二:搭建Web服务器

1.安装Web服务器软件:
[root@localhost ~]# dnf install nginx -y
2.配置Web服务器:

需要在Nginx配置文件中定义一个服务器块,指定监听的端口、域名和网站根目录。我们还需要配置HTTPS,使用自签名证书或CA签发的证书进行加密传输,提高安全性。

[root@localhost ~]# vim /etc/nginx/conf.d/document_management.confserver {listen 80;server_name document_management.example.com;location / {root /var/nfs/share;autoindex on;auth_basic "Document Management";auth_basic_user_file /etc/nginx/conf.d/htpasswd;}}
3.配置HTTPS:

配置HTTPS需要生成私钥和证书,并将其添加到Nginx配置文件中

[root@localhost ~]# openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes -out /etc/nginx/conf.d/document_management.crt -keyout /etc/nginx/conf.d/document_management.key

一次性生成证书:

  • Country Name (2 letter code): 国家代码,例如CN表示中国。
  • State or Province Name (full name): 州或省的名称,例如Sichuan。
  • Locality Name (eg, city): 城市名称,例如Chengdu
  • Organization Name (eg, company): 如果不需要填写,直接按回车键。
  • Organizational Unit Name (eg, section): 如果不需要填写,直接按回车键。
  • Common Name (e.g. server FQDN or YOUR name): 通用名称,如果没有FQDN,可以输入localhost或你的IP地址。
  • Email Address: 电子邮件地址,如果不需要填写,直接按回车键

4.修改Nginx配置:
[root@localhost ~]# vim /etc/nginx/conf.d/document_management.confserver {listen 443 ssl;server_name document_management.example.com;ssl_certificate /etc/nginx/conf.d/document_management.crt;ssl_certificate_key /etc/nginx/conf.d/document_management.key;location / {root /var/nfs/share;autoindex on;auth_basic "Document Management";auth_basic_user_file /etc/nginx/conf.d/htpasswd;}}
5.重启Web服务器:
[root@localhost ~]# systemctl restart nginx

步骤三:创建本地用户和组

1.创建用户:
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
2.创建组:
[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
3.将用户添加到组
[root@localhost ~]# usermod -a -G group1 user1
[root@localhost ~]# usermod -a -G group2 user2

步骤四:配置SELinux

1.创建文件类型:

用于添加文件上下文

[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t "/var/nfs/share(/.*)?"
2.设置文件安全上下文

我们需要将共享目录的安全上下文设置为httpd_sys_content_t,以便Web服务器能够访问该目录下的文件。

[root@localhost ~]# chcon -R -t httpd_sys_content_t /var/nfs/share
3.允许Nginx访问共享目录

需要允许Nginx访问共享目录,以便Web服务器能够访问该目录下的文件。

[root@localhost ~]# semanage port -a -t http_port_t -p tcp 80[root@localhost ~]# semanage port -a -t http_port_t -p tcp 443

步骤五:配置Git服务器

1.Git服务
  • Git是一个分布式版本控制系统,每个开发者的工作目录都是一个完整的代码库副本,包含所有历史记录。
  • 这种分布式架构使得开发者可以在本地进行大部分操作,如提交、分支、合并等,而无需依赖网络连接
  • Git通过快照的方式存储数据,每次提交都会保存当前项目的状态(即文件的快照)。这种方式使得回滚到之前的版本非常高效,但也会占用较多的存储空间。
  • Git支持轻量级的分支(是指向特定提交的指针,可以快速创建和删除)和合并操作,使得并行开发和功能集成变得简单
2.安装Git软件包
[root@localhost ~]# yum install -y git
3.创建Git仓库

用于存储文档版本历史

[root@localhost ~]# sudo git init --shared /var/nfs/share/git_repository
4.配置Git用户名和邮箱

以便Git能够记录文档的提交历史

[root@localhost ~]# git config --global user.name "Your Name"[root@localhost ~]# git config --global user.email "your.email@example.com"

步骤六:配置自动化运维

1.创建shell脚本:

编写一个shell脚本(/path/to/backup.sh),定期备份共享目录,并将备份文件移动到其他存储位置。

同时,要确保/path/to/backup.sh脚本有可执行权限

chmod +x /path/to/backup.sh#!/bin/bash    cd /var/nfs/share   //当前工作目录切换到 /var/nfs/sharetar -zcvf backup.tar.gz .   //使用 tar 工具创建一个名为 backup.tar.gz 的压缩归档文件mv backup.tar.gz /backup/   //将刚刚创建的 backup.tar.gz 文件移动到 /backup/ 目录中
2.设置定时任务:

使用crontab命令设置定时任务,让备份脚本在指定的时间自动运行(每天午夜 00:00 执行)。

[root@localhost ~]# crontab -e0 0 * * * /path/to/backup.sh

步骤七:配置Web服务器用户认证

1.修改Web服务器配置
[root@localhost ~]# vim /etc/nginx/conf.d/document_management.confserver {listen 80;server_name document_management.example.com;location / {root /var/nfs/share;autoindex on;auth_basic "Document Management";auth_basic_user_file /etc/nginx/conf.d/htpasswd;access_control_list_file /etc/nginx/conf.d/access_list}}
2.创建访问控制列表文件
[root@localhost ~]# touch /etc/nginx/conf.d/access_list
3.配置访问控制列表:
[root@localhost ~]# echo "user1 group1" >> /etc/nginx/conf.d/access_list[root@localhost ~]# echo "user2 group2" >> /etc/nginx/conf.d/access_list

最后测试一下

或者需要重启一下nginx服务再测试

[root@localhost ~]# systemctl restart nginx


http://www.ppmy.cn/ops/141842.html

相关文章

恢复删除的文件:6个免费Windows电脑数据恢复软件

数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究,我分析了 25 最佳免费数据…

linux网络编程 | c | epoll实现IO多路转接服务器

epoll实现IO多路转接服务器 可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 epoll实现IO多路转接服务器1.思路&功能核心思路 2.代码实现multi_epoll_sever.c运行图 1.思路&功能 **功能:**客…

Vue是什么

Vue是什么 一种用于构建用户界面的渐进式JavaScript框架。它提供了一种简单灵活的方式来构建交互式的Web应用程序。Vue采用组件化的开发模式,通过将界面拆分为可重用的组件,使得开发者可以更加高效地进行开发和维护。Vue具有易学易用、灵活性强、性能优…

软考系分:今日成绩已出

前言 今年报考了11月份的软考高级:系统分析师。 考试时间:11月9日。 总体感觉偏简单,但是知识点记得不牢,估计机会不大。 今日 12.11 ,成绩已出,每科总分 75分,全部45分以上为通过。 成绩总…

学习思考:一日三问(思考篇)之路由表

学习思考:一日三问(思考篇)之路由表 学了什么(是什么)Destination/Mask(最终目标,寻路必须)Proto(择优可选)Pre(择优可选)Cost&#x…

美化和定制你的Django Admin:使用SimpleUI

SimpleUI是一个简洁、美观的Django后台管理界面,它可以让你的Django Admin更加直观和易用。本文将指导你如何安装和配置SimpleUI,并进行自定义配置。 目录 安装Django创建Django项目创建Django app安装SimpleUI测试安装是否成功数据库迁移注册超级管理员登录验证自定义配置 …

android studio ladybug新建flutter项目步骤

新建完项目后需要做以下几步 1、gradle对应上 gradle-wrapper.properties中distributionUrl修改gradle版本号 Andorid/build.gradle中修改gradle版本号 2、如果用到了三方库需要在Andorid/build.gradle中增加 subprojects { afterEvaluate { project -> if…

谷粒商城—分布式基础

1. 整体介绍 1)安装vagrant 2)安装Centos7 $ vagrant init centos/7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on…