从购买服务器到项目的基本部署(保姆级别教程!)

9,446 阅读17分钟

前言

​在刚接触时,我对 VPS 主机、虚拟主机、云服务器等名词真的是一脸懵,为了让后来接触的人少走一些弯路,同时也给自己做一些笔记,也就出现了本篇文章。本篇文章讲述了 了解服务器 ---> 选择服务器 ---> 购买服务器 ---> 使用服务器 ---> 项目部署 这几方面。文章前半部分主要是为了区分不同的服务器。如果单单只需要了解操作,可以从购买服务器开始。希望大家看完有所收获!

了解服务器

基本概念

​服务器通常分为独立服务器(物理服务器)、VPS 主机、虚拟主机、云服务器这几类。同时,不管是虚拟主机、VPS 主机还是云服务器,其本质上都是一台电脑,它们都由操作系统和服务器资源组成。

image-20200622103502386

VPS 主机

​VPS 主机是将一台物理服务器利用虚拟化技术划分成多个操作系统,每个 VPS 都可分配独立公网 IP 地址、独立操作系统、独立超大空间、独立内存、独立 CPU 资源、独立执行程序和独立系统配置等,有很大的自主权。它独享一份操作系统和服务器资源(一份 VPS 资源)。


虚拟主机

​相比 VPS 主机,多个虚拟主机共用一份操作系统及服务器资源,可以说是多个用户共用一份 VPS 资源。同时阿里云将虚拟主机分为两种。共享型虚拟主机和独享型虚拟主机,他们主要的区别就是 IP 的不同,共享型虚拟主机是共享 IP 而独享型虚拟主机是独享型 IP。

根据 IP 分类虚拟机,可以分为共享 IP 虚拟机独立 IP 虚拟机 其区别在于:

  • 安全性、网站的收录:共享 IP 由于很多站点共用一个 IP ,所以如果站点经常受到黑客攻击或者 SEO 不好会影响到其他站点。但是独立 IP 就不会出现这样的问题。
  • 访问:独立 IP 的虚拟机可以使用 IP 和域名访问,但是共享 IP 虚拟机只能使用域名访问。

云服务器

​云服务器是将服务器集群的资源池(多台物理服务器)利用虚拟化实现的,换句话说就是将计算机资源整合在一起,做成随用随取形式,此时就可以自由申请资源及释放资源。这也就是为什么可以弹性扩展云服务器资源的原因。

常见云服务器:

  • ECS 阿里云服务器
  • CVM 腾讯云服务器
  • BCC 百度智能云

注意:如果 VPS 的母服务器出问题了,就意味着全部在里面的虚拟主机也出问题了,属于一损俱损。而云服务器的集群一台服务器出问题,还有镜像文件,不会有任何中断。

服务器发展

  • 刚开始时服务器都是物理服务器,但由于需要购置硬件、布线、设置网络等,它的成本太高,但是最终的硬件使用率却不高。
  • 为了提高物理服务器的利用率和降低成本,所以出现了 VPS。当使用虚拟化技术将物理服务器的操作系统虚拟出很多套独立运行的操作系统时,这些独立的系统就是 VPS。其中虚拟化是一个抽象层,它将物理硬件与操作系统分开,从而提供更高的 IT 资源利用率和灵活性。
  • 虽然有虚拟化技术,但是用户在使用服务器的时候需要自己安装操作系统以及环境,十分费时费力,所以出现了虚拟主机。虚拟主机实际上是多个用户公用一套已经配置好环境(PHP + MySQL等)的操作系统。用户可以直接使用生成的系统,但是它会受到主服务器系统的限制和其他虚拟主机抢占资源的影响。
    • 例如,现在新增一个用户,那么虚拟主机管理程序直接在设定的路径新建一个文件夹、另外在数据库创建一个子数据库,用户将网页代码通过 ftp 等方式传送到新建的文件夹内,并将数据存入新建的数据库,整个网站就已经弄好了。域名解析后就可以直接使用了。简单快捷,但是因为是和别人公用一套环境,自由度不高,限制较多,所以当很多人公用后其性能也就很一般了。
  • 为了把计算机资源整合在一起做成随用随取,用多少取多少的形式,所以就出现了云服务。云计算是将一大堆的服务器、网络、存储资源集合成大集群,当有使用需要的时候,便从一堆的资源中分配出来,用完后就释放。

基本概念

虚拟主机

