关于部署:从0到1实现简单部署

65次阅读

共计 4014 个字符,预计需要花费 11 分钟才能阅读完成。

对于目前的集体开发者而言,应用云服务器是非常方便快捷的,在灰溜溜地写好了我的项目代码后,会有一种想要疾速部署到服务器上的激动,明天咱们就来实际一下 0 到 1 的简略服务器部署。

首先你须要有一台云服务器,这里以我的阿里云服务器为例,零碎是 CentOS 7.3

1. 近程连贯

想要在服务器上进行部署,首先得连贯上服务器,能够通过阿里云官网管制的 浏览器近程连贯 登录服务器,然而比拟麻烦,每隔一段时间都须要从新登录。除此之外,还能够利用 ssh 通过账号密码或者密钥进行连贯,如下:

# 通过账号密码进行连贯,个别为 root,连贯胜利后须要输出明码
ssh root@yourIp

# 通过密钥进行连贯,yourKey 为密钥的本地门路
ssh root@yourIp -i yourKey

2.nginx 配置

当初的服务器部署,基本上离不开 nginx,配置简略易用,对于集体开发者非常敌对。

2.1 nginx 装置

yum install -y nginx

装置胜利后能够应用 -v 查看版本,我这里是 1.16.1

nginx -v

2.2 nginx 命令

启动 nginx

能够应用 Linux 的零碎工具 Systemd 来启动 nginx,也能够应用 nginx 自带的命令:

systemctl start nginx
# 或
nginx

# 设置开机主动启动
systemctl enable nginx

进行 nginx

当你想进行 nginx 时,能够应用 stop 命令:

systemctl stop nginx
# 或
nginx -s stop

重启 nginx

当你更改了 nginx 的配置时,这个时候往往须要重启 nginx 服务配置能力失效:

systemctl restart nginx
# 或
nginx -s reload

2.3 配置 nginx

nginx 装置好了之后,默认门路个别是 /etc/nginx/,如果在该门路下没有找到,能够应用 nginx -t 命令查看装置门路:

nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful

这里验证的 nginx.conf 就是 nginx 的主配置文件,默认内容如下:

# 局部配置已省略
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / { }

    error_page 404 /404.html;
        location = /40x.html { }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {}}

这里咱们次要关注一下 server 的配置,以 http 协定的 server 为例,逐行解析一下:

  • listen:示意监听 IPV4 & IPV6 的 80 端口,且将该端口设置为默认服务
  • server_name:示意以后的服务对应的名称(IP 或者 URL)
  • root:示意根门路
  • include:示意援用该门路下的配置,这里能够疏忽
  • location:示意域名后的门路对应的规定
  • error_page:示意呈现谬误之后的重定向规定

前端我的项目

对于前端我的项目,实质上打包之后是一堆动态文件,配置对应的 server_name 和 root 就能够了,这里以配置域名为 www.example.com,打包后 dist 下的文件寄存服务器目录为 /home/admin/www 为例:

# 局部配置已省略
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  www.example.com;
    root         /home/admin/www;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / { }

    error_page 404 /404.html;
        location = /40x.html { }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {}}

服务端我的项目

对于服务端我的项目,会在本地监听一个端口来运行相干的服务,能够利用 nginx 配置反向代理,使被拜访服务反向代理到对应的端口,这里以 3000 端口为例:

# 局部配置已省略
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  www.example.com;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {proxy_pass http://127.0.0.1:3000;}
}

配置更改之后须要重启一下 nginx 服务能力失效

3. 上传文件

上传文件的形式也比拟多,这里次要介绍 scp 命令,以近程服务器用户为 root@192.168.0.1 为例:

# 将近程服务器的 /remote/index.html 文件,下载到本地 /local 目录下
scp root@192.168.0.1:/remote/index.html /local

# 将近程服务器的整个 remote 目录,下载到本地 /local 目录下
scp -r root@192.168.0.1:/remote/ /local

# 将本地 /local/index.html 文件,上传到近程服务器的 /remote 目录下
scp /local/index.html root@192.168.0.1:/remote

# 将本地的整个 /local 目录,上传到近程服务器的 /remote 目录下
scp -r /local root@192.168.0.1:/remote

对于前端我的项目而言,若是想上传 dist 目录下的所有文件,但又不想上传 dist 目录,这个时候能够应用 通配符 来上传所有文件:

# 将本地的整个 /local 目录下的所有文件,上传到近程服务器的 /remote 目录下
scp -r /local/* root@192.168.0.1:/remote

在上传前须要确保服务器的目录具备正确的读写权限,否则会呈现 SCP Permission denied 谬误,具体的文件权限能够通过 ls -l 查看:

ls -l
# -rw-r--r-- 1 root root  2376 Feb 17 20:37 404.html
# drwxr-xr-x 2 root root  4096 Feb 17 00:43 about
# drwxr-xr-x 4 root root  4096 Feb 17 00:43 assets
# drwxr-xr-x 2 root root  4096 Feb 17 00:43 atlas
# -rw-r--r-- 1 root root 51022 Feb 17 20:37 head.png
# -rw-r--r-- 1 root root 13927 Feb 17 20:37 index.html
# drwxr-xr-x 8 root root  4096 Feb 17 00:43 posts

其中第二列示意文件权限,首字母为文件类型,d 示意目录文件,- 示意一般文件,前面的 rwx 示意 读 / 写 / 执行 权限,每三个一组,别离对应 拥有者 / 群组 / 其余组

如若没有权限,能够通过上面的命令来设置所有人可读写以及执行:

chmod 777 yourDir

4.https 配置

将你的站点配置为 https 须要上面几个步骤:

  1. 申请证书并下载。例如在阿里云的 SSL 证书 模块中能够申请收费证书,期限一年
  2. 将证书文件上传到服务器的对应目录
  3. 更改 nginx 配置

ssl_certificatessl_certificate_key 别离示意证书文件和私钥的寄存门路,示例如下:

# 局部配置已省略
server {
    listen       443 ssl http2 default_server;
    listen       [::]:443 ssl http2 default_server;
    server_name  www.example.com;
    root         /home/admin/www;

    ssl_certificate "/etc/pki/nginx/www.example.com.pem";
    ssl_certificate_key "/etc/pki/nginx/private/www.example.com.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / { }

    error_page 404 /404.html;
    location = /404.html { }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {}}

当部署 https 站点时,常见的需要是将 http 站点主动跳转到 https,nginx 配置如下:

server {
    listen      80;
    server_name example.com www.example.com;
    return 301  https://$server_name$request_uri;
}

以上就是本篇的全部内容,如有谬误,欢送斧正~

正文完
 0