陌小路的个人博客 陌小路的个人博客
首页
  • 技术专区

    • 面试
    • Vue
    • Electron
    • TypeScript
    • Serverless
    • GraphQL
  • 我的秋招之旅
  • 2019年终总结
Todo
收藏夹
关于作者
GitHub

陌小路

前端切图仔
首页
  • 技术专区

    • 面试
    • Vue
    • Electron
    • TypeScript
    • Serverless
    • GraphQL
  • 我的秋招之旅
  • 2019年终总结
Todo
收藏夹
关于作者
GitHub
  • Vue

  • React

  • 面试

  • Electron

  • Serverless

  • GraphQL

  • TypeScript

  • RxJS

  • 工程化

  • Webpack

  • Nestjs

  • WebRTC & P2P

  • Docker

  • Linux

    • Shell 命令收集
    • Shell 终端支持显示中文日志
    • Linux 博客网站部署
      • 前置准备
        • 知识储备
      • 快速上手
        • nginx 安装
        • 基础的 nginx 配置
        • 配置修改
        • 重启 nginx
  • Git

  • Svelte

  • 踩坑日记

  • 其他

  • technology
  • Linux
陌小路
2023-01-02

Linux 服务器部署

# 前置准备

  • 一台 linux 服务器(笔者这里以 Ubuntu 为例)
  • 一个证书(没有可以不用管,后面的证书部署需要这个)
  • 一个网站的静态资源产物

# 知识储备

  • ssh 登录远程服务器:ssh root@xx.xx.xx.xx,然后输入密码即可。
  • ssh 传输文件到远程服务器:scp -r ./dist root@x.x.x.x:/home/website/,这里表示将当前目录下 dist 目录全部传输到服务器 /home/website 目录下

# 快速上手

# nginx 安装

  • apt update && apt install nginx

安装完之后,nginx 的默认配置文件在 /etc/nginx/nginx.conf。

# 基础的 nginx 配置

复制下面内容,改动其中部分内容即可,相关改动可往后看。

user www-data;

#启动进程,通常设置成和cpu的数量相等
worker_processes  2;

#全局错误日志
error_log  /var/log/nginx/error.log;
error_log  /var/log/nginx/notice.log  notice;
error_log  /var/log/nginx/info.log  info;

#PID文件,记录当前启动的nginx的进程ID
pid  /var/log/nginx/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

#工作模式及连接数上限
events {
    worker_connections 1024;    #单个后台worker process进程的最大并发链接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    default_type  application/octet-stream;

    #设定日志
    log_format  main  '[$remote_addr] - [$remote_user] [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log    /var/log/nginx/access.log main;
    rewrite_log     on;

    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    keepalive_timeout  120;
    tcp_nodelay        on;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    # include /etc/nginx/conf.d/*.conf;
    # include /etc/nginx/sites-enabled/*;
    include mime.types;

    #gzip压缩开关
    gzip  on;

    #HTTP服务器
    server {

         #监听80端口,80端口是知名端口号,用于HTTP协议
        listen       80;

        # server_name  xiaohanglin.site localhost 127.0.0.1;

        #首页
        index index.html;

        #指向根目录
        root /home/website/docs/dist/;

        #编码格式
        charset utf-8;

        #代理配置参数
        proxy_connect_timeout 180;
        proxy_send_timeout 180;
        proxy_read_timeout 180;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarder-For $remote_addr;

        #静态文件,nginx自己处理
        location ~ ^/(assets)/ {
            try_files $uri $uri/ =404;
            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
            expires 30d;
        }

        #静态文件,nginx自己处理
        location ~ ^/ {
            try_files $uri $uri/ =404;
        }

        #设定查看Nginx状态的地址
        location /NginxStatus {
            stub_status           on;
            access_log            on;
            auth_basic            "NginxStatus";
            auth_basic_user_file  conf/htpasswd;
        }

        #禁止访问 .htxxx 文件
        location ~ /\.ht {
            deny all;
        }

                #错误处理页面(可选择性配置)
        error_page  404 /404.html;
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

# 配置修改

# 设置静态资源根目录

首先是设置你需要被 nginx 代理访问的静态资源目录,也就可以通过上面给出的服务器传输文件的命令把你要部署的资源传到服务器上,然后改下这一句配置:

root /home/website/docs/dist/;

把 root 后面的内容改到你传到服务器之后的目录路径。

# 设置资源请求处理

location ~ ^/(assets)/ {
    try_files $uri $uri/ =404;
    #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
    expires 30d;
}

#静态文件,nginx自己处理
location ~ ^/ {
    try_files $uri $uri/ =404;
}
1
2
3
4
5
6
7
8
9
10

这里主要看这两个,你可以设置自己的策略对资源进行控制,笔者这里针对 assets 前缀的静态资源请求直接设置了 30 天的缓存,其他资源则不做处理,看个人喜好即可。

这里的 try_files 就是拿到请求之后,直接根据请求路径和上面你设置的 root 目录,进行一层一层查找对应的资源,找不到就直接 404 就好了。

# 重启 nginx

改完配置之后执行 nginx -s reload 即可,接着就可以尝试访问一下试试了。

编辑
上次更新: 2023/01/08, 13:01:00
Shell 终端支持显示中文日志
Git 体系介绍 + 常用命令及其应用场景

← Shell 终端支持显示中文日志 Git 体系介绍 + 常用命令及其应用场景→

最近更新
01
npm 踩坑日记
03-21
02
Github Actions 快速入门
01-08
03
git 相关记录
08-15
更多文章>
Theme by Vdoing | Copyright © 2020-2023 STDSuperman | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式