​虚拟主机又被称为虚拟服务器,它是利用虚拟技术将一台物理服务器或 VPS 主机划分为多台“虚拟”服务器。所有的虚拟主机相互独立,有各自的 IP 、内存、CPU 、文档存储空间等。在外界看来虚拟主机相当于一台独立的主机,所以这种虚拟化的逻辑主机被称为“虚拟主机”。

  • 优点
    • 方便管理: 由于所有的虚拟主机都在同一部主机中,所以彼此可以共享相同的配置和设置,从而节省管理的人力和成本
    • 降低成本: 虚拟主机的出现大大减少了搭建物理主机的成本,由于多个虚拟主机的用户共同承担物理主机的硬件维护、网络维护、通信维护等,所以成本有一定程度的降低。
    • 上手成本低:软件配置、防病毒、防攻击等安全措施都是由专业的服务商提供,大大降低了操作的复杂性。虚拟主机基本上不需要管理和维护你的主机,互联网供应商会完成绝大多数管理工作。
  • 缺点
    • 自主性差:虚拟主机不能由客户随意安装软件和远程操作。
    • 功能、流量受限:某些功能会受到服务商的限制,同时有些服务商对网站的流量有一定的限制,这样当网站访问量比较大的时候将无法访问。
    • 存在资源抢夺:由于服务器上有很多虚拟主机共享服务器资源,所以如果其他虚拟主机执行一些占据流量和带宽的操作,很有可能影响到其他用户。

云服务器(ECS)

​云服务器(Elastic Compute Service,ECS)的标准定义是指一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。云主机是对多台物理服务器资源的虚拟化,这意味着跟好的容灾能力和伸缩性,具有具有独立的宽带和 IP,用户可以根据需求自主安装各种操作系统和配置相应的运行环境,同时可以根据自己的需求来升级降级其功能。

  • 优点
    • 部署快捷:初始化时可以配置好语言和系统类型。
    • 安全:平台提供免费的 DDoS 防护、木马查杀、防暴力攻击等服务。
    • 容灾性强:云服务器具有自动修复和热迁移的能力,所以即使出现硬件故障或者火灾等情况,云服务器也可以很快的将数据迁移,继续使用。
    • 弹性扩展:云服务器用户可以根据业务量自由配置 CPU、内存、带宽。在升级配置后数据也不会丢失。
  • 缺点
    • 上手成本高:需要有专业能力的人员管理。

    • 依赖网络,不像物理服务器一样数据存储在本地。

      image-20200621153859578

由于我是学习如何配置nginx,最终我选择了阿里的云服务器ECS。

Nginx 是什么?

Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理和负载均衡。

NginxNode.js 语言的关系:

Node.js 可以实现 Nginx 中绝大部分功能,但是由于它们侧重不同所以可以配合使用达到更好的效果。Node.js 擅长于具体业务逻辑的处理,而 Nginx 擅长于底层服务端资源的处理,例如静态资源的转发、方向代理、负载均衡等。

正向代理

​我们通常使用的 kexue 上网工具就是正向代理,他可以把用户的请求代理到一个可以访问外网的服务器上,然后再把返回的信息返回给客户。代理服务器对于用户来说是不透明的,用户需要自己手动选择代理。

1585375161159

反向代理

​在大型网页中,大部分都使用了反向代理。当客户端请求服务端数据的时候。实际上是先请求到了代理服务器,然后由代理服务器再转发到其同个局域网下的服务器。即向外部客户端提供了一个统一的代理入口,客户端的请求,都先经过这个 Proxy 服务器,至于在内网真正访问哪台服务器内容,由这个 Proxy 去控制。

​ 同时用户无需进行操作,对于用户来说反向代理是透明的。

1585375567019

这里的方向就是正向代理,代理的是客户端,反向代理代理的是服务器 Nginx 就是来充当这个 Proxy 的作用。

使用反向代理的原因有:

​ 1.安全及权限:可以通过 Nginx 过滤一部分没有权限或者不安全的请求。同时由于用户无法直接访问到真正的服务器,从而提高了安全性。

​ 2.负载均衡:当有多个服务器时,可以用 Nginx 做负载均衡,Nginx 会查询服务器是否异常,如果异常就不发送请求到该服务器上,知道服务器恢复正常。同时还会将请求分到各个服务器上。保证了服务器的安全和稳定性。

