记一次折腾过程(一)
程序员文章站
2022-04-28 18:32:40
...
用自己的服务器、域名,搭建私有gitlab,并开发一个简单博客系统。
服务器
购买阿里云的服务器(2G内存,SSD硬盘,1年,其他最低配),花了1k+。完全最低配置跑不懂gitlab,而且我还要在这台服务器跑自己开发的博客系统。
操作系统:Ubuntu 14.04.4,然后升级到16.04.1
简单设置
简单设置服务器,方便开发和管理。
创建新用户
创建新用户,并分配管理员权限
- 用root用户登录服务器
# 本地电脑
ssh [email protected]
- 创建新用户
useradd -d /home/daifee -s /bin/bash -m daifee
- 设置密码
passwd daifee
- 为daifee配置sudo权限
# 将daifee添加到sudo用户组可以实现
usermod -a -G sudo daifee
下面都以daifee用户身份进行操作
SSH设置
- 安装openssh-server
sudo apt-get install openssh-server
- 创建**
# 根据提示设置口令(passphrase)
ssh-******
- 修改sshd_config
# 备份
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# 修改配置,以便达到下面目的(为了安全)
# Port 22222 【修改端口】
# PermitRootLogin no 【不允许root用户登录】
# PermitEmptyPasswords no 【不能没有密码】
# PasswordAuthentication no 【不能用密码登录】
sudo vim /etc/ssh/sshd_config
- 重启sshd
sudo systemctl restart sshd.service
- 将本地电脑的公钥保存到服务器,并登录
# 本地电脑
ssh-copy-id [email protected]
安装nginx
使用nginx系统反向代理博客系统。gitlab也使用这个nginx代替自带的nginx。
apt-get install nginx
设置域名
前年在易名中国买了daifee.com这个域名,一直没有时间(能力)折腾她。竟然阿里云也有域名服务,就把域名从易名中国转到阿里云,统一平台管理。域名转移过程需要点折腾,而且需要等几个工作日。
使用阿里云的域名解析,创建数个二级域名解析到我的IP:
- gitlab.daifee.com 搭建的私有gitlab服务
- blog.daifee.com 博客系统(生产环境)
- test-blog.daifee.com 博客系统(测试环境)
安装gitlab
有3个版本:
- CE 社区版
- CC 企业版
- OM 社区集成版(官方推荐&我的选择)
注意:由于网络原因,gitlab官方源根本下载不了,必须使用清华大学开源软件镜像站
安装步骤&命令:
- 添加Gitlab的GPG公钥
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
- 将gitlab安装包源添加到sources.list
# /etc/apt/sources.list 或 /etc/apt/sources.list.d/gitlab-ce.list
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
- 安装
sudo apt-get update
sudo apt-get install gitlab-ce
配置gitlab
使用gitlab外部nginx
- 看一遍这章节的官方文档
- 根据本教程安装ruby, passenger, nginx-extras等
- 根据官方文档修改配置文件(
/etx/gitlab/gitlab.rb
) - 在
/etc/nginx/sites-avariables/
增加服务配置文件gitlab.daifee.com
,参考官方文档配置 - 将
/etc/nginx/sites-avariables/gitlab.daifee.com
软链接到/etc/nginx/sites-enable/gitlab.daifee.com
- 根据
/etc/nginx/sites-avariables/gitlab.daifee.com
创建log文件 - 重启gitlab-ctl服务(
sudo gitlab-ctl reconfigure
) - 重启nginx服务器(
systemctl restart nginx.service
)
注意:需要将gitlab-www用户加入nginx用户组(通常是www-data)
配置https
- 使用Let’s Encrypt证书服务商
- 使用certbot客户端程序创建证书
提醒,通常.crt和.key文件名对应的.pem文件名:
- gitlab.daifee.com.crt -> ../../letsencrypt/archive/gitlab.daifee.com/fullchain1.pem
- gitlab.daifee.com.key -> ../../letsencrypt/archive/gitlab.daifee.com/privkey1.pem
示例:
- 为blog.daifee.com创建证书:
# 安装Let's Encrypt客户端(Ubuntu 14.0.4的客户端是letsencrypt,其他版本的不是这个)
sudo apt-get install letsencrypt
# 创建证书,保存在`/etc/letsencrypt/`子目录下
letsencrypt certonly -d blog.daifee.com
- 过期前自动更新证书(使用systemd程序)
sudo vim /etc/systemd/system/letsencrypt.service
[Unit]
Description=Let's Encrypt renewal
[Service]
Type=oneshot
ExecStart=/usr/bin/letsencrypt renew
ExecStartPost=/bin/systemctl reload nginx.service
sudo vim /etc/systemd/system/letsencrypt.timer
[Unit]
Description=Monthly renewal of Let's Encrypt's certificates
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
启动服务,并开启timer
sudo systemctl enable letsencrypt.timer
sudo systemctl start letsencrypt.timer
- 用服务器配置https可视化工具创建“参考配置”,然后再修改服务器配置。
- 还要注意这个bug需要在gitlab.rb设置
unicorn['enable']=false
参考
- 设置服务器 http://www.ruanyifeng.com/blog/2014/03/server_setup.html
- gitlab文档 https://docs.gitlab.com/omnibus/README.html
- gitlab安装包源 https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/
- 为gitlab配置已存在的nginx http://*.com/questions/31762841/how-to-serve-other-vhosts-next-to-gitlab-omnibus-server-full-step-by-step-solu
- Let’s Encrypt证书https://ksmx.me/letsencrypt-ssl-https/
- 服务器配置https可视化工具https://mozilla.github.io/server-side-tls/ssl-config-generator/
- unicor['enable']的bughttps://gitlab.com/gitlab-org/gitlab-ce/issues/2878#note_2238415