运维与DevOps 文章

个人建站免费 HTTPS 证书全攻略:三种方案轻松搞定
运维与DevOps
2023-06-30 0k

个人建站免费 HTTPS 证书全攻略:三种方案轻松搞定

不花一分钱,也能给自己的网站加上“小绿锁” 建站初期,很多个人站长都会纠结一个问题:要不要上 HTTPS? 买证书要花钱,免费的又怕不靠谱。其实,今天已经有很多成熟的免费方案,完全可以满足个人博客、小型项目的需求。本文就来聊聊我个人用过的几种方案,并给出最实在的建议。 为什么要折腾 HTTPS? 简单说两点: 浏览器不“警告”:没有 HTTPS,Chrome 会在地址栏标记“不安全”,非常劝退访客。 SEO 友好:搜索引擎更青睐 HTTPS 站点。 既然好处明显,付费证书动辄几百上千,个人站长完全可以从免费方案入手。 方案一:云厂商“白送”的证书——最适合新手 如果你用的是阿里云、腾讯云、华为云等国内云服务器,它们都提供了免费 DV 证书。以阿里云为例: 登录控制台 → 找到“数字证书管理服务”(SSL 证书)。 点击“购买证书”,筛选“免费版”(DigiCert 品牌,单域名,有效期 1 年,实际 3 个月,但可续期)。 填写域名,选择 DNS 验证(在域名解析加一条 TXT 记录)或文件验证。 审核通过后下载证书,按你的 Web 服务器(Nginx/Apache)配置即可。 ✅ 优点:操作全程中文,跟自己的云产品无缝对接,有客服。 ❌ 缺点:每个实名主体每自然年只有 20 张(其实够用),有效期只有 90 天,且仅支持主域名或 www 的一个单域名。 小技巧:虽然只有 90 天,但云厂商一般会提前提醒续期,手动重签一次也很简单。 方案二:Let‘s Encrypt + acme.sh —— 技术玩家的最爱 如果你不满足于单域名,或者希望完全自动化(比如申请泛域名证书 *.example.com),那 Let’s Encrypt 就是不二之选。它是 Linux 基金会旗下的公益 CA,全球信任。

HTTPS SSL证书 Let's Encrypt
阅读更多
Nginx的基本使用
运维与DevOps
2021-11-18 0k

Nginx的基本使用

什么是Nginx? Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 反向代理 Nginx 根据接收到的请求的端口,域名,url,将请求转发给不同的机器,不同的端口(或直接返回结果),然后将返回的数据返回给客户端。 安装Nginx #如果缺少依赖,先安装依赖 yum -y install gcc gcc-c++ openssl openssl-devel #下载 wget http://nginx.org/download/nginx-1.20.1.tar.gz #进入服务安装包目录,这里放到了home/server cd /home/server/ #解压tar包 tar -zxvf nginx-1.20.1.tar.gz #进入解压nginx目录 cd nginx-1.20.1 #执行configure进行配置,这里配置可以根据自己项目需要进行自定义配置 ./configure --prefix=/usr/local/nginx --with-http_ssl_module #执行安装 make && make install Nginx配置参数中文详细说明 #定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; # #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; # #进程文件 pid /var/run/nginx.pid; # #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致.

nginx 中间件 服务器
阅读更多
linux系统常用基础命令
运维与DevOps
2021-11-15 0k

linux系统常用基础命令

目录操作 #当前目录 pwd # 创建目录 mkdir $HOME/testFolder #切换目录 cd $HOME/testFolder #切换到上一级目录 cd ../ # 移动 mv $HOME/testFolder /var/tmp #删除 rm -rf /var/tmp/testFolder #查看目录下的文件 # /etc 目录默认是 Unix 系统的软件配置文件存放位置 ls /etc #竖着显示查询结果 ls -l / #查看所有目录包括子目录(效果很酷) ls -R / 文件操作 #创建 touch ~/testFile #复制 cp ~/testFile ~/testNewFile #删除 rm ~/testFile #查找名称包含nginx的.conf文件 find / -name '*.conf' |grep nginx #解压: # tar.gz tar tgz tar xzvf FileName.tar.gz #压缩: tar czvf FileName.tar.gz DirName 查看文件 #一、从第3000行开始,显示1000行。即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 #二、显示1000行到3000行 cat filename| head -n 3000 | tail -n +1000 #----------------------------- #注意两种方法的顺序 # 分解: # tail -n 1000:显示最后1000行 # tail -n +1000:从1000行开始显示,显示1000行以后的 # head -n 1000:显示前面1000行 #-------------------------------- #三、用sed命令 sed -n '5,10p' filename 这样就可以只查看文件的第5行到第10行。 #过滤出 /etc/passwd 文件中包含 root 的记录 grep 'root' /etc/passwd #递归地过滤出 /var/log/ 目录中包含 linux 的记录 grep -r 'linux' /var/log/ #重定向 #可以使用 > 或 < 将命令的输出到一个文件中 echo 'Hello World' > ~/test.

