服务器基本环境部署
由于最近某个项目要实现从 0-1 部署上线,所以需要对服务器环境进行部署,需要记录一下
产品说需要支撑三十万用户,考虑公司运营情况(其他项目用户不到一千人)、项目复杂度、开发周期,决定采用单体架构部署,压力太大再做集群,另外虽然 CentOS 停止维护,并且有阿里、腾讯的国产操作系统,但还是不做小白鼠,任然采用 CentOS7
环境:CentOS7 + Java8 + Redis + MySQL + Nginx
安装
- centos 7 安装 mysql
- centos 7 安装 nginx,另外,如果需要启用 https 模块,需要加上
--with-http_v2_module
安装,否则后续需要重新编译,可能会导致配置文件被覆盖(本人就是,但是配置文件没有被覆盖,注意做好备份) - centos 7 安装 redis
安全
听说之前公司被黑客搞过,赔了几万美金,我挺好奇怎么弄的,老板说不出大概,从那之后就有点 ptsd 哈哈哈,不过最基本的防护还是得做的
- 为 MySQL 配置 mysql 用户组,数据文件所属组配置为 mysql
- 为 nginx、redis 配置 www 用户组
- 修改 MySQL、redis 默认密码、端口、使用加强密码,其中 MySQL 禁止 root 用户远程登录,每个环境配置创建不同的用户,只能访问对应的 db
- nginx 由于不是 root 身份,所以在绑定低于 1024 端口的时候,会提示无法绑定,解决步骤
- nginx 配置只能通过域名方式访问,禁止 ip 直连,参照步骤
- nginx 通过不同的路径转发到不同的后端服务,云服务器控制台关闭除了 80 443 MySQL redis 的所有端口(其实 MySQL 和 redis 也应该关闭,但是开发、测试、生产都在一台机子上)
- 关闭 ssh 连接,使用密钥方式
- 项目中关于线上的配置使用外部配置,禁止提交到代码中
自启动
防止突发情况挂了,没有监控消息
- 将 MySQL 加入到 Systemctl
- nginx 和 redis 同理
....后续再补充
这是一段防爬代码块,我不介意文章被爬取,但请注明出处
console.log("作者主页:https://www.cnblogs.com/Go-Solo");
console.log("原文地址:https://www.cnblogs.com/Go-Solo/p/18331803");