golang的gin和angular上线遇到的问题

win环境下编译golang为linux可执行文件

设置环境变量

cmd执行以下命令

go env -w GOOS=linux

然后正常go build即可

切换回 windows

go env -w GOOS=windows

go env 命令查看设置后的结果
在这里插入图片描述
目前还是linux编译状态

上传文件到linux服务器

  • 通过xftp上传
  • 修改gin打包的main 文件名
mv main newserver
  • newserver文件可以执行
chmod +x newserver

打包angular项目

  • 到angular项目文件夹,执行如下命令
ng build
  • 打包过程中可能出现文件太大的提示;修改可以打包的大小,找到angular.json文件,找到如下的key
              "budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "500kb",
                  "maximumError": "2mb"
                },
  • 上传到nginx的服务器的web目录

centos 中安装 nginx

  1. 添加Nginx到YUM源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  1. 安装Nginx
sudo yum install -y nginx
  1. 启动Nginx
sudo systemctl start nginx.service
  1. 开机启动Nginx
sudo systemctl enable nginx.service
  1. Nginx配置信息

    1. 网站文件存放默认目录
      /usr/share/nginx/html
    2. 网站默认站点配置
      /etc/nginx/conf.d/default.conf
    3. 自定义Nginx站点配置文件存放目录
      /etc/nginx/conf.d/
    4. Nginx全局配置
      /etc/nginx/nginx.conf
  2. Nginx常用命令

nginx -s reload # 重新加载配置文件,让其生效
nginx -t # 查看配置文件是否有错误

Nginx配置文件

  1. 指定web的根目录
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
  1. 解决angular单页应用的刷新问题,就是404 Not Found 错误
    location / {
        try_files $uri $uri/ /index.html;
    }
  1. 通过nginx解决跨域问题,下面二项都要设置对,否则都有问题
    server_name  www.xxxx.com.cn; # 这个也要正确的填写自己的访问的域名,不然也会出现

    location /api/ {
        proxy_pass http://0.0.0.0:8080/; # 最后的`/`不能少,否则也有问题
    }

linux后台运行应用程序

后台运行的命令

nohup 程序 &
  • 执行上面的程序后,就会在当前目录下面有个nohup.out文件

实时查看程序的输出内容

tail -f nohup.out

后台程序的关闭

  • 先查看进程id,通过id关闭
ps -aux | grep 程序名称
  • 关闭程序
kill -9 进程id

利用acme.sh申请SSL证书并自动更新

https://blog.youkuaiyun.com/qq_29656325/article/details/130230157

背景

有时候买了国外的域名,但是可能不提供直接申请免费的SSL证书,这个时候需要我们去购买付费的证书或者找到一些免费的服务机构,比如Let’s Encrypt,于是我就找有没有比较快捷地申请证书的方式,答案就是acme。

什么是ACME

Automated Certificate Management Environment,即自动证书管理环境,是一种协议来着(RFC8555),可以自动颁发和续订证书,当然也可以实现我们的需求申请证书,这只是一个最基本的功能。

ACME实现

既然ACME是一个标准,那么定然会有众多实现,比如Let’s Encrypt官网描述的certbot,以及本文重点描述的acme.sh,感兴趣也可以看看其他客户端

acme.sh

acme.sh是一个bash环境下运行的脚本,实现了ACME协议。

安装

# 安装
curl https://get.acme.sh | sh -s email=my@example.com
# 查看帮助
acme.sh -h

安装程序做了3步骤

  1. 复制acme.sh到~/.acme.sh/下,所有的证书都会被放在这里
  2. 创建别名acme.sh=~/.acme.sh/acme.sh
  3. 创建定时任务,每天检查是否有证书过期并续订

申请证书

# 通过这个命令申请证书,-d域名,-w nginx下的目录(主要用于校验,所以需要先配置好解析和nginx)
acme.sh --issue -d xxx.com -w /usr/share/nginx/html
# 如果你的nginx已经配置好80端口的,下面的方法更加简单
acme.sh --issue --force -d xxx.com -d www.xxx.com --nginx

申请完毕可以在~/.acme.sh/下看到
证书申请好后我们还需要配置让nginx使用

# -d 域名
# 在nginx配置下新建文件夹ssl,将证书放在这里面
# reloadcmd写好nginx的重启命令
# 配置好以后,acme.sh会将前面创建好的证书放在我们指定的目录下
# 并且通过最开始的定时检测证书是否过期(一般是60天)
# 如果过期会自动续订并更新证书文件到现在指定的目录,xxx.com要自己创建,且会执行reloadcmd重启nginx
acme.sh --install-cert -d xxx.com -d www.xxx.com \
--key-file       /etc/nginx/ssl/xxx.com/key.pem  \
--fullchain-file /etc/nginx/ssl/xxx.com/cert.pem \
--reloadcmd     "service nginx force-reload"

配置nginx

# nginx.conf
server {
        listen 443 ssl;
        server_name xxx.com;
        ssl_certificate /etc/nginx/conf.d/ssl/xxx.com.cert.pem;
        ssl_certificate_key /etc/nginx/conf.d/ssl/xxx.com.key.pem;
        location / {
                root /usr/share/nginx/html/xxx;
        }
}

保存修改后重启
然后访问域名正常应该可以看到https

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

book_longker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值