基本概念:

  • 地域和可用区:是指 ECS 实例所在的物理位置。

  • 实例:等同于一台虚拟机,包含 CPU、内存、操作系统、网络、磁盘等最基础的计算组件。

  • 实例规格:是指实例的配置,包括 vCPU 核数、内存、网络性能等。实例规格决定了 ECS 实例的计算和存储能力。

  • 镜像:是指ECS实例运行环境的模板,一般包括操作系统和预装的软件。操作系统支持多种 Linux 发行版本和不同的 Windows 版本。

  • 块存储:包括基于分布式存储架构的 云盘和共享块存储,以及基于物理机本地硬盘的 本地存储。

  • 快照:是指某一个时间点上一块弹性块存储的数据备份。

  • 网络类型:

  • 专有网络:基于阿里云构建的一个隔离的网络环境,专有网络之间逻辑上彻底隔离。更多信息,请参考专有网络 VPC

  • 经典网络:统一部署在阿里云公共基础内,规划和管理由阿里云负责。

  • 安全组:由同一地域内具有相同保护需求并相互信任的实例组成,是一种虚拟防火墙,用于设置实例的网络访问控制。

镜像的选择:

公共镜像

是由阿里云官方或第三方合作商家提供的系统基础镜像,仅包括初始系统环境。请根据您的实际情况自助配置应用环境或相关软件配置。

自定义镜像

基于用户系统快照生成,包括初始系统环境、 应用环境和相关软件配置 。选择自定义镜像创建云服务器,节省您的重复配置时间。

共享镜像

是其他账号的自定义镜像主动共享给您使用的镜像。阿里云不保证其他账号共享给您的镜像的完整性和安全性,使用共享镜像需要自行承担风险。了解共享镜像详情>

镜像市场

提供经严格审核的优质镜像,预装操作系统、应用环境和各类软件,无需配置,可一键部署云服务器。满足建站/应用开发/可视化管理等个性化需求。了解镜像市场服务>

公共镜像,中 CentOSUbuntu 是 Linux 的 2 个主流的发行版。

img
CentOS
img
Ubuntu
基于 Red Hat Linux Enterprise 基于 Debian
更新频度较少 经常更新
更稳定和更安全一些,因为不经常更新。 更新的软件包可能不稳定,不安全?不会,因为他们在发布到正式版本前进行了大量测试。
没有足够的教程和用户群较少(LCTT 译注:可能是由于国内外情况不同,在国内,相对 Ubuntu 来说,人们更喜欢用 CentOS 做服务器) 丰富的文档,活跃的社区和大量的在线教程
对初学者困难,因为基于 Red Hat 桌面发行版不流行 更容易为已经熟悉桌面版 Ubuntu 的初学者使用
支持 cPanel 不支持 cPanel
.rpm 软件包和 “yum” 软件包管理器 .deb 软件包和 “apt-get” 软件包管理器

新手:更适合使用 Ubuntu

​1.由于他社区强大,很多问题可以立刻找到解决方案

​2.Ubuntu 服务器对于以前使用过 Ubuntu 桌面的人来说会容易得多。其他发行版也一样,但是 Ubuntu 桌面版比任何其他基于 Linux 的家用桌面更受欢迎。

商用: 使用 Centos

​1.CentOS 相对更稳定以及更安全,由于更新频率低,测试时间长,所以存在的 Bug 很少。

​2.大多数控制面板(包括最受欢迎的控制面板 - cPanel)仅支持 CentOS。如果你需要控制面板那么选择 Centos 是更好的。

购买服务器

购买云服务器 ECS 具体看自己需求,分为一键购买和自定义购买。

  • 一键购买:有具体的推荐和模板

1589276533191

1589276604233

自定义购买

使用向导创建实例

学习路径

使用路径

image-20200621171007270

创建实例和其余操作

​先进入 ECS 控制台找到按图中步骤进行连接,最后远程登陆的账号为 root,密码为服务器密码。

image-20200621172522586

image-20200621172346716

​注意:密码必须复杂不然容易被入侵。然后把所有相关账号密码保存起来以免丢失。连接远程服务器时,我使用xShell。其登录时可以自动保存登录态。

使用 XShell 连接实例

Xshell + Xftp 个人版下载地址,输入名称和邮箱可以获得下载连接下载。

新建会话,填入实例中的公网 IP。

image-20200621175337101

image-20200621175536230

由于接入端口为 22,所以需要在安全组允许端口 22 被接入

image-20200622083126806

image-20200621175641308

image-20200621175741082

image-20200621180044654

安装 Nginx

nginx.org 是开源社区,管理着 Nginx 开源版。

nginx.com 是商业社区,管理着 Nginx Plus 商业版。

这里我们使用的是开源版Nginx官网

使用 Xshell 输入账号密码进入界面,直接按官网,一顿操作。

