|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
Rocky Linux作为CentOS的替代品,自发布以来就受到了开发者和企业的广泛关注。它是一个社区支持的企业级操作系统,旨在与Red Hat Enterprise Linux (RHEL)保持二进制兼容。对于开发者而言,Rocky Linux提供了一个稳定、安全且功能丰富的平台,适合构建各种开发环境。
本指南将详细介绍如何在Rocky Linux上搭建一个完整的开发环境,从基础系统配置到高级开发工具链的集成,帮助开发者构建高效稳定的工作环境。无论您是系统管理员、后端开发人员、DevOps工程师还是全栈开发者,本指南都能为您提供实用的指导。
系统安装与基础配置
Rocky Linux安装过程
首先,我们需要从官方网站下载Rocky Linux的ISO镜像文件。Rocky Linux提供了多个版本,包括标准安装、最小安装等。对于开发环境,推荐使用标准安装,因为它包含了更多常用的工具和软件包。
安装步骤如下:
1. 创建启动媒体:使用工具如dd或Rufus将ISO镜像写入USB驱动器。dd if=Rocky-9-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress
2. 从启动媒体启动计算机,选择”Install Rocky Linux”选项。
3. 在安装界面中,选择语言、键盘布局等基本设置。
4. 配置分区方案。对于开发环境,推荐使用自定义分区,至少创建以下分区:/boot- 1GB/- 50GB/home- 剩余空间swap- 内存大小的2倍或8GB(取较大值)
5. /boot- 1GB
6. /- 50GB
7. /home- 剩余空间
8. swap- 内存大小的2倍或8GB(取较大值)
9. 设置网络和主机名。
10. 创建用户账户和设置root密码。
11. 开始安装过程,等待完成。
创建启动媒体:使用工具如dd或Rufus将ISO镜像写入USB驱动器。
- dd if=Rocky-9-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress
复制代码
从启动媒体启动计算机,选择”Install Rocky Linux”选项。
在安装界面中,选择语言、键盘布局等基本设置。
配置分区方案。对于开发环境,推荐使用自定义分区,至少创建以下分区:
• /boot- 1GB
• /- 50GB
• /home- 剩余空间
• swap- 内存大小的2倍或8GB(取较大值)
设置网络和主机名。
创建用户账户和设置root密码。
开始安装过程,等待完成。
系统更新与基本设置
安装完成后,首先进行系统更新,确保所有软件包都是最新的:
安装一些基本的工具和软件包:
- sudo dnf install -y wget curl git vim nano htop tree net-tools
复制代码
设置时区:
- sudo timedatectl set-timezone Asia/Shanghai
复制代码
启用EPEL仓库,以获取更多软件包:
- sudo dnf install -y epel-release
复制代码
用户账户与权限管理
为了安全起见,建议使用普通用户账户进行日常开发工作,只在需要时使用sudo获取管理员权限。
将用户添加到wheel组,以获取sudo权限:
- sudo usermod -aG wheel username
复制代码
配置sudo免密码(可选,不推荐在生产环境中使用):
- echo "username ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
复制代码
开发环境基础工具
终端与Shell配置
Rocky Linux默认使用Bash作为Shell,但开发者可能更喜欢功能更强大的Zsh。安装Zsh和Oh My Zsh:
- sudo dnf install -y zsh
- sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
复制代码
安装一些有用的Zsh插件:
- git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
- git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
复制代码
编辑~/.zshrc文件,添加插件:
- plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
复制代码
安装并配置tmux,一个终端复用工具:
创建基本的tmux配置文件~/.tmux.conf:
- # 设置前缀键为Ctrl+a
- unbind C-b
- set -g prefix C-a
- bind C-a send-prefix
- # 启用鼠标支持
- set -g mouse on
- # 设置状态栏
- set -g status-bg black
- set -g status-fg white
复制代码
文本编辑器与IDE
Vim是一个强大的文本编辑器,适合在终端中使用。安装Vim增强版:
- sudo dnf install -y vim-enhanced
复制代码
创建基本的Vim配置文件~/.vimrc:
- " 基本设置
- set number " 显示行号
- set syntax on " 语法高亮
- set tabstop=4 " 设置制表符宽度为4
- set shiftwidth=4 " 设置缩进宽度为4
- set expandtab " 将制表符转换为空格
- set autoindent " 自动缩进
- set smartindent " 智能缩进
- set showmatch " 显示匹配的括号
- set incsearch " 增量搜索
- set hlsearch " 高亮搜索结果
- set encoding=utf-8 " 使用UTF-8编码
- set fileencoding=utf-8
- " 安装插件管理器Vundle
- set nocompatible " be iMproved, required
- filetype off " required
- " 设置运行时路径,包括Vundle并初始化
- set rtp+=~/.vim/bundle/Vundle.vim
- call vundle#begin()
- " 让Vundle管理Vundle,必需
- Plugin 'VundleVim/Vundle.vim'
- " 在此添加其他插件
- Plugin 'tpope/vim-fugitive' " Git集成
- Plugin 'scrooloose/nerdtree' " 文件浏览器
- Plugin 'vim-airline/vim-airline' " 状态栏
- Plugin 'vim-airline/vim-airline-themes' " 状态栏主题
- Plugin 'sheerun/vim-polyglot' " 语法高亮集合
- Plugin 'jiangmiao/auto-pairs' " 自动配对括号
- call vundle#end() " 必需
- filetype plugin indent on " 必需
- " NERDTree快捷键
- map <C-n> :NERDTreeToggle<CR>
复制代码
安装Vundle和插件:
- git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
- vim +PluginInstall +qall
复制代码
Visual Studio Code是一个流行的跨平台IDE,适合各种开发任务。安装VS Code:
- sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
- echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo
- sudo dnf check-update
- sudo dnf install -y code
复制代码
安装一些常用的VS Code扩展:
- code --install-extension ms-python.python
- code --install-extension ms-vscode.cpptools
- code --install-extension ms-vscode.vscode-typescript-next
- code --install-extension ms-vscode.vscode-json
- code --install-extension ms-azuretools.vscode-docker
- code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
- code --install-extension eamodio.gitlens
- code --install-extension ms-vscode-remote.remote-ssh
复制代码
版本控制工具(Git)
Git是最流行的版本控制系统,Rocky Linux默认已经安装了Git,但可能版本较旧。安装最新版本的Git:
配置Git:
- git config --global user.name "Your Name"
- git config --global user.email "your.email@example.com"
- git config --global core.editor vim
- git config --global color.ui true
复制代码
生成SSH密钥,用于与GitHub等代码托管平台交互:
- ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
- eval "$(ssh-agent -s)"
- ssh-add ~/.ssh/id_rsa
复制代码
将公钥添加到GitHub或其他代码托管平台:
安装一些有用的Git工具:
- sudo dnf install -y git-gui gitk tig
复制代码
编程语言环境搭建
Python开发环境
Rocky Linux默认安装了Python 3,但可能不是最新版本。安装Python 3和开发工具:
- sudo dnf install -y python3 python3-devel python3-pip
复制代码
安装pyenv,用于管理多个Python版本:
- curl https://pyenv.run | bash
- echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
- echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
- echo 'eval "$(pyenv init -)"' >> ~/.zshrc
- source ~/.zshrc
复制代码
安装特定版本的Python:
- pyenv install 3.10.6
- pyenv global 3.10.6
复制代码
创建虚拟环境:
- python3 -m venv myproject
- source myproject/bin/activate
复制代码
安装常用的Python包:
- pip install --upgrade pip
- pip install numpy pandas matplotlib scipy jupyter ipython
- pip install django flask fastapi
- pip install pytest black flake8 mypy
- pip install requests beautifulsoup4 selenium
复制代码
安装Jupyter Lab:
- pip install jupyterlab
- jupyter lab --generate-config
- echo "c.ServerApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_lab_config.py
- echo "c.ServerApp.open_browser = False" >> ~/.jupyter/jupyter_lab_config.py
- echo "c.ServerApp.allow_root = True" >> ~/.jupyter/jupyter_lab_config.py
- echo "c.ServerApp.password = 'sha1:your_hashed_password'" >> ~/.jupyter/jupyter_lab_config.py
复制代码
Java开发环境
安装OpenJDK:
- sudo dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
- sudo dnf install -y java-11-openjdk java-11-openjdk-devel
- sudo dnf install -y java-17-openjdk java-17-openjdk-devel
复制代码
安装SDKMAN!,用于管理多个Java版本和相关工具:
- curl -s "https://get.sdkman.io" | bash
- source "$HOME/.sdkman/bin/sdkman-init.sh"
复制代码
使用SDKMAN!安装Java和其他工具:
- sdk install java 11.0.16-tem
- sdk install java 17.0.4-tem
- sdk install maven
- sdk install gradle
- sdk install springboot
复制代码
配置环境变量:
- echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.zshrc
- echo 'export MAVEN_HOME=$HOME/.sdkman/candidates/maven/current' >> ~/.zshrc
- echo 'export GRADLE_HOME=$HOME/.sdkman/candidates/gradle/current' >> ~/.zshrc
- echo 'export PATH=$MAVEN_HOME/bin:$GRADLE_HOME/bin:$PATH' >> ~/.zshrc
- source ~/.zshrc
复制代码
安装IntelliJ IDEA:
- sudo dnf install -y intelij-idea-community
复制代码
C/C++开发环境
安装C/C++编译器和开发工具:
- sudo dnf groupinstall -y "Development Tools"
- sudo dnf install -y gcc-c++ cmake clang clang-tools-extra
复制代码
安装调试工具:
- sudo dnf install -y gdb valgrind
复制代码
安装构建工具:
- sudo dnf install -y make automake autoconf
复制代码
安装包管理器Conan:
- pip install conan
- conan profile detect --force
复制代码
示例CMake项目:
创建项目目录结构:
- mkdir myproject
- cd myproject
- mkdir src include build
复制代码
创建CMakeLists.txt文件:
- cmake_minimum_required(VERSION 3.10)
- project(MyProject)
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- include_directories(include)
- add_executable(myapp src/main.cpp)
复制代码
创建include/myapp.hpp文件:
- #ifndef MYAPP_HPP
- #define MYAPP_HPP
- #include <iostream>
- #include <string>
- void greet(const std::string& name);
- #endif // MYAPP_HPP
复制代码
创建src/main.cpp文件:
- #include "myapp.hpp"
- void greet(const std::string& name) {
- std::cout << "Hello, " << name << "!" << std::endl;
- }
- int main() {
- greet("World");
- return 0;
- }
复制代码
构建项目:
- cd build
- cmake ..
- make
- ./myapp
复制代码
Node.js/JavaScript环境
安装Node Version Manager (nvm):
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- source ~/.zshrc
复制代码
安装Node.js:
- nvm install 16
- nvm install 18
- nvm use 18
复制代码
安装Yarn包管理器:
安装常用的全局包:
- npm install -g @vue/cli @angular/cli create-react-app express-generator typescript ts-node nodemon
复制代码
创建一个简单的Express应用:
- mkdir my-express-app
- cd my-express-app
- npm init -y
- npm install express
复制代码
创建index.js文件:
- const express = require('express');
- const app = express();
- const port = 3000;
- app.get('/', (req, res) => {
- res.send('Hello World!');
- });
- app.listen(port, () => {
- console.log(`App listening at http://localhost:${port}`);
- });
复制代码
运行应用:
Go语言环境
安装Go:
- sudo dnf install -y golang
复制代码
配置Go环境变量:
- echo 'export GOPATH=$HOME/go' >> ~/.zshrc
- echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.zshrc
- source ~/.zshrc
复制代码
安装Go工具链:
- go install golang.org/x/tools/cmd/goimports@latest
- go install golang.org/x/tools/cmd/godoc@latest
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
复制代码
创建一个简单的Go应用:
- mkdir my-go-app
- cd my-go-app
- go mod init my-go-app
复制代码
创建main.go文件:
- package main
- import (
- "fmt"
- "net/http"
- )
- func handler(w http.ResponseWriter, r *http.Request) {
- fmt.Fprintf(w, "Hello, World!")
- }
- func main() {
- http.HandleFunc("/", handler)
- http.ListenAndServe(":8080", nil)
- }
复制代码
运行应用:
Ruby环境
安装Ruby和RubyGems:
- sudo dnf install -y ruby ruby-devel
复制代码
安装Ruby版本管理器RVM:
- gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
- curl -sSL https://get.rvm.io | bash -s stable
- source ~/.rvm/scripts/rvm
复制代码
安装特定版本的Ruby:
- rvm install 3.1.2
- rvm use 3.1.2 --default
复制代码
安装Bundler和Rails:
- gem install bundler rails
复制代码
创建一个简单的Rails应用:
- rails new my-rails-app
- cd my-rails-app
- rails server
复制代码
PHP环境
安装PHP和常用扩展:
- sudo dnf install -y php php-cli php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json
复制代码
安装Composer:
- curl -sS https://getcomposer.org/installer | php
- sudo mv composer.phar /usr/local/bin/composer
复制代码
安装Laravel:
- composer global require laravel/installer
- echo 'export PATH=$PATH:$HOME/.config/composer/vendor/bin' >> ~/.zshrc
- source ~/.zshrc
复制代码
创建一个Laravel应用:
- laravel new my-laravel-app
- cd my-laravel-app
- php artisan serve
复制代码
容器化与虚拟化
Docker安装与配置
安装Docker:
- sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- sudo dnf install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker
- sudo systemctl enable docker
复制代码
将用户添加到docker组,以避免使用sudo:
- sudo usermod -aG docker $USER
- newgrp docker
复制代码
安装Docker Compose:
- sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
复制代码
创建一个简单的Docker应用:
创建Dockerfile:
- FROM python:3.9-slim
- WORKDIR /app
- COPY requirements.txt .
- RUN pip install --no-cache-dir -r requirements.txt
- COPY . .
- CMD ["python", "app.py"]
复制代码
创建requirements.txt:
创建app.py:
- from flask import Flask
- app = Flask(__name__)
- @app.route('/')
- def hello():
- return 'Hello from Docker!'
- if __name__ == '__main__':
- app.run(host='0.0.0.0', port=5000)
复制代码
构建并运行Docker容器:
- docker build -t my-flask-app .
- docker run -p 5000:5000 my-flask-app
复制代码
Kubernetes本地集群
安装Minikube,用于在本地运行Kubernetes集群:
- curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
- sudo install minikube-linux-amd64 /usr/local/bin/minikube
复制代码
安装kubectl:
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
复制代码
启动Minikube集群:
- minikube start --driver=docker
复制代码
部署一个简单的Nginx应用:
- kubectl create deployment nginx --image=nginx
- kubectl expose deployment nginx --port=80 --type=NodePort
- minikube service nginx
复制代码
虚拟机管理
安装KVM和libvirt:
- sudo dnf install -y @virtualization
- sudo systemctl start libvirtd
- sudo systemctl enable libvirtd
- sudo usermod -aG libvirt $(whoami)
复制代码
安装virt-manager,一个图形化的虚拟机管理工具:
- sudo dnf install -y virt-manager
复制代码
安装Vagrant,用于管理虚拟机:
- sudo dnf install -y vagrant
复制代码
创建一个Vagrantfile:
- Vagrant.configure("2") do |config|
- config.vm.box = "rockylinux/9"
- config.vm.network "private_network", ip: "192.168.33.10"
- config.vm.provider "virtualbox" do |vb|
- vb.memory = "2048"
- vb.cpus = "2"
- end
- end
复制代码
启动虚拟机:
数据库环境
MySQL/MariaDB
安装MariaDB(MySQL的分支):
- sudo dnf install -y mariadb-server mariadb
- sudo systemctl start mariadb
- sudo systemctl enable mariadb
复制代码
安全安装:
- sudo mysql_secure_installation
复制代码
创建数据库和用户:
- CREATE DATABASE mydb;
- CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
- GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
- FLUSH PRIVILEGES;
复制代码
PostgreSQL
安装PostgreSQL:
- sudo dnf install -y postgresql-server postgresql-contrib
- sudo postgresql-setup --initdb
- sudo systemctl start postgresql
- sudo systemctl enable postgresql
复制代码
创建数据库和用户:
- sudo -u postgres createdb mydb
- sudo -u postgres createuser -s myuser
- sudo -u postgres psql -c "ALTER USER myuser PASSWORD 'mypassword';"
复制代码
MongoDB
安装MongoDB:
- sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo << EOF
- [mongodb-org-6.0]
- name=MongoDB Repository
- baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/6.0/x86_64/
- gpgcheck=1
- enabled=1
- gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
- EOF
- sudo dnf install -y mongodb-org
- sudo systemctl start mongod
- sudo systemctl enable mongod
复制代码
创建用户和数据库:
- use admin
- db.createUser({
- user: "myuser",
- pwd: "mypassword",
- roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
- })
- use mydb
- db.createUser({
- user: "myuser",
- pwd: "mypassword",
- roles: [{ role: "readWrite", db: "mydb" }]
- })
复制代码
Redis
安装Redis:
- sudo dnf install -y redis
- sudo systemctl start redis
- sudo systemctl enable redis
复制代码
配置Redis密码认证:
编辑/etc/redis.conf文件,取消注释并修改:
重启Redis:
- sudo systemctl restart redis
复制代码
Web服务器与反向代理
Nginx
安装Nginx:
- sudo dnf install -y nginx
- sudo systemctl start nginx
- sudo systemctl enable nginx
复制代码
配置Nginx作为反向代理:
创建配置文件/etc/nginx/conf.d/myapp.conf:
- server {
- listen 80;
- server_name myapp.example.com;
- location / {
- proxy_pass http://localhost:5000;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
复制代码
测试并重新加载Nginx配置:
- sudo nginx -t
- sudo systemctl reload nginx
复制代码
Apache
安装Apache:
- sudo dnf install -y httpd
- sudo systemctl start httpd
- sudo systemctl enable httpd
复制代码
配置Apache作为反向代理:
创建配置文件/etc/httpd/conf.d/myapp.conf:
- <VirtualHost *:80>
- ServerName myapp.example.com
- ProxyPreserveHost On
- ProxyPass / http://localhost:5000/
- ProxyPassReverse / http://localhost:5000/
- </VirtualHost>
复制代码
测试并重新加载Apache配置:
- sudo apachectl configtest
- sudo systemctl reload httpd
复制代码
DevOps工具链
CI/CD工具
安装Jenkins:
- sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- sudo dnf install -y jenkins java-11-openjdk
- sudo systemctl start jenkins
- sudo systemctl enable jenkins
复制代码
安装GitLab Runner:
- curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
- sudo dnf install -y gitlab-runner
- sudo gitlab-runner start
复制代码
注册GitLab Runner:
- sudo gitlab-runner register
复制代码
监控与日志
安装Prometheus:
- sudo useradd --no-create-home --shell /bin/false prometheus
- sudo useradd --no-create-home --shell /bin/false node_exporter
- sudo mkdir /etc/prometheus
- sudo mkdir /var/lib/prometheus
- sudo chown prometheus:prometheus /etc/prometheus
- sudo chown prometheus:prometheus /var/lib/prometheus
- wget https://github.com/prometheus/prometheus/releases/download/v2.36.2/prometheus-2.36.2.linux-amd64.tar.gz
- tar xvf prometheus-2.36.2.linux-amd64.tar.gz
- sudo cp prometheus-2.36.2.linux-amd64/prometheus /usr/local/bin/
- sudo cp prometheus-2.36.2.linux-amd64/promtool /usr/local/bin/
- sudo chown prometheus:prometheus /usr/local/bin/prometheus
- sudo chown prometheus:prometheus /usr/local/bin/promtool
- sudo cp -r prometheus-2.36.2.linux-amd64/consoles /etc/prometheus
- sudo cp -r prometheus-2.36.2.linux-amd64/console_libraries /etc/prometheus
- sudo chown -R prometheus:prometheus /etc/prometheus/consoles
- sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
复制代码
创建Prometheus配置文件/etc/prometheus/prometheus.yml:
- global:
- scrape_interval: 15s
- scrape_configs:
- - job_name: 'prometheus'
- scrape_interval: 5s
- static_configs:
- - targets: ['localhost:9090']
复制代码
创建Prometheus服务文件/etc/systemd/system/prometheus.service:
- [Unit]
- Description=Prometheus
- Wants=network-online.target
- After=network-online.target
- [Service]
- User=prometheus
- Group=prometheus
- Type=simple
- ExecStart=/usr/local/bin/prometheus \
- --config.file /etc/prometheus/prometheus.yml \
- --storage.tsdb.path /var/lib/prometheus/ \
- --web.console.templates=/etc/prometheus/consoles \
- --web.console.libraries=/etc/prometheus/console_libraries
- [Install]
- WantedBy=multi-user.target
复制代码
启动Prometheus:
- sudo systemctl start prometheus
- sudo systemctl enable prometheus
复制代码
安装Grafana:
- sudo wget https://dl.grafana.com/oss/release/grafana-9.1.6-1.x86_64.rpm
- sudo dnf install -y grafana-9.1.6-1.x86_64.rpm
- sudo systemctl start grafana-server
- sudo systemctl enable grafana-server
复制代码
安装Elasticsearch:
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- sudo tee /etc/yum.repos.d/elasticsearch.repo << EOF
- [elasticsearch-7.x]
- name=Elasticsearch repository for 7.x packages
- baseurl=https://artifacts.elastic.co/packages/7.x/yum
- gpgcheck=1
- gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
- enabled=1
- autorefresh=1
- type=rpm-md
- EOF
- sudo dnf install -y elasticsearch
- sudo systemctl start elasticsearch
- sudo systemctl enable elasticsearch
复制代码
安装Logstash:
- sudo dnf install -y logstash
- sudo systemctl start logstash
- sudo systemctl enable logstash
复制代码
安装Kibana:
- sudo dnf install -y kibana
- sudo systemctl start kibana
- sudo systemctl enable kibana
复制代码
配置管理工具
安装Ansible:
- sudo dnf install -y ansible
复制代码
创建一个简单的Ansible playbookplaybook.yml:
- ---
- - hosts: localhost
- become: yes
- tasks:
- - name: Install Nginx
- dnf:
- name: nginx
- state: present
-
- - name: Start Nginx
- service:
- name: nginx
- state: started
- enabled: yes
复制代码
运行playbook:
- ansible-playbook playbook.yml
复制代码
安装Terraform:
- sudo dnf install -y dnf-plugins-core
- sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
- sudo dnf install -y terraform
复制代码
创建一个简单的Terraform配置main.tf:
- terraform {
- required_providers {
- docker = {
- source = "kreuzwerker/docker"
- version = "~> 2.13.0"
- }
- }
- }
- provider "docker" {}
- resource "docker_image" "nginx" {
- name = "nginx:latest"
- keep_locally = false
- }
- resource "docker_container" "nginx" {
- image = docker_image.nginx.image_id
- name = "tutorial"
- ports {
- internal = 80
- external = 8000
- }
- }
复制代码
初始化并应用Terraform配置:
- terraform init
- terraform apply
复制代码
性能优化与安全加固
系统性能优化
调整内核参数:
编辑/etc/sysctl.conf文件:
- # 增加文件描述符限制
- fs.file-max = 100000
- # 增加网络缓冲区大小
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- # 优化TCP连接
- net.ipv4.tcp_fin_timeout = 30
- net.ipv4.tcp_keepalive_time = 1200
- net.ipv4.tcp_max_syn_backlog = 8192
- net.ipv4.tcp_max_tw_buckets = 5000
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_syncookies = 1
- # 禁用IPv6
- net.ipv6.conf.all.disable_ipv6 = 1
- net.ipv6.conf.default.disable_ipv6 = 1
复制代码
应用内核参数:
调整文件描述符限制:
编辑/etc/security/limits.conf文件:
- * soft nofile 100000
- * hard nofile 100000
复制代码
安全设置
配置防火墙:
- sudo systemctl start firewalld
- sudo systemctl enable firewalld
- sudo firewall-cmd --permanent --add-service=ssh
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
复制代码
安装并配置Fail2Ban:
- sudo dnf install -y fail2ban
- sudo systemctl start fail2ban
- sudo systemctl enable fail2ban
复制代码
创建Fail2Ban配置文件/etc/fail2ban/jail.local:
- [DEFAULT]
- bantime = 1h
- findtime = 10m
- maxretry = 3
- [sshd]
- enabled = true
- port = ssh
- filter = sshd
- logpath = /var/log/secure
- maxretry = 3
复制代码
重启Fail2Ban:
- sudo systemctl restart fail2ban
复制代码
安装并配置SELinux:
- sudo dnf install -y setroubleshoot-server
- sudo setenforce 1
- sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
复制代码
高级开发工具集成
API开发与测试工具
安装Postman:
- sudo dnf install -y snapd
- sudo systemctl enable --now snapd.socket
- sudo ln -s /var/lib/snapd/snap /snap
- sudo snap install postman
复制代码
安装Insomnia:
- sudo dnf install -y insomnia
复制代码
文档工具
安装MkDocs:
创建一个MkDocs项目:
- mkdocs new my-project
- cd my-project
- mkdocs serve
复制代码
安装Sphinx:
创建一个Sphinx项目:
- mkdir my-docs
- cd my-docs
- sphinx-quickstart
复制代码
项目管理工具
安装Taiga:
- sudo dnf install -y git python3 python3-devel python3-pip libxml2-devel libxslt-devel zlib-devel openssl-devel
- sudo pip install -U taiga-back
- sudo pip install circus
复制代码
安装Redmine:
- sudo dnf install -y ruby ruby-devel rubygems mysql-devel httpd httpd-devel
- sudo gem install redmine
复制代码
常见问题与解决方案
问题1:Docker容器无法访问外部网络
解决方案:
- sudo firewall-cmd --permanent --zone=trusted --change-interface=docker0
- sudo firewall-cmd --reload
复制代码
问题2:Node.js应用端口被占用
解决方案:
- sudo lsof -i :3000
- sudo kill -9 <PID>
复制代码
问题3:Python虚拟环境无法激活
解决方案:
- python3 -m venv --clear myenv
- source myenv/bin/activate
复制代码
问题4:Git提交时出现身份验证错误
解决方案:
- git config --global credential.helper store
- git pull
- # 输入用户名和密码
复制代码
问题5:Java应用内存不足
解决方案:
- export JAVA_OPTS="-Xms512m -Xmx1024m"
复制代码
总结与最佳实践
在Rocky Linux上搭建开发环境需要系统性的规划和实施。本指南涵盖了从基础系统配置到高级开发工具链的完整实践,帮助开发者构建高效稳定的工作环境。
最佳实践
1. 使用版本控制:始终使用Git等版本控制系统管理代码,并定期提交。
2. 自动化部署:使用CI/CD工具如Jenkins或GitLab CI自动化构建和部署流程。
3. 容器化应用:使用Docker容器化应用,确保环境一致性。
4. 监控与日志:实施全面的监控和日志记录,及时发现和解决问题。
5. 安全加固:定期更新系统,配置防火墙,使用SELinux增强安全性。
6. 资源管理:合理分配系统资源,避免资源争用和浪费。
7. 文档化:为项目创建详细的文档,便于团队协作和知识传承。
使用版本控制:始终使用Git等版本控制系统管理代码,并定期提交。
自动化部署:使用CI/CD工具如Jenkins或GitLab CI自动化构建和部署流程。
容器化应用:使用Docker容器化应用,确保环境一致性。
监控与日志:实施全面的监控和日志记录,及时发现和解决问题。
安全加固:定期更新系统,配置防火墙,使用SELinux增强安全性。
资源管理:合理分配系统资源,避免资源争用和浪费。
文档化:为项目创建详细的文档,便于团队协作和知识传承。
通过遵循这些最佳实践,开发者可以在Rocky Linux上构建一个高效、稳定且安全的开发环境,提高开发效率和代码质量。 |
|