Linux 服务器搭建配置,开发效率一飞冲天 - Centos 篇
大家好,我是比特桃。最近白嫖了一台 Centos 云服务器,用来做日常开发,特此记录一下搭建配置的过程。
我之前有篇文章是基于 Ubuntu 的:Linux 服务器搭建配置,开发效率一飞冲天 - Ubuntu 篇
如同个人电脑一样,每个人都有各自的喜好及需求。我个人用的所有终端,都遵循大道至简的基本思想。其含义就是:软件能不多装就不多装,能简化就尽量简化。一切原生化,只在乎让它干活的专注性,不希望有太多花里胡哨的东西。
一、安全加固
行走江湖之前,必须把防护工作做好。要不然很容易被人攻击,到时候备份迁移得不偿失。我们先更新一下系统:
sudo yum clean all
sudo yum update -y
sudo reboot
所有人都知道 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 -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 实现最基本的自动化部署,所以需要这些软件原生化。
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
// 创建软连接
sudo ln -fs /store/software/docker /var/lib/docker
// 重启生效
sudo systemctl start docker
# or
sudo service docker start
然后就可以开心的部署容器了,这块其实大家根据自身需求来就行,常见的 Docker 命令可以参考我这篇文章:Docker实用命令手册。
下面是我这次 Centos 需要用到的容器:
Gitlab,可参考官网:
// 设置 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密码执行下面命令查看。
docker exec -it 容器名字或容器ID grep 'Password:' /etc/gitlab/initial_root_password
然后进入容器,配置 https 证书、邮件服务、功能配置等。
docker exec -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 -p 8016:27017\-e MONGO_INITDB_ROOT_USERNAME=admin \-e MONGO_INITDB_ROOT_PASSWORD=123456 \mongo --auth
禅道:
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
四、总结
这是我周末刚装的一台云服务器的记录文章,如果对你有帮助的话,希望给我点个赞。有问题可以留言交流~
相关文章:
Linux 服务器搭建配置,开发效率一飞冲天 - Centos 篇
大家好,我是比特桃。最近白嫖了一台 Centos 云服务器,用来做日常开发,特此记录一下搭建配置的过程。 我之前有篇文章是基于 Ubuntu 的:Linux 服务器搭建配置,开发效率一飞冲天 - Ubuntu 篇 如同个人电脑一样࿰…...
Day46|leetcode 139.单词拆分
leetcode 139.单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) 视频链接:动态规划之完全背包,你的背包如何装满?| LeetCode:139.单词拆分_哔哩哔哩_bilibili 题目概述 给你一个字符串 s 和一…...
深入理解高并发编程 - Thread 类的 stop () 和 interrupt ()
stop() stop() 方法被用于停止线程。然而,需要注意的是,stop() 方法已经被标记为已废弃(deprecated),并且不推荐使用。这是因为使用该方法可能导致不可预料的问题和数据不一致性,因此它被认为是不安全的。…...
C语言之三子棋游戏实现篇
目录 主函数test.c 菜单函数 选择实现 游戏函数 (函数调用) 打印棋盘数据 打印展示棋盘 玩家下棋 电脑下棋 判断输赢 循环 test.c总代码 头文件&函数声明game.h 头文件的包含 游戏符号声明 游戏函数声明 game.h总代码 游戏函数ga…...
jupyter notebook 插件nbextensions的安装
安装步骤: 1、打开 jupyter notebook,新建一个 python 文件; 2、 分别输入以下代码,然后运行,出现 warning 不影响使用,如果出现 errors,则说明下载有问题: !python -m pip install…...
Spring boot 集成单元测试
1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> 2. 3.编写测试类 package com.enterprise;import com.enterpr…...
基于C++的QT实现贪吃蛇小游戏
文章目录: 一:效果演示 二:实现思路 三:代码实现 widget.h widget.cpp main.cpp 一:效果演示 效果图◕‿◕✌✌✌ 代码下载 二:实现思路 通过按键控制蛇的移动,每吃一个商品蛇身就会加长…...
Spring Boot整合RabbitMQ之路由模式(Direct)
RabbitMQ中的路由模式(Direct模式)应该是在实际工作中运用的比较多的一种模式了,这个模式和发布与订阅模式的区别在于路由模式需要有一个routingKey,在配置上,交换机类型需要注入DirectExchange类型的交换机bean对象。…...
行式存储与列式存储
1.概述 数据处理大致可分为两大类,联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。 OLTP是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理,比如数据库记录的增、删…...
windows上sqlserver的ldf日志文件和数据mdf文件分别放到不同的磁盘
之前我的windows上已安装好了sqlserver2017,有一个名为TestDb的数据库。ldf文件和mdf文件都一起放在D:\Database目录下。现在需要把ldf日志文件到E盘的database目录下。 重要的事情先说三遍 先停止网关(例如nginx)并备份数据库 先停止网关&am…...
vue3+uni——watch监听props中的数据(组件参数接收与传递defineProps、defineEmits)
案例说明 A页面引用的子组件B A页面 <template><view>//引用组件<serviceOrder change"change" :list"list" :current"type"></serviceOrder></view> </template><script setup>import serviceOrd…...
mybatis与spring集成与spring aop集成pagehelper插件
Mybatis与Spring的集成 Mybatis是一款轻量级的ORM框架,而Spring是一个全栈式的框架,二者的结合可以让我们更加高效地进行数据持久化操作。 Mybatis与Spring的集成主要有两种方式:使用Spring的Mybatis支持和使用Mybatis的Spring支持。 使用…...
Mybatis基础
...
TypeScript-- 配置Typescript环境(1)ts 转js,tsc --watch 实时编译
文章目录 安装Typescript判断是否有运行权限编写第一Typescript文件手动编译Ts文件转Js文件实时编译 安装Typescript npm install -g typescript 判断是否有运行权限 命令行运行 tsc -v 遇到了权限问题 用管理员打开window自带的powershell 运行如下指令即可: Set-…...
Dockerfile快速搭建自己专属的LAMP环境,生成镜像lamp:v1.1,并推送到私有仓库
环境: CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下: (1)基于centos:6基础镜像; (2)指定作者信息; (3)安装httpd、mysql、mysql-server、php、ph…...
Lottery抽奖项目学习第二章第一节:环境、配置、规范
Lottery抽奖项目学习第二章第一节:环境、配置、规范 环境、配置、规范 下面以DDD架构和设计模式落地实战的方式,进行讲解和实现分布式抽奖系统的代码开发,那么这里会涉及到很多DDD的设计思路和设计模式应用,以及互联网大厂开发中…...
OpenCV之reshape函数
函数原型: /** brief Changes the shape and/or the number of channels of a 2D matrix without copying the data.The method makes a new matrix header for \*this elements. The new matrix may have a different sizeand/or different number of channels. A…...
【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制
【JavaEE】Spring事务(2) 文章目录 【JavaEE】Spring事务(2)1. Transactional 参数介绍1.1 value 和 transactionManager1.2 timeout1.3 readOnly1.4 后面四个1.5 isolation 与 propagation 2. Spring 事务隔离级别 - isolation2.…...
微信小程序canvas type=2d生成海报保存到相册、文字换行溢出显示...、文字删除线、分享面板
一、简介 做个简单的生成二维码海报分享,我做的时候也找简单的方法看能不能实现页面直接截图那种生成图片,原生小程序不支持,不多介绍下面有全部代码有注释、参数自行替换运行看看,还有需要优化的地方,有问题可以咨询…...
C++卷积神经网络
C卷积神经网络 #include"TP_NNW.h" #include<iostream> #pragma warning(disable:4996) using namespace std; using namespace mnist;float* SGD(Weight* W1, Weight& W5, Weight& Wo, float** X) {Vector2 ve(28, 28);float* temp new float[10];V…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