阿里云 流水线 云效Flow 实现持续集成、持续部署(CI/CD)
运维与DevOps
2021-09-22 0k

阿里云 流水线 云效Flow 实现持续集成、持续部署(CI/CD)

新建流水线 选择对应语言,新建流水线 选择代码源 这个代码我托管在云效自带的Codeup 代码结构 设置代码源触发 开启代码源触发,并添加Webhook,Codeup会带动添加,如果是码云、github等其他托管平台,需要手动将下面webhook地址添加到代码托管平台对应的Webhook 配置构建 配置部署 新建主机,部署项目的服务器,如果是集群可以添加多台 如果账号内有阿里云ECS直接选择即可,否则选自有服务器,复制脚本在目标服务器执行 添加部署脚本和变量 脚本 $image变量是配置的镜像仓库地址,在上游构建时,会将构建好的docker镜像推送到这个地址 echo $image #停止正在运行的容器 docker stop apidemo #删除容器 docker rm apidemo #拉取容器 docker pull $image #运行新容器 docker run -d -p 1080:80 --name apidemo $image 完成自动构建、部署 提交代码触发流水线 云效2020文档地址:https://help.aliyun.com/product/150040.html 云效Flow地址:https://flow.aliyun.com/ 云效地址:https://devops.aliyun.com/

dotnet DevOps Linux
阅读更多
jenkins实现dotnet项目持续集成、持续部署(CI/CD)
运维与DevOps
2021-09-21 0k

jenkins实现dotnet项目持续集成、持续部署(CI/CD)

添加节点 这个jenkins是用docker安装的,我们要操作宿主机构建项目,不是这个容器,所以要把这个容器本身的节点停止,添加宿主机节点 断开jenkins容器节点 Master 也可以使用标签限制 新建节点 添加宿主机连接信息 添加宿主机认证用户 生成ssh公钥和私钥 执行:ssh-keygen 一路回车 进入.ssh文件夹: cd .ssh/ id_rsa:私钥 id_rsa.pub:公钥 把公钥写到authorized_keys文件: cat id_rsa.pub > authorized_keys 复制私钥到jenkins cat id_rsa 添加触发器 token可以区分项目 把地址复制到代码托管平台,设置触发 添加构建脚本 Jenkins构建完成会自动关闭进程及其子进程,造成nohup 无效,需要在命令内加参数BUILD_ID=DONTKILLME publish.sh: #!/bin/bash #如果8081被占用杀掉进程 kill -9 $(lsof -i:8081 -t) cd /home/web/web-demo/ #拉代码 git pull #发布代码到publish目录 dotnet publish -o publish cd publish/ #后台启用项目,端口8081 nohup dotnet WebDemo.dll --urls http://0.0.0.0:8081 & 构建记录

dotnet CentOS Linux
阅读更多
使用Docker在CentOS系统安装Jenkins
运维与DevOps
2021-09-20 0k

使用Docker在CentOS系统安装Jenkins

下载Jenkins镜像 docker pull jenkins/jenkins:lts #最新版 创建映射目录 容器映射此目录以持久化数据 mkdir /data/jenkins_home/ 修改用户组 docker容器中jenkins用户和用户组id为1000,需要修改后目录才能映射成功 chown -R 1000:1000 /data/jenkins_home 启动Jenkins容器 docker run -d --name jenkins -p 80:8080 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts; #备注: #-d 启动在后台 #--name 容器名字 #-p 端口映射(80:宿主主机端口,8080:容器内部端口) #-v 数据卷挂载映射(/data/jenkins_home:宿主主机目录,另外一个即是容器目录) #enkins/jenkins:lts Jenkins镜像(最新版) 访问Jenkins 地址解析的域名 http://jenkins.raikay.cn/ 根据提示的路径找到初始密码 #进入容器 docker exec -it jenkins bash #查看密码 cat /var/jenkins_home/secrets/initialAdminPassword 安装推荐的插件 创建管理员 安装已完成 扩展 设置时区 方法一:在【系统管理】-【脚本命令行】里运行 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai') 方法二: 通过docker改容器时区 docker run ... -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai 添加windows节点 保存后,返回节点,下载agent.jar到目标主机,并在目标主机执行这条命令 jenkins容器的50000 端口需要映射到宿主机