安装环境

sudo apt install curl gnupg2 ca-certificates lsb-release

设置 Nginx 的 apt 存储库

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

安装 Nginx

sudo apt update
sudo apt install nginx

常用的 Linux 命令

cd 路径 //进入文件
ps -ax | grep nginx //查看正在运行进程中包含nginx的
kill 端口号 //上个命令可查到端口号kill 掉进程
mkdir dirName1 dirName2 //创建文件夹
ls //查看当前目录
ll //查看当前目录及其权限
rm -rf path //强制删除path无法恢复
rm path //删除path文件
cp dirName //赋值文件夹
vim //编辑文件夹,退出且保存需要先按Esc 后输入  :wq
cat //查看文件夹

Linux 常用命令整理

初步配置

ll // 查看当前目录

1589273866491

cd .. // 到上一层(最顶层)
ll // 查看当前目录

1589273899780

cd etc/nginx // 进入到 Nginx 目录
ll // 查看目录

1589274045829

vim nginx.conf // 编辑配置文件
i // 进入编辑模式

1589274149502

esc // 退出编辑
:wq // 保存当前编辑
// 接下来要重启才能生效

重新启动

方法1:

ps -ax | grep nginx // 查看正在运行进程中包含 Nginx 的进程
kill 端口号 // 上面可以查询到
nginx

1589275540370

方法2:

nginx -s reload // 重启服务器

Nginx 命令

nginx 直接开启
nginx -s quit 保存后退出
nginx -s stop 直接退出
nginx -s reload 修改配置项后直接更新

#可以配合 ps -ax | grep nginx 来查看当前 Nginx 使用的端口

输入你服务器的 IP 后会直接看到 welcome nginx 页面!这是由于配置项默认引用 /conf.d 路径下的所有配置文件。

1589274671630

如果不需要,那么直接注释掉。自己在 nginx.conf 文件配置即可

1585532228238

具体实战

配置详解

基本配置

 server {
        # nginx监听端口号,不能被其他应用占用a
        listen 80;

        # nginx绑定的域名
        server_name  localhost;

        # 公共静态资源
        location / {
          index index.html;
          root /project/airport_pc;
          # 项目打算放入的位置
          autoindex on;
          # 是否启用目录索引
         }
     }

放入项目

下载 winSCP 或者 Xftp 后登陆

1589275077017

Vue 打包得到dist文件下的文件放到前面配置位置下(前面配置的 /project/airport_pc

1589275147857

开启Gzip

「简明性能优化」双端开启 Gzip 指南

全部配置

// /etc/nginx# vim nginx.conf  文件

    default_type        application/octet-stream;
    # 默认文件类型

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # 加载模块化配置文件
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.

    # include /etc/nginx/conf.d/*.conf;


        gzip            on;
        gzip_comp_level 6;
        gzip_types text/plain application/javascript application/x-javascript text/css text/javascript ;
        gzip_static     on;
        gzip_vary       on;
        gzip_buffers    2 4k;
        gzip_http_version 1.1;
    server {
        # nginx监听端口号,不能被其他应用占用a
        listen 80;

        # nginx绑定的域名
        server_name  localhost;

        # 公共静态资源
        location / {
          index index.html;
          root /project/airport_pc/;
          autoindex on;
          # 是否启用目录索引
          # 开启强缓存
          add_header    Cache-Control  max-age=360000;
         }
     }
}

注意:

海外服务器和国内服务器的区别主要在于国内服务器需要备案,主要访问者是中国人。

备案完成后,如果需要更换服务器不需要重新备案,只需要把之前备案过的域名解析到新的服务器即可。

备案完成后,想要更换其他域名解析到该服务器,无法直接通过域名访问到该服务器,需要重新备案。

结语

终于结束了!本篇文章主要是总结,网上资料存在矛盾以及重复,如果发现错误,欢迎留言指出!

如果对你有用,点个赞再走呗!

Nginx 进阶可看 Nginx与前端开发Nginx 从入门到实践,万字详解!

参考文档:

  1. 阿里云---入门概述
  2. 阿里云---什么是云服务器ECS
  3. VPS,云服务器(云主机),虚拟主机有什么异同?
  4. VPS 和虚拟主机的区别(需kx上网)
  5. CentOS 与 Ubuntu:哪个更适合做服务器?
  6. 配置详解
  7. Nginx 官网
  8. Linux 常用命令整理
  9. 「简明性能优化」双端开启Gzip指南Nginx与前端开发
  10. Nginx与前端开发