大家好,我是比特桃。最近白嫖了一台 Centos 云服务器,用来做日常开发,特此记录一下搭建配置的过程。
我之前有篇文章是基于 Ubuntu 的:Linux 服务器搭建配置,开发效率一飞冲天 - Ubuntu 篇
如同个人电脑一样,每个人都有各自的喜好及需求。我个人用的所有终端,都遵循大道至简的基本思想。其含义就是:软件能不多装就不多装,能简化就尽量简化。一切原生化,只在乎让它干活的专注性,不希望有太多花里胡哨的东西。
一、安全加固
行走江湖之前,必须把防护工作做好。要不然很容易被人攻击,到时候备份迁移得不偿失。我们先更新一下系统:
sudo yum clean all
sudo yum update -ysudoreboot
所有人都知道 Linux 服务器的 ssh 默认端口是 22,超级管理员账号是 root。所以我们先把这些默认值的给改了,并且不允许密码登录,只通过秘钥认证:
yum list installed |grep openssh-server
// 如果没有安装
yum install openssh-server
vim /etc/ssh/sshd_config
将相关配置改成如下所示:
Port 666
PasswordAuthentication no
UseDNS no
PubkeyAuthentication yes
在让配置生效之前,我们现将手头的这台电脑的公钥给传上去。(不然待会自己都没法访问了,别问我怎么知道的。)
vim ~/.ssh/authorized_keys
创建开机自启,并重启将配置生效。
systemctl enable sshd.service
systemctl restart sshd
除此之外,云服务器还需要在云厂商防火墙的基础上,再使用系统自带的防火墙做二道防护。Centos 自带的是 Firewall,Ubuntu自带的是 ufw。
firewall-cmd --state
systemctl start firewalld.service
// 开机自启
systemctl enable firewalld.service
// 开放/取消 防火墙端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=80/tcp --permanent
// 查看目前防火墙规则
firewall-cmd --list-ports
// 载入防火墙配置
firewall-cmd --reload
systemctl restart firewalld.service
二、原生软件
我们将常用且不会随意切换变动的软件,通过原生安装。
// Java
yum -yinstall java-11-openjdk
// Maven
yum -yinstall maven
// 切换默认 Java 版本
update-alternatives --configjava
// Node
curl-fsSL https://rpm.nodesource.com/setup_16.x |sudobash -
yum -yinstall nodejs
// Nginx
sudo yum -yinstall nginx
sudo systemctl enable nginx
sudoservice nginx start # 启动 nginx 服务sudoservice nginx stop # 停止 nginx 服务sudoservice nginx restart # 重启 nginx 服务sudoservice nginx reload # 重新加载配置
其实这些软件也完全可以通过容器安装,但我个人需求是通过这台服务器的 Gitlab Runner 实现最基本的自动化部署,所以需要这些软件原生化。
sudo yum install gitlab-runner
Gitlab Runner 可以实现注册到 Gitlab 上,通过脚本实现自动部署应用到服务器上。比如我可以将这台服务器上的 Runner,监听我 Gitlab 中某一个分支,一旦更新代码即可自动在这台服务器上实现更新部署。关于如何实现服务器自动化部署,可以参考我这篇文章:基于Gitlab Runner 快速实现 Gitlab 自动部署
三、容器软件
下面我们安装容器的基石 Docker,可直接参考官网:
sudo yum install-y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
由于我这台机器是 VSP,大容量的磁盘我挂载到了
/data
目录下。其 Centos 系统自带的目录容量很小,Docker 默认将容器存储路径放到了
/var/lib/docker
。我们后面会有大量的容器使用,这会存在系统盘爆满的隐患。所以需要修改 Docker 默认的存储路径:
// 将原目录复制到想要切换的位置
cp-a /var/lib/docker /data/docker/
// 备份
mv-u /var/lib/docker /var/lib/docker.bak
// 关闭 Docker
sudo systemctl stop docker
// 创建软连接
sudoln-fs /store/software/docker /var/lib/docker
// 重启生效
sudo systemctl start docker# orsudoservicedocker start
然后就可以开心的部署容器了,这块其实大家根据自身需求来就行,常见的 Docker 命令可以参考我这篇文章:Docker实用命令手册。
下面是我这次 Centos 需要用到的容器:
Gitlab,可参考官网:
// 设置 Gitlab 容器映射本机路径
exportGITLAB_HOME=/data/software/gitlab
sudodocker run --detach\--hostname baidu.com \--publish8001:8001 --publish8003:80 --publish8002:8002 \--name gitlab \--restart always \--volume$GITLAB_HOME/config:/etc/gitlab \--volume$GITLAB_HOME/logs:/var/log/gitlab \--volume$GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest
这里说明一下这三个端口,8001是https,8003是80端口,8002是ssh端口。8003是我们刚启动容器后,进入调试用的,默认账号
root
密码执行下面命令查看。
dockerexec-it 容器名字或容器ID grep'Password:' /etc/gitlab/initial_root_password
然后进入容器,配置 https 证书、邮件服务、功能配置等。
dockerexec-it gitlab /bin/bash
编辑
/etc/gitlab/gitlab.rb
文件,还记得我们映射的 https 和 ssh 端口嘛,就是在这里修改成我们需要的 8001、8002,这样用户在网页上直接复制的时候也是这俩地址。Gitlab 的所有配置都通过这个文件,其它文件不用动。
// 将gitlab.rb配置文件生效,如果有错误可看到非常明确的日志进行修改
gitlab gitlab-ctl reconfigure
// 重启 gitlab
gitlab gitlab-ctl restart
// 进入控制台,测试邮件服务是否可用
gitlab-rails console
Notify.test_email('收件人邮箱', 'title', 'body').deliver_now
MongoDB:
docker run -d--name mongo --restart=always -p8016:27017\-eMONGO_INITDB_ROOT_USERNAME=admin \-eMONGO_INITDB_ROOT_PASSWORD=123456\
mongo --auth
禅道:
docker run -it\-v /data/software/zentao:/data \-p8018:80 \-eMYSQL_INTERNAL=false \-eZT_MYSQL_HOST=172.18.56.66 \-eZT_MYSQL_PORT=8004\-eZT_MYSQL_USER=root \-eZT_MYSQL_PASSWORD=123456!\-eZT_MYSQL_DB=zentao \-ePHP_MAX_EXECUTION_TIME=300\-ePHP_POST_MAX_SIZE=512M \-ePHP_UPLOAD_MAX_FILESIZE=512M \-d hub.zentao.net/app/zentao:18.5
四、总结
这是我周末刚装的一台云服务器的记录文章,如果对你有帮助的话,希望给我点个赞。有问题可以留言交流~
版权归原作者 比特桃 所有, 如有侵权,请联系我们删除。