CentOS Linux jenkins
阅读更多
dotnet项目执行shell脚本实现简单的自动化部署
运维与DevOps
2021-09-18 0k

dotnet项目执行shell脚本实现简单的自动化部署

不要k8s、不要docker、不要Jenkins,只要一个部署脚本,只是一个小项目单台服务器,实现提交代码自动执行脚本,拉代码构建部署项目。 创建一个web api 项目,作为webhook,实现接收web请求后执行shell脚本 项目代码: using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Diagnostics; namespace ShellHandler.Controllers { [ApiController] [Route("[controller]")] public class HandlerController : ControllerBase { private readonly ILogger<HandlerController> _logger; public HandlerController(ILogger<HandlerController> logger) { _logger = logger; } [HttpPost] public string Execute(string fileName) { try { var processStartInfo = new ProcessStartInfo($"./{fileName}") { RedirectStandardOutput = true }; var process = Process.Start(processStartInfo); if (process == null) { Console.WriteLine("Can not run shell ."); } else { using (var sr = process.

dotnet CentOS Linux
阅读更多
 阿里云容器镜像服务提交代码自动构建Docker镜像教程
运维与DevOps
2020-12-15 0k

阿里云容器镜像服务提交代码自动构建Docker镜像教程

创建命名空间 创建仓库镜像 如果没有绑定账号,根据提示绑定一下账号,然后选择你的项目即可 镜像仓库–在对应的镜像 点击 【管理】 添加构建规则 这个镜像版本号建议 latest 在构建的时默认是latest 比如 # 默认 docker run -p 8000:80 --name mynginx -d nginx # 指定镜像版本 docker run -p 8000:80 --name mynginx -d nginx:1 现在每次提交代码到master会自动触发构建,也可以手动 立即构建

dotnet docker 阿里云
阅读更多
使用BaGet搭建自己的Nuget服务器
运维与DevOps
2020-05-17 0k

使用BaGet搭建自己的Nuget服务器

一、下载部署BaGet BaGet下载地址:https://github.com/loic-sharma/BaGet 可以自己编译,也可以下载作者提供的Release版本 二、下载安装Nuget Nuget.exe 下载地址:https://dist.nuget.org/win-x86-commandline/latest/nuget.exe Nuget安装后还需要配置环境变量 三、打包Nuget 在项目.csproj目录中打开cmd 或者powershell 并执行:nuget spec 用文本编辑器将上述命令执行完成的.nuspec 文件进行编辑 <?xml version="1.0"?> <package > <metadata> <id>Dongteng</id> <version>1.0.0</version> <title>ceshiceshi</title> <authors>Dongteng</authors> <owners>$author$</owners> <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl> <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl> <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>dongteng test</description> <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> <copyright>Copyright 2019</copyright> <tags>Tag1 Tag2</tags> </metadata> </package> 根据实际的需求修改,一般修改id、version、authors、`description等 修改完以上信息后执行命令:nuget pack,进行打包.正常结果如下 也可以使用bat脚本执行 nuget-publish.cmd : @echo off echo *******************clean nupkg******************* del /S *.nupkg del /S *.nuspec echo *******************building******************* dotnet build echo *******************pack nupkg******************* dotnet pack echo *******************publish nupkg******************* dotnet nuget push **/*.

NuGet BaGet 包管理
阅读更多
使用docker安装部署gitlab实例
运维与DevOps
2020-04-08 0k

使用docker安装部署gitlab实例

安装Gitlab 1、拉取镜像 # gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本 docker pull gitlab/gitlab-ce 2、创建映射目录 mkdir -p /home/gitlab/config #创建config目录 mkdir -p /home/gitlab/logs #创建logs目录 mkdir -p /home/gitlab/data #创建data目录 3、运行镜像 强烈建议80端口不要映射其他端口, http clone 那里生成的地址不带映射端口 docker run -d -p 443:443 -p 80:80 -p 222:22 \ --name gitlab --restart always \ -v /home/gitlab/config:/etc/gitlab \ -v /home/gitlab/logs:/var/log/gitlab \ -v /home/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce 参数说明: 参数名称 简写 参数说明 detach d 后台运行 hostname 指定主机地址,如果有域名可以指向域名 publish p 将容器内部端口向外映射,左边代表宿主机的端口,右边代表容器端口 name 容器名称 restart always 总是重启 volume v 将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录 4、配置

gitlab docker 代码托管
阅读更多