Linux 服务器搭建配置,开发效率一飞冲天 - Centos 篇

大家好,我是比特桃。最近白嫖了一台 Centos 云服务器,用来做日常开发,特此记录一下搭建配置的过程。

我之前有篇文章是基于 Ubuntu 的:Linux 服务器搭建配置,开发效率一飞冲天 - Ubuntu 篇

如同个人电脑一样,每个人都有各自的喜好及需求。我个人用的所有终端,都遵循大道至简的基本思想。其含义就是:软件能不多装就不多装,能简化就尽量简化。一切原生化,只在乎让它干活的专注性,不希望有太多花里胡哨的东西。

一、安全加固

行走江湖之前,必须把防护工作做好。要不然很容易被人攻击,到时候备份迁移得不偿失。我们先更新一下系统:

bash 复制代码
sudo yum clean all
sudo yum update -y
sudo reboot

所有人都知道 Linux 服务器的 ssh 默认端口是 22,超级管理员账号是 root。所以我们先把这些默认值的给改了,并且不允许密码登录,只通过秘钥认证:

bash 复制代码
yum list installed | grep openssh-server
// 如果没有安装
yum install openssh-server
vim /etc/ssh/sshd_config

将相关配置改成如下所示:

bash 复制代码
Port 666
PasswordAuthentication no
UseDNS no
PubkeyAuthentication yes

在让配置生效之前,我们现将手头的这台电脑的公钥给传上去。(不然待会自己都没法访问了,别问我怎么知道的。)

bash 复制代码
vim ~/.ssh/authorized_keys

创建开机自启,并重启将配置生效。

bash 复制代码
systemctl enable sshd.service
systemctl restart sshd

除此之外,云服务器还需要在云厂商防火墙的基础上,再使用系统自带的防火墙做二道防护。Centos 自带的是 Firewall,Ubuntu自带的是 ufw。

bash 复制代码
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

二、原生软件

我们将常用且不会随意切换变动的软件,通过原生安装。

bash 复制代码
// Java
yum -y install java-11-openjdk

// Maven
yum -y install maven

// 切换默认 Java 版本
update-alternatives --config java

// Node
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
yum -y install nodejs

// Nginx
sudo yum -y install nginx
sudo systemctl enable nginx
sudo service nginx start # 启动 nginx 服务
sudo service nginx stop # 停止 nginx 服务
sudo service nginx restart # 重启 nginx 服务
sudo service nginx reload # 重新加载配置

其实这些软件也完全可以通过容器安装,但我个人需求是通过这台服务器的 Gitlab Runner 实现最基本的自动化部署,所以需要这些软件原生化。

bash 复制代码
sudo yum install gitlab-runner

Gitlab Runner 可以实现注册到 Gitlab 上,通过脚本实现自动部署应用到服务器上。比如我可以将这台服务器上的 Runner,监听我 Gitlab 中某一个分支,一旦更新代码即可自动在这台服务器上实现更新部署。关于如何实现服务器自动化部署,可以参考我这篇文章:基于Gitlab Runner 快速实现 Gitlab 自动部署

三、容器软件

下面我们安装容器的基石 Docker,可直接参考官网

bash 复制代码
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 默认的存储路径:

bash 复制代码
// 将原目录复制到想要切换的位置
cp -a /var/lib/docker /data/docker/
// 备份
mv -u /var/lib/docker /var/lib/docker.bak
// 关闭 Docker
sudo systemctl stop docker
// 创建软连接
sudo ln -fs /store/software/docker /var/lib/docker
// 重启生效
sudo systemctl start docker
# or
sudo service docker start

然后就可以开心的部署容器了,这块其实大家根据自身需求来就行,常见的 Docker 命令可以参考我这篇文章:Docker实用命令手册

下面是我这次 Centos 需要用到的容器:

Gitlab,可参考官网

bash 复制代码
// 设置 Gitlab 容器映射本机路径
export GITLAB_HOME=/data/software/gitlab
sudo docker run --detach \
  --hostname baidu.com \
  --publish 8001:8001 --publish 8003:80 --publish 8002: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密码执行下面命令查看。

bash 复制代码
docker exec -it 容器名字或容器ID grep 'Password:' /etc/gitlab/initial_root_password

然后进入容器,配置 https 证书、邮件服务、功能配置等。

bash 复制代码
docker exec -it gitlab /bin/bash

编辑/etc/gitlab/gitlab.rb文件,还记得我们映射的 https 和 ssh 端口嘛,就是在这里修改成我们需要的 8001、8002,这样用户在网页上直接复制的时候也是这俩地址。Gitlab 的所有配置都通过这个文件,其它文件不用动。

bash 复制代码
// 将gitlab.rb配置文件生效,如果有错误可看到非常明确的日志进行修改
gitlab gitlab-ctl reconfigure
// 重启 gitlab
gitlab gitlab-ctl restart
// 进入控制台,测试邮件服务是否可用
gitlab-rails console
Notify.test_email('收件人邮箱', 'title', 'body').deliver_now

MongoDB:

bash 复制代码
docker run -d --name mongo --restart=always -p 8016:27017\
      -e MONGO_INITDB_ROOT_USERNAME=admin \
      -e MONGO_INITDB_ROOT_PASSWORD=123456 \
      mongo --auth

禅道:

bash 复制代码
 docker run -it \
    -v /data/software/zentao:/data \
    -p 8018:80 \
    -e MYSQL_INTERNAL=false \
    -e ZT_MYSQL_HOST=172.18.56.66 \
    -e ZT_MYSQL_PORT=8004 \
    -e ZT_MYSQL_USER=root \
    -e ZT_MYSQL_PASSWORD=123456! \
    -e ZT_MYSQL_DB=zentao \
    -e PHP_MAX_EXECUTION_TIME=300 \
    -e PHP_POST_MAX_SIZE=512M \
    -e PHP_UPLOAD_MAX_FILESIZE=512M \
    -d hub.zentao.net/app/zentao:18.5 

四、总结

这是我周末刚装的一台云服务器的记录文章,如果对你有帮助的话,希望给我点个赞。有问题可以留言交流~

相关推荐
存储服务专家StorageExpert39 分钟前
墙裂推荐:console, CLI命令行和日志使用字体-Cascadia
运维·服务器·netapp存储·存储维护·emc存储
暗碳43 分钟前
华为麦芒5(安卓6)termux记录 使用ddns-go,alist
android·linux
靡樊1 小时前
Linux:基础IO
linux
菜鸟康1 小时前
Linux系统编程——理解系统内核中的信号捕获
linux·运维·服务器
张明奇-琦玉1 小时前
Boost之log日志使用
linux·服务器·算法
云计算DevOps-韩老师2 小时前
【网络云计算】2024第52周-每日【2024/12/26】小测-理论&实操-备份MySQL数据库并发送邮件-解析
linux·开发语言·网络·数据库·mysql·云计算·perl
MaoSource2 小时前
Debian 12.0安装nginx
服务器·nginx·debian
ac.char3 小时前
Ubuntu系统下 npm install -g tauri 报错问题处理
linux·ubuntu·npm
Channing Lewis3 小时前
salesforce Portal User Visibility and Site User Visibility
运维·服务器·salesforce
无名3873 小时前
Debian12 安装配置 ODBC for GaussDB
linux·运维·gaussdb