文章目录
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
- 添加Nginx到YUM源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 安装Nginx
sudo yum install -y nginx
- 启动Nginx
sudo systemctl start nginx.service
- 开机启动Nginx
sudo systemctl enable nginx.service
-
Nginx配置信息
- 网站文件存放默认目录
/usr/share/nginx/html
- 网站默认站点配置
/etc/nginx/conf.d/default.conf
- 自定义Nginx站点配置文件存放目录
/etc/nginx/conf.d/
- Nginx全局配置
/etc/nginx/nginx.conf
- 网站文件存放默认目录
-
Nginx常用命令
nginx -s reload # 重新加载配置文件,让其生效
nginx -t # 查看配置文件是否有错误
Nginx配置文件
- 指定
web
的根目录
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
- 解决
angular
单页应用的刷新问题,就是404 Not Found
错误
location / {
try_files $uri $uri/ /index.html;
}
- 通过
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步骤
- 复制acme.sh到~/.acme.sh/下,所有的证书都会被放在这里
- 创建别名acme.sh=~/.acme.sh/acme.sh
- 创建定时任务,每天检查是否有证书过期并续订
申请证书
# 通过这个命令申请证书,-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