云服务器购买
云服务器购买
这部分参考博客: 记录第一次Vue项目部署到阿里云Linux服务器上线的艰难历程
借此文章记录一下自己的踩坑问题。
域名申请
域名申请
参考博客: 如何申请域名、购买证书并在Nginx服务器上实现HTTPS?
域名在阿里上买的,xyz后缀域名,首年6块钱(挺便宜)
之后需要走实名认证,很快,
但比较坑的是阿里实名认证完还得入库工信部系统,这得花2-3天的时间,
如果工信部系统没有入库域名,域名网站就无法备案,

没有备案的网站在网上挂一段时间就会被限制:


Nginx
Nginx基础配置
nginx配置
配置Nginx大多数时候都是以下2个步骤:
- 配置nginx.conf文档
1 | vim /etc/nginx/nginx.conf |
- 重启nginx
1 | systemctl restart nginx |
其他命令用的比较多的也就是下面这些:
- 启动nginx
1 | systemctl start nginx |
- 结束nginx
1 | systemctl end nginx |
- 查看所有开启的nginx服务进程
1 | ps -ef | grep nginx |
- 杀死所有nginx进程
1 | killall nginx |
- 检查nginx.conf配置文件是否有语法错误
1 | nginx -t |
配置文件 nginx.conf
这里我在80/8091/8092三个端口上配了服务:
1 | Home |
就是非常普通的配置,但是实际上,一开始我觉得后面的端口号不好看,
想用路由映射的方式映射到不同的服务上,
似乎用proxy_pass或者alias都能实现,
proxy_pass配置
1 | server { |
alias配置
1 | server { |
但是实际这样配置的时候却发现,静态文件无法加载出来,
打开网页控制台报错:
1 | Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec. |
这个问题我找了很久的解决方案,反正现在还是没有解决,
所以干脆就恢复了端口的写法。
Nginx搭建静态资源服务器
添加虚拟主机时,将root映射到本机存储资源的目录下,
开启浏览目录权限:
1 | server{ |
Nginx代理二级域名
申请二级域名

在【阿里控制台/云解析DNS/域名解析/解析设置】中,添加记录,新增二级域名
在弹出的【添加记录】表单中,填写基础信息:
- 记录类型:选择A- 指向IPV4类型
- 主机记录:填写二级域名的前缀
- 记录值:填写域名代理的IPV4地址
- TTL:DNS域名解析的记过在LocalDNS的生存时间
给二级域名申请证书
一级域名在使用url访问时,实际上也默认加上了www前缀,
申请方式参考下面【SSL配置】部分
顶级域名和二级域名
- 顶级域名(TLD):xxx.com
- 不带www
- 直接以定义域名结尾的网址
- 注册和管理由国际互联网名称与数字地址分配机构负责
- 二级域名:www.xxx.com
- 依附于一级域名
- 在一级域名前加上一个特定前缀
- 由各个国家和地区的注册服务商和机构负责
配置Nginx代理
参考配置:
注意点:
- 在listen的端口后加上http2表示开启http2传输
- 在80端口处进行拦截重定向
- 主域名和二级域名的关键在于server_name的设置
e-duck.xyz
1 | ############## 主域名站点 ################## |
next-lab.e-duck.xyz
1 | ################ Next-Three-Lab ################ |
端口配置
端口配置
参考博客: 阿里云服务器开放端口的正确方式
需要外界访问的端口服务需要再云服务器中进行开放,
这个可以在阿里云服务器上配置,
也可以通过命令行配置:
- 开放指定端口
1 | firewall-cmd --zone=public --add-port=80/tcp --permanent |
- 重启防火墙
1 | systemctl restart firewalld.service |
Tomcat
浅配一下
- 操作系统 CentOS 7.9 64位
- Java 1.7.0
- tomcat 8.5.99
配置Java
参考博客: CentOS 7 安装和配置java环境 | tomcat启动“成功”,但是浏览器无法访问
需要注意的是TomCat的版本和Java的版本一定要匹配,
否则tomcat运行不起来,
我是报缺包错误:
1 | Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap |
检测Tomcat是否开启的方式:
1 | ps -ef | grep tomcat |
SSL配置
流程简述
- 配置ACME
- 使用ACME安装证书
- nginx配置ssl服务
配置ACME
- ACME:自动证书管理环境,是证书的签发工具
- CA:证书颁发机构
参考内容:
acme.sh的安装
安装acme.ch,顺便注册邮箱
1 | curl https://get.acme.sh | sh -s email=my@example.com |
安装到root目录下:
1 | ~/.acme.sh/ |
在root目录下创建一个.bashrc:
1 | vim .bashrc |
在bash中配置一个shell的alias:
1 | alias acme.sh=~/.acme.sh/acme.sh |
这样使用acme.sh命令更加方便:
1 | acme.sh -h |
安装证书
使用acme.sh安装证书
一共有2种生成证书的方式:
- http
- dns
这里使用的是http方式生成证书
需要将ca服务器修改为letsencrypt,默认是zerossl:
1 | acme.sh --set-default-ca --server letsencrypt |
指定域名和网站根目录,就可以生成证书了:
1 | acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/ |

指定证书的安装位置:
Apache
1 | acme.sh --install-cert -d example.com \ |
Nginx
1 | acme.sh --install-cert -d example.com \ |
检查已安装证书信息:
1 | acme.sh --info -d example.com |

Nginx配置Https
检查nginx是否存在ssl模块:
1 | cd /usr/sbin |
如果configure arguments存在–with-https_ssl_module,说明存在ssl模块,
可以直接进行配置
注意要检查服务器的443端口是否开放


jenkins的安装和配置
jenkins的安装
环境版本
- 操作系统:CentOS 7
- jdk:21.0.5
- maven: 3.8.8
- jenkins: 2.463
参考资料
- centos7 + jdk 1.8+ maven + jenkins2.346的安装配置指南
- 注意:由于这篇文章里使用的jenkins和jdk版本都比较低,到后面jenkins安装的插件都有不兼容的问题
- 安装Maven
- 2.4新版本jenkins配置方式
- jenkins卸载方式
- 官方提供的jenkins安装方式
- jdk21的安装
安装jdk和maven
安装jdk

- 下载tar.gz压缩包,传输到/opt文件夹中,
1 | -bash-4.2# cd /opt # 进入存放tar包的文件夹内 |
- 配置环境变量
1 | -bash-4.2# vim /etc/profile # 编辑环境变量配置文件 |
插入环境变量:
1 | export JAVA_HOME=/usr/local/jdk-21.0.5 |
编辑结束后esc退出编辑器输入:wq保存修改
- 重启并检查java版本
1 | -bash-4.2# source /etc/profile # 使配置文件生效 |
安装maven
将安装压缩包移动到/opt目录下
安装结束后基本和jdk的安装相同的步骤:
- 解压文件到/usr/local下
1 | -base-4.2# cd /opt |
- 配置maven环境变量
编辑配置文件/etc/profile
1 | vim /etc/profile |
添加环境变量
1 | export MAVEN_HOME=/usr/local/apache-maven-3.8.8 |
刷新配置文件,检测是否成功
1 | source /etc/profile |
安装jenkins
直接照搬官方的教程:
- 安装jenkins
拉取安装包:
1 | sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo |
还要安装jenkins中用到的字体:
1 | sudo yum install fontconfig |
安装jenkins:
1 | yum install jenkins |
- 配置及运行jenkins:
如果需要修改jenkins的端口,需要修改jenkins.service文件:
1 | vim /usr/lib/systemd/system/jenkins.service |
修改其中的环境变量JENKINS_PORT:
1 | Environment=“JENKINS_PORT=8888” |
修改完之后需要重新加载系统配置:
1 | systemctl daemon-reload |
启动jenkins:
1 | systemctl start jenkins |
问题以及解决方法
配置的时候遇到了很多坑,
大部分时候都是由于jdk和jenkins版本不兼容导致的各种报错。
java版本切换时,java命令刷新失败
因为一开始安装的是1.8低版本的jdk,jenkins的很多插件都无法运行,
于是要把旧版本的jdk删除掉,换新版本的,
删除方式如下:
- 删除所有名为java的文件
1 | find / -iname java | xargs -n 1000 rm -rf |
删除/etc/profile中旧的jdk环境变量
清除bash shell内部的哈希表缓存的命令(重要)
如果不执行这一步,即便是删除了usr/bin/java,执行java命令时还是会软链接到原先的文件夹
1 | hash -r |
运行java命令时报错:libjli.so not found
把旧版本的java删除干净之后,重新安装java
运行jenkins报错:/usr/share/java/jenkins.war not installed
报错发生在切换java版本之后,
把jenkins删除后重新安装应该可以
运行jenkins报错:WARNING: An illegal reflective access operation has occurred
高版本java配低版本jenkins导致的错误,
换高版本jenkins
运行jenkins报错:Caused by: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080
8080端口已经被人占用了,现用lsof命令检查一下端口状态:
首先安装lsof命令(如果没有该命令的话):
1 | sudo yum install lsof |
用lsof命令检查8080端口情况:
1 | sudo lsof -i 8080 |
如果端口被占用,杀死占用端口的服务:
1 | sudo kill -9 6056 |
卸载jenkins
1 | rpm 卸载 |