15分钟从零开始搭建支持10w+用户的生产环境(一)
前言
这是一个基于中小型企业或团队的架构设计。
不考虑大厂。有充分的理由相信,大厂有绝对的实力来搭建一个相当复杂的环境。
中小型企业或团队是个什么样子?
- 开发团队人员配置不全,部分人员身兼开发过程上下游的数个职责;
- 没有专职的维护人员,或者维护人员实力不足以完全掌控生产和开发环境。
这种情况下,过于复杂的生产环境设计,规划、安装、调试、修改会牵扯太多的精力。一旦使用过程中出现问题,涉及的技术复杂性会带来不可预估的灾难。
同时,中小型团队的系统,也有其特殊要求,主要表现在:
- 生产环境的搭建要简单。这个主要是考虑到人员的技术实力。毕竟要求一个开发人员,能熟练安装各种系统的运行环境,是有点太高了;
- 生产环境的扩展性要足够。因为资金原因,通常前期的服务器资源会比较紧张,而一旦有资金进入,用户量会短时间扩大,服务器资源需求也相应扩大,就需要在不改动代码的情况下,通过简单的操作,把生产环境扩展成较大规模的架构;
- 需要充分考虑到开发环境与生产环境的衔接。国内大多数开发团队,是采用windows开发,linux布署的模式。这种模式下,开发和生产环境中各个部分的选择尤为重要。最理想的情况,是开发和生产在不同的操作系统下,同环境同代码,避免代码重编译和移植。
本文就是针对这样的要求,进行的设计。
一、服务器的操作系统
Linux。毫无疑问,服务器的操作系统,必须是linux。
很多人选择windows做为服务器操作系统,是因为windows更熟悉,有图形管理界面,比较容易操作。
但实际上,linux做为操作系统的优势更明显:
命令行跟图形界面,仅是输入方式的区别,从功能上没有实质性的区别;命令行更快捷,而且可以形成命令序列,即脚本。
装linux一定不要装GUI,这是一个非常重要的习惯,而且会显得很专业
Linux是开源免费的,或接近免费的,既不存在版权问题,也不存在成本问题。
在相同硬件的情况下,linux更容易获得更高的性能。更容易的意思是,不需要进行太多的配置和调整。在一般使用下,安装完直接使用,性能就很高了。
Linux有很多发行版。通常的选择是Redhat、CentOS、Debian。Redhat是个商业版本,有一定的费用。CentOS、Debian,是免费版本。
中小团队,收费版本就不考虑了。两个免费的版本中,CentOS相对激进点,预装软件会采用比较新的版本,甚至会有测试版本;Debian相对保守,预装的软件都是稳定的版本。另外,CentOS预装的软件比Debian多,所以体积大一些,启动时要加载的东西多一些。
我建议选择用Debian,稳定,占用硬盘小,占用运行内存少。
至于Ubunut、Arch Linux、Mint,学习linux的时候可以好好用,服务器上就算了。如果linux您自己本身不熟悉,就别自找麻烦。
至于linux的内核版本,在购买VPS服务器的时候,镜像都是做好的,没多少可选,用最高版本就好。内核的每个升级,都解决了一些问题,也带来了一些问题。如果不清楚这些问题在哪,或者不知道怎么解决这些问题,就假装不知道。操作系统的问题,包括BUG,包括遗留的内容,我们很难遇到的。
最后多说一句,服务器操作系统一定选择x64的版本,即64位的版本。在服务器上安装应用软件,也要优先选择x64的版本。现在的主流硬件,PC都是x64的,更别说服务器了。
Debian官网:https://www.debian.org
独立的服务器,需要从Debian官网下载ISO进行安装。云服务器,在购买时会先选择安装的镜像。安装的步骤略过,如果需要我可以另开一个贴子写写。
有几个简单的安全方面的内容需要注意:
- 远程连接服务器时,一定要用ssh。命令是:
ssh username@ip
ssh username@domain
Windows下没有内建的ssh命令,可以下一个Putty,也要使用ssh模式。
- 远程登录时,尽量少用root。安装完成后,建一个普通用户,用这个普通用户进行远程登录。进去后,用su升权或用sudo进行操作。
- 上传文件使用ssh通道。命令是:
scp source_file username@ip:~/target_folder/target_file
scp source_file username@domain:~/target_folder/target_file
Windows下可以装一个WinScp来上传文件。
- 小心使用网上建议的任何方式来改动服务器,除非你知道你在做什么。
- 在绝大多数情况下,自己开发的应用跑在服务器上时,如果服务器出现了CPU高或内存满的情况,去查代码,而不是怀疑服务器如何如何,也不是去调整服务器的运行参数。
(未完待续)
![]() |
微信公众号:老王Plus 扫描二维码,关注个人公众号,可以第一时间得到最新的个人文章和内容推送 本文版权归作者所有,转载请保留此声明和原文链接 |
15分钟从零开始搭建支持10w+用户的生产环境(一)的更多相关文章
- 15分钟从零开始搭建支持10w+用户的生产环境(二)
上一篇文章,把这个架构的起因,和操作系统的选择进行了详细说明. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(一) 二.数据库的选择 对于一个10W+用户的系统,数据库选择很重要. 一 ...
- 15分钟从零开始搭建支持10w+用户的生产环境(三)
上一篇文章介绍了这个架构中,选择MongoDB做为数据库的原因,及相关的安装操作. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(二) 三.WebServer 在SOA和gRPC大行其 ...
- 15分钟从零开始搭建支持10w+用户的生产环境(四)
上一篇文章,介绍了这个架构中,WebServer的选择,以及整个架构中扩展时的思路. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(三) 五.架构实践 前边用了三篇文章,详细介绍了这个 ...
- 从零开始搭建WebAPI Core_SqlSugar管理系统(一) 项目环境需求以及项目搭建
从零开始搭建WebAPI Core_SqlSugar管理系统(一) 项目环境需求以及项目搭建 环境需求 想要使用.NET Core,首先你的Visual Studio(以下简称vs)升级到较高的版本, ...
- 搭建Hadoop集群(生产环境)
1.搭建之前:百度copy一下介绍 (本博客几乎全都是生产环境的配置..包括mongo等hbase其他) Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层 ...
- Centos6.3 下使用 Tomcat-6.0.43 非root用户 部署 生产环境 端口转发方式
一.安装JDK环境 方法一. 官方下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...
- 从零开始搭建支持http2的web服务
前段时间开始,公司各项业务开始陆续接入http2,关于http2的优点与所适用的场景网上有很多的文档可以查阅,这里我主要是总结分享一下如何从0到1搭建http2服务. 这里先说明一下,要完成http2 ...
- [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld
首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...
- 从零开始搭建WebAPI Core_SqlSugar管理系统 (持续更新中......)
从零开始搭建WebAPI Core_SqlSugar管理系统 前言 本系列皆在从零开始逐步搭建,后台管理系统服务端部分,后续还会推出前端部分. 这次的目的是搭出一个功能完善的 本次系列技术栈以下几个部 ...
随机推荐
- python之 filter
filter的语法:filter(函数名字,可迭代的变量) 其实filter就是一个“过滤器”:把[可迭代的变量]中的值,挨个地传给函数进行处理,那些使得函数的返回值为True的变量组成的迭代器对象就 ...
- PostgreSQL查询表以及字段的备注
目录 查询所有表名称以及字段含义 查看所有表名 查看表名和备注 查看特定表名备注 查看特定表名字段 查询所有表名称以及字段含义 select c.relname 表名,cast(obj_descrip ...
- 使用ASP.NET MVC 5快速实现芒果分销后台管理系统(前言)
### 前言 在前一篇文章中,我提到最近要陆续为大家写一些.Net实战技术文章.从今天起,我将围绕一个入门级现实的芒果分销管理系统案例,使用ASP.NET MVC 5,从前端到后端,一步一步为大家呈现 ...
- 【简介】OpenOCD 由jtag操作到parport driver流程
1. 定义 jtag_command_type 在 OpenOCD 中,JTag 命令在枚举 jtag_command_type 中定义,定义如下: /** * The type of the @c ...
- mvc5+ET6入门第一章
这一篇主要讲的是MVC也就是Model--View--Controller的缩写,没有讲ET.其中 Model(模型)表示应用程序核心(比如数据库记录列表).通常模型对象在数据库中存取数据. View ...
- [极客大挑战 2019]PHP1
知识点:PHP序列化与反序列化,最下方有几个扩展可以看一下 他说备份了,就肯定扫目录,把源文件备份扫出来 dirsearch扫目录扫到www.zip压缩包
- C# Linq方式生成SAP对接的XML格式内容(一般处理程序 ashx )
Linq生成XML的方法: string CreateXML(string strkey, string strDATAJSON) { XDeclaration dec = new XDeclarat ...
- 手把手教你用java实现syslog消息的收发,学不会你打我喽!
大家好,我是道哥,专注于后端java开发,喜欢写作和分享.如果觉得文章对你有用,那就点个赞呗!如果能转发那是对道哥最大的支持! syslog的定义 见文知义,syslog,从英文名字上可以看出是指系统 ...
- 洛谷 P5639 【CSGRound2】守序者的尊严 题解
原题链接 简要题意: 从 \(1\) 号位开始走,可以连续走过一段连续的 \(0\) ,每走一次,所有位置取反. (即 \(0 \gets 1\),\(1 \gets 0\)). 算法一 模拟暴力即可 ...
- 基础的linux命令(一)
我练习使用的 Linux 系统是 CentOS 7 它是通过把 RHEL 系统重新编译并发布给用户免费使用的 Linux 系统. 首先你需要一台Linux虚拟机,如果没有,也没关系,点这里 一.命令格 ...
