昆明企业建站程序合肥网站快速优化排名
2026/2/11 0:57:44 网站建设 项目流程
昆明企业建站程序,合肥网站快速优化排名,wordpress域名变回ip,网站建设方案机构网罗开发 #xff08;小红书、快手、视频号同名#xff09; 大家好#xff0c;我是 展菲#xff0c;目前在上市企业从事人工智能项目研发管理工作#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术#xff0c;包括iOS、前端、Harmony OS、Java、Python等…网罗开发小红书、快手、视频号同名大家好我是展菲目前在上市企业从事人工智能项目研发管理工作平时热衷于分享各种编程领域的软硬技能知识以及前沿技术包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者《ESP32-C3 物联网工程开发实战》图书作者《SwiftUI 入门进阶与实战》超级个体COC上海社区主理人特约讲师大学讲师谷歌亚马逊分享嘉宾科技博主华为HDE/HDG我的博客内容涵盖广泛主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告同时也会提供产品优缺点分析、横向对比并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。展菲您的前沿技术领航员 大家好我是展菲 全网搜索“展菲”即可纵览我在各大平台的知识足迹。 公众号“Swift社区”每周定时推送干货满满的技术长文从新兴框架的剖析到运维实战的复盘助您技术进阶之路畅通无阻。 微信端添加好友“fzhanfei”与我直接交流不管是项目瓶颈的求助还是行业趋势的探讨随时畅所欲言。 最新动态2025 年 3 月 17 日快来加入技术社区一起挖掘技术的无限潜能携手迈向数字化新征程文章目录前言系统与安全基础配置更新系统和基础工具创建非 root 用户配置防火墙和安全组设置时区推荐部署架构推荐架构不推荐的做法组件选择一键自动化部署方案为什么选择 Docker Compose安装 Docker项目目录结构Docker Compose 配置示例一键启动上线前必须做的隐藏事项MySQL 独立账号Python 日志切割HTTPS 配置总结前言最近帮朋友部署一个项目到阿里云 ECS配置是 2C4G 1Mbps 带宽。本来以为很简单结果踩了不少坑防火墙没配置好被攻击、MySQL 用 root 用户导致安全问题、日志文件把磁盘占满了、时区不对导致数据时间错乱等等。这些问题其实都是可以提前避免的但很多人在上线前容易忽略这些细节。今天我们就来聊聊服务器上线前必须做的那些事特别是对于 2C4G 这种配置的服务器每一项都很关键。系统与安全基础配置上线前第一件事就是做好系统的基础配置和安全设置。这些配置虽然看起来简单但如果不做后续会带来很多麻烦。更新系统和基础工具首先我们需要更新系统到最新版本并安装一些常用的基础工具。虽然这一步看起来可有可无但实际上很重要。系统更新可以修复已知的安全漏洞而基础工具在后续部署和维护中会经常用到。sudoyum update -ysudoyuminstall-ygitvimwgetcurlunzipyum update -y会更新所有系统包到最新版本-y参数表示自动确认不需要手动输入。安装的这些工具中git用于代码拉取vim用于编辑配置文件wget和curl用于下载文件unzip用于解压文件。创建非 root 用户这一步非常重要但很多人容易忽略。直接用 root 用户部署应用是非常危险的做法一旦应用被攻击攻击者就获得了 root 权限可以随意操作服务器。adduser deploypasswddeployusermod-aG wheel deploy我们创建一个名为deploy的用户专门用于部署和运行应用。usermod -aG wheel deploy将deploy用户添加到wheel组这样deploy用户就可以使用sudo命令来执行需要管理员权限的操作。后续所有的部署、CI/CD 操作都应该使用deploy用户而不是 root。这样可以大大降低安全风险。配置防火墙和安全组防火墙配置是安全的第一道防线但很多人容易忽略。阿里云的安全组和服务器本身的防火墙都需要配置这是双重保险。阿里云安全组配置在阿里云控制台我们需要配置安全组规则至少只放行必要的端口22SSH用于远程登录80HTTP用于 Web 服务443HTTPS用于加密的 Web 服务特别要注意的是MySQL 的 3306 端口不要对公网开放。如果需要在外部访问数据库应该通过 SSH 隧道或者 VPN 的方式。服务器防火墙配置除了安全组我们还需要在服务器上配置防火墙sudosystemctlenablefirewalldsudosystemctl start firewalld firewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --reloadsystemctl enable firewalld设置防火墙开机自启systemctl start firewalld启动防火墙服务。然后我们添加 HTTP 和 HTTPS 服务到防火墙规则中--permanent表示永久生效firewall-cmd --reload重新加载防火墙规则使配置生效。设置时区时区设置看起来是个小问题但实际上很重要。如果时区不对日志时间、数据库时间、应用时间都会错乱排查问题时会很麻烦。timedatectl set-timezone Asia/Shanghai设置时区为上海时区东八区这样所有的时间记录都会使用正确的时区。这个设置会影响系统日志、MySQL 时间、Python 应用时间等所有时间相关的功能。推荐部署架构对于 2C4G 的服务器我们需要选择一个省内存、稳定、可自动化的部署架构。资源有限的情况下架构选择很重要。推荐架构对于这种配置的服务器我推荐使用以下架构Nginx ├── React 前端build 后的静态文件 └── /api → Python 后端Gunicorn / Uvicorn MySQL本机 or RDS这个架构的优势是资源占用低Nginx 作为反向代理内存占用很小前端是静态文件不需要运行时后端用 Gunicorn 或 Uvicorn可以控制进程数部署简单前端打包后直接放到 Nginx后端用进程管理器运行易于扩展后续如果需要可以很容易地将 MySQL 迁移到 RDS或者将后端扩展到多台服务器不推荐的做法在资源有限的情况下有些做法是不推荐的K8sKubernetes 本身就需要不少资源2C4G 的服务器跑 K8s 会很吃力微服务拆分微服务需要更多的资源来运行多个服务实例多个 MySQL 实例一个 MySQL 实例已经会占用不少内存多个实例会让服务器资源紧张前端 Node 常驻运行React 应用应该打包成静态文件而不是用 Node 服务器运行组件选择选择合适的组件对于资源有限的服务器很重要。我们需要选择那些轻量级、稳定、易维护的组件。模块方案说明前端React build → NginxReact 应用打包成静态文件用 Nginx 提供静态文件服务后端FastAPI / Flask GunicornPython 框架配合 Gunicorn 作为 WSGI 服务器Web ServerNginx作为反向代理和静态文件服务器数据库MySQL 8建议使用独立用户不要用 rootHTTPSCertbot Let’s Encrypt免费 SSL 证书自动续期部署Docker Compose容器化部署易于管理和回滚这个组合的优势是资源占用低、稳定性好、易于维护。特别是 Docker Compose可以让整个部署过程变得非常简单。一键自动化部署方案对于 2C4G 的服务器我强烈推荐使用 Docker Compose 进行一键部署。这种方式不仅简单而且易于回滚和迁移。为什么选择 Docker ComposeDocker Compose 的优势在于资源占用可控可以限制每个容器的资源使用易于回滚只需要切换镜像版本即可易于迁移配置文件可以轻松迁移到其他服务器CI/CD 友好可以很容易地集成到 CI/CD 流程中安装 Docker首先我们需要在服务器上安装 Dockercurl-fsSL https://get.docker.com|bashsudosystemctlenabledockersudosystemctl startdockersudousermod-aGdockerdeploycurl -fsSL https://get.docker.com | bash使用官方脚本安装 Dockersystemctl enable docker设置 Docker 开机自启systemctl start docker启动 Docker 服务usermod -aG docker deploy将deploy用户添加到docker组这样deploy用户就可以不使用sudo来运行 Docker 命令。项目目录结构推荐的项目目录结构如下app/ ├── docker-compose.yml ├── nginx/ │ └── default.conf ├── backend/ │ ├── Dockerfile │ └── main.py ├── frontend/ │ ├── Dockerfile │ └── build/ └── mysql/这个结构清晰明了每个组件都有自己的目录配置文件也分开管理。Docker Compose 配置示例下面是一个精简版的docker-compose.yml配置version:3.9services:nginx:image:nginx:stableports:-80:80volumes:-./nginx:/etc/nginx/conf.d-./frontend/build:/usr/share/nginx/htmldepends_on:-backendbackend:build:./backendcommand:gunicorn main:app-w 2-b 0.0.0.0:8000environment:-DB_HOSTmysqldepends_on:-mysqlmysql:image:mysql:8environment:MYSQL_ROOT_PASSWORD:rootpwdMYSQL_DATABASE:appdbvolumes:-./mysql:/var/lib/mysql这个配置定义了三个服务nginx使用官方 nginx 镜像映射 80 端口挂载 nginx 配置目录和前端构建目录backend从./backend目录构建使用 Gunicorn 运行设置 2 个 worker 进程mysql使用 MySQL 8 镜像设置 root 密码和数据库名挂载数据目录一键启动配置好之后只需要一条命令就可以启动整个应用dockercompose up -d --build-d参数表示后台运行--build参数表示构建镜像。这条命令会启动所有服务包括前端、后端和数据库。上线前必须做的隐藏事项除了上面这些明显的配置还有一些隐藏但很关键的事项如果不做后续会带来很多问题。MySQL 独立账号很多人在部署时直接用 root 用户连接数据库这是非常危险的做法。我们应该为应用创建独立的数据库用户CREATEUSERapp%IDENTIFIEDBYstrong_password;GRANTALLONappdb.*TOapp%;FLUSHPRIVILEGES;这样即使应用被攻击攻击者也只能访问应用数据库而不能访问其他数据库或执行系统级操作。Python 日志切割Python 应用的日志如果不做切割很快就会把磁盘占满。2C4G 的服务器通常只有 20GB 或 40GB 的磁盘日志文件很容易占满。我们可以使用logrotate来配置日志切割sudovim/etc/logrotate.d/python-app添加以下配置/path/to/app/logs/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0644 deploy deploy }这个配置表示每天轮转日志保留 7 天的日志压缩旧日志如果日志文件不存在也不报错。HTTPS 配置HTTPS 不是可选项而是必须项。现在浏览器对 HTTP 网站会有安全警告而且很多功能如地理位置 API只能在 HTTPS 下使用。使用 Certbot 可以很容易地配置 HTTPSsudoyuminstall-y certbot python3-certbot-nginxsudocertbot --nginxCertbot 会自动配置 Nginx 的 SSL 证书并且会自动续期。Let’s Encrypt 的证书是免费的每 90 天自动续期一次。总结服务器上线前的准备工作虽然繁琐但非常重要。系统更新、用户创建、防火墙配置、时区设置这些基础配置以及 MySQL 独立账号、日志切割、HTTPS 配置这些隐藏事项都是必须做的。对于 2C4G 这种配置的服务器选择合适的架构和组件也很重要。使用 Docker Compose 可以大大简化部署流程而且易于管理和回滚。做好这些准备工作可以避免很多后续的问题让服务器运行更加稳定可靠。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询