crownblog生产环境的部署与博客系统发布上线

196 阅读5分钟

我的个人博客地址 www.crownblog.icu/

服务器的购置域名的购买

需要部署到线上服务器,首先需要购置一台云服务器。云服务器可以从阿里云、腾讯云、百度云、华为云、小鸟云等云服务器提供商上购买。他们有服务上的优势、价格上的优势等各不相同,根据个人需求来购买。

默认情况下,一个博客的流量并不会太大,因此我们只需要购买最低配置即可,如果有活动价,也可以购买更高点的配置,比如1核心2G内存3M带宽,2核心4G内存5M带宽等。重要一点,服务器尽量不要安装windows系统,我们尽量使用Linux使用来作为云服务器的操作系统,CentOS、Ubuntu系统任选一个都可以。下面我们将以使用Ubuntu 18.04操作系统为例,说明怎么部署。

上面几个云服务器商,同样支持域名的购买,例如我们现在在上面买了一个 crownblog.icu 域名,后面我们的配置就以这个域名为例。购买了域名之后,将域名 @ 和 www 都解析到上面购买的服务器ip上,域名就可以使用了。国内购买的域名,是需要实名认证的,自行认证即可。之后进行域名备案,大约半个月左右。

在购买了域名之后,最好是给域名申请一个https,https的重要性这里不做赘述,一般服务商都有提供免费的https证书的服务。在这里不使用https部署。

前端项目打包

  • 找到.env.production 修改为自己购买的域名地址

image.png

  • 执行命令npm run build生成dist文件
  • 把dist文件拷贝到后端项目目录下(使用go自带的http服务来部署前端项目)

服务器生成环境的配置

安装mysql、nginx、go等环境

mysql安装

可以在服务器上安装mysql服务,这里我使用了之前docker安装的mysql服务 详见www.crownblog.icu/post/online…

go环境安装

ubuntu使用apt-get命令默认安装的不是最新版

sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get install golang-go

安装最新版的go之后设置代理以及开启go modules

export GOPROXY=goproxy.cn,direct export GO111MODULE=on

查看是否安装成功

image.png

nginx环境安装

sudo apt install nginx

相关文件位置

  • /usr/sbin/nginx:主程序
  • /etc/nginx:存放配置文件
  • /usr/share/nginx:存放静态文件
  • /var/log/nginx:存放日志

相关命令

  • service nginx start # 启动nginx
  • service nginx reload # 重新加载nginx配置文件
  • nginx -s reopen # 重启 Nginx
  • nginx -s stop # 停止 Nginx

nginx 文件结构

  • 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location块:配置请求的路由,以及各种页面的处理情况。

配置反向代理

  1. 进入/etc/nginx/conf.d目录下,使用vim新建crownblog.conf文件
  2. 配置信息如下
upstream crownblog {
    server 127.0.0.1:8085;   # 应用服务器
}

server{
    listen 80;
    server_name crownblog.icu;     # 将不带www的顶级域名301跳转到www开头的域名中
    rewrite ^/(.*)$ https://www.crownblog.icu/$1 permanent;
}

server{
    listen 80;   # 端口
    server_name www.crownblog.icu;  # 域名
    root  /root/crownBlog/dist;   # 目录
    index index.html;

   # error_page 404 /404.html;

    location / {
        try_files $uri $uri/index.html @go;
    }

    location @go {
        proxy_pass http://crownblog;     # 代理的ip地址
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    #access_log off;return 301 https://$host$request_uri;
}
  1. 重新加载配置文件

博客网站项目的编译

  1. 本地代码上传到云服务器
  2. 删除go.mod以及go.sum文件,重新使用go mod init 项目名 生成go.mod文件
  3. 执行go mod tidy命令下载相关的包
  4. 修改配置文件(mode,端口号,以及mysql连接信息)

image.png

  1. 执行go build . 命令生成可执行文件

博客项目的运行

在当前目录下执行./blog

但是这样执行运行下,只要我们关闭终端,项目就停止了。因此,我们还需要将它放到后台去执行。这里我们使用linux的nohup命令来保持博客网站后台运行。

nohup /root/crownBlog/blog &

nohup命令的使用格式是:

nohup Command [ Arg … ] [ & ]

参数说明:

  • Command:要执行的命令。
  • Arg:一些参数,可以指定输出文件。
  • &:让命令在后台执行,终端退出后命令仍旧执行。

默认情况下,它会在当前目录下生成一个nohup.out 的输出文件。如果想使用其他文件名可以这么用: 比如重定向输出到 crownblog.log 文件:

比如重定向输出到 crownblog.log 文件:

nohup /root/crownBlog/blog > crownblog.log 2>&1 &

2>&1 解释: 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

0 – stdin (standard input,标准输入)

1 – stdout (standard output,标准输出)

2 – stderr (standard error,标准错误输出)

查看项目进程Pid image.png

项目后台界面如下所示

图片.png

文章同步到我的个人博客 www.crownblog.icu/post/online…