我的个人博客地址 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 修改为自己购买的域名地址
- 执行命令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
查看是否安装成功
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块:配置请求的路由,以及各种页面的处理情况。
配置反向代理
- 进入/etc/nginx/conf.d目录下,使用vim新建crownblog.conf文件
- 配置信息如下
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;
}
- 重新加载配置文件
博客网站项目的编译
- 本地代码上传到云服务器
- 删除go.mod以及go.sum文件,重新使用go mod init 项目名 生成go.mod文件
- 执行go mod tidy命令下载相关的包
- 修改配置文件(mode,端口号,以及mysql连接信息)
- 执行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
项目后台界面如下所示
文章同步到我的个人博客 www.crownblog.icu/post/online…