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

云

前言

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

了解服务器

基本概念

​服务器一般分为独立服务器(物理服务器)、VPS 主机、虚拟主机、云服务器这几类。同时,无论是虚拟主机、VPS 主机仍是云服务器,其本质上都是一台电脑,它们都由操做系统和服务器资源组成。css

image-20200622103502386

VPS 主机

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


虚拟主机

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

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

  • 安全性、网站的收录:共享 IP 因为不少站点共用一个 IP ,因此若是站点常常受到黑客攻击或者 SEO 很差会影响到其余站点。可是独立 IP 就不会出现这样的问题。
  • 访问:独立 IP 的虚拟机可使用 IP 和域名访问,可是共享 IP 虚拟机只能使用域名访问。

云服务器

​云服务器是将服务器集群的资源池(多台物理服务器)利用虚拟化实现的,换句话说就是将计算机资源整合在一块儿,作成随用随取形式,此时就能够自由申请资源及释放资源。这也就是为何能够弹性扩展云服务器资源的缘由。linux

常见云服务器:nginx

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

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

服务器发展

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

基本概念

虚拟主机

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

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

云服务器(ECS)

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

  • 优势
    • 部署快捷:初始化时能够配置好语言和系统类型。
    • 安全:平台提供免费的 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与前端开发
相关文章
相关标签/搜索