|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Ubuntu MATE系统下开发者工具的完整配置指南:从基础环境搭建到高级开发工具链
引言
Ubuntu MATE是一个基于Ubuntu的优雅、轻量级的Linux发行版,它使用MATE桌面环境,提供了一个稳定、高效且用户友好的开发平台。本文将详细介绍如何在Ubuntu MATE系统上配置一套完整的开发者工具链,从基础环境搭建到高级开发工具的配置,帮助您打造一个高效的开发环境。
1. Ubuntu MATE系统简介
Ubuntu MATE是Ubuntu的官方衍生版本之一,继承了Ubuntu的稳定性和丰富的软件仓库,同时使用MATE桌面环境提供了一个传统而高效的桌面体验。它对硬件要求相对较低,适合各种配置的计算机,是开发者的理想选择。
MATE桌面环境基于GNOME 2,提供了直观的界面和丰富的自定义选项,同时保持了轻量级的特性,使系统能够流畅运行,不会占用过多系统资源。
2. 基础环境搭建
在开始配置开发环境之前,首先需要确保系统是最新的。打开终端(Terminal),执行以下命令:
- sudo apt update
- sudo apt upgrade -y
- sudo apt autoremove -y
- sudo apt autoclean
复制代码
这些命令将更新软件包列表、升级已安装的软件包、删除不再需要的依赖包和清理下载的软件包缓存。
安装基本的开发工具和编译环境:
- sudo apt install -y build-essential cmake git git-core curl wget zip unzip
复制代码
build-essential包含了编译软件所需的基本工具,如gcc、g++、make等。cmake是一个跨平台的构建工具。git是分布式版本控制系统。curl和wget是用于下载文件的工具。zip和unzip用于处理压缩文件。
为了获取更多软件,我们可以添加一些常用的第三方软件源:
- # 添加PPA(Personal Package Archive)示例
- sudo add-apt-repository ppa:webupd8team/atom -y
- sudo add-apt-repository ppa:webupd8team/sublime-text-3 -y
- sudo add-apt-repository ppa:ondrej/php -y
- sudo apt update
复制代码
如果系统内存较小,可以配置Swap空间:
- # 创建一个4GB的Swap文件
- sudo fallocate -l 4G /swapfile
- sudo chmod 600 /swapfile
- sudo mkswap /swapfile
- sudo swapon /swapfile
- # 使Swap永久生效
- echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
复制代码
编辑系统配置文件以优化性能:
- sudo nano /etc/sysctl.conf
复制代码
在文件末尾添加以下内容:
- # 增加文件监听数
- fs.inotify.max_user_watches = 524288
- # 优化网络参数
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 16384 16777216
- net.ipv4.tcp_fin_timeout = 30
- net.ipv4.tcp_keepalive_time = 120
- net.ipv4.ip_local_port_range = 10000 65000
复制代码
保存文件后,执行以下命令使配置生效:
3. 开发环境配置
Ubuntu MATE通常预装了Python,但我们可以安装最新版本并配置开发环境:
- # 安装Python 3和开发工具
- sudo apt install -y python3 python3-pip python3-dev python3-venv python3-setuptools
- # 安装Python 2(如果需要)
- sudo apt install -y python python-pip python-dev
复制代码
使用Python虚拟环境可以隔离不同项目的依赖:
- # 安装virtualenv
- sudo pip3 install virtualenv virtualenvwrapper
- # 配置virtualenvwrapper
- echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
- echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
- echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
- source ~/.bashrc
- # 创建虚拟环境
- mkvirtualenv myproject
复制代码- pip install --upgrade pip
- pip install numpy pandas matplotlib scipy jupyter ipython requests flask django
复制代码- # 安装OpenJDK 11
- sudo apt install -y openjdk-11-jdk
- # 安装OpenJDK 8(如果需要)
- sudo apt install -y openjdk-8-jdk
- # 配置Java环境变量
- echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
- echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
- source ~/.bashrc
复制代码- # 安装Maven
- sudo apt install -y maven
- # 安装Gradle
- sudo apt install -y gradle
复制代码- # 下载IntelliJ IDEA Community Edition
- wget -O ~/intellij.tar.gz "https://download.jetbrains.com/idea/ideaIC-2023.1.2.tar.gz"
- # 解压
- sudo tar xf ~/intellij.tar.gz -C /opt/
- # 创建桌面快捷方式
- cat << EOF | sudo tee /usr/share/applications/intellij-idea.desktop
- [Desktop Entry]
- Version=1.0
- Type=Application
- Name=IntelliJ IDEA Community Edition
- Comment=The Most Intelligent Java IDE
- Exec=/opt/idea-IC-231.9011.34/bin/idea.sh
- Icon=/opt/idea-IC-231.9011.34/bin/idea.png
- Terminal=false
- StartupWMClass=jetbrains-idea
- Categories=Development;IDE;
- EOF
复制代码
使用NodeSource仓库安装最新的Node.js版本:
- # 添加NodeSource仓库
- curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
- # 安装Node.js
- sudo apt install -y nodejs
- # 验证安装
- node -v
- npm -v
复制代码- # 添加Yarn仓库
- curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
- echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
- sudo apt update
- sudo apt install -y yarn
复制代码- # 全局安装常用npm包
- sudo npm install -g typescript @angular/cli react-native-cli create-react-app vue-cli nodemon express-generator
复制代码- sudo apt install -y gcc g++ gdb
复制代码- # 下载CLion
- wget -O ~/clion.tar.gz "https://download.jetbrains.com/cpp/CLion-2023.1.2.tar.gz"
- # 解压
- sudo tar xf ~/clion.tar.gz -C /opt/
- # 创建桌面快捷方式
- cat << EOF | sudo tee /usr/share/applications/clion.desktop
- [Desktop Entry]
- Version=1.0
- Type=Application
- Name=CLion
- Comment=A Cross-Platform IDE for C and C++
- Exec=/opt/clion-2023.1.2/bin/clion.sh
- Icon=/opt/clion-2023.1.2/bin/clion.png
- Terminal=false
- StartupWMClass=jetbrains-clion
- Categories=Development;IDE;
- EOF
复制代码- # 下载并安装Microsoft GPG密钥
- wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
- sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
- echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
- # 安装Visual Studio Code
- sudo apt update
- sudo apt install -y code
- # 安装常用扩展
- code --install-extension ms-python.python
- code --install-extension ms-vscode.cpptools
- code --install-extension ms-vscode.cmake-tools
- code --install-extension eamodio.gitlens
- code --install-extension ms-vscode-remote.remote-ssh
复制代码- # 下载Go
- wget -O ~/go.tar.gz "https://go.dev/dl/go1.20.4.linux-amd64.tar.gz"
- # 解压到/usr/local
- sudo tar -C /usr/local -xzf ~/go.tar.gz
- # 配置环境变量
- echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
- echo 'export GOPATH=$HOME/go' >> ~/.bashrc
- echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
- source ~/.bashrc
- # 验证安装
- go version
复制代码- # 下载GoLand
- wget -O ~/goland.tar.gz "https://download.jetbrains.com/go/goland-2023.1.2.tar.gz"
- # 解压
- sudo tar xf ~/goland.tar.gz -C /opt/
- # 创建桌面快捷方式
- cat << EOF | sudo tee /usr/share/applications/goland.desktop
- [Desktop Entry]
- Version=1.0
- Type=Application
- Name=GoLand
- Comment=A Clever IDE to Go
- Exec=/opt/GoLand-231.9161.46/bin/goland.sh
- Icon=/opt/GoLand-231.9161.46/bin/goland.png
- Terminal=false
- StartupWMClass=jetbrains-goland
- Categories=Development;IDE;
- EOF
复制代码- # 安装Rustup(Rust工具链安装器)
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- # 配置环境变量
- source ~/.cargo/env
- # 验证安装
- rustc --version
- cargo --version
复制代码
如果已安装CLion,可以通过插件市场添加Rust插件:
- # 或者使用rust-analyzer作为LSP
- rustup component add rust-analyzer
复制代码
4. 版本控制工具配置
- # 设置用户名和邮箱
- git config --global user.name "Your Name"
- git config --global user.email "your.email@example.com"
- # 设置默认分支名称
- git config --global init.defaultBranch main
- # 设置默认编辑器
- git config --global core.editor nano
- # 设置凭证存储
- git config --global credential.helper store
- # 配置别名
- git config --global alias.st status
- git config --global alias.co checkout
- git config --global alias.br branch
- git config --global alias.ci commit
复制代码- # 安装GitKraken(需要从官网下载)
- wget -O ~/gitkraken-amd64.tar.gz "https://release.gitkraken.com/linux/gitkraken-amd64.tar.gz"
- sudo tar xf ~/gitkraken-amd64.tar.gz -C /opt/
- sudo ln -sf /opt/gitkraken/gitkraken /usr/local/bin/
- # 安装Git Cola
- sudo apt install -y git-cola
- # 安装Gitg
- sudo apt install -y gitg
复制代码- # 安装SVN
- sudo apt install -y subversion
- # 安装RabbitVCS(图形化SVN客户端)
- sudo add-apt-repository ppa:rabbitvcs/ppa -y
- sudo apt update
- sudo apt install -y rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus
复制代码
5. 容器化和虚拟化工具
- # 安装依赖
- sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
- # 添加Docker官方GPG密钥
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- # 添加Docker仓库
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- # 安装Docker
- sudo apt update
- sudo apt install -y docker-ce docker-ce-cli containerd.io
- # 将当前用户添加到docker组
- sudo usermod -aG docker $USER
- # 重新登录以使组更改生效
复制代码- # 下载Docker Compose
- sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- # 添加执行权限
- sudo chmod +x /usr/local/bin/docker-compose
- # 创建软链接
- sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
- # 验证安装
- docker-compose --version
复制代码- # 创建配置文件
- sudo mkdir -p /etc/docker
- sudo tee /etc/docker/daemon.json <<-'EOF'
- {
- "registry-mirrors": ["https://hub-mirror.c.163.com", "https://mirror.baidubce.com"]
- }
- EOF
- # 重启Docker服务
- sudo systemctl daemon-reload
- sudo systemctl restart docker
复制代码- # 添加VirtualBox仓库
- echo "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
- # 添加Oracle GPG密钥
- wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
- wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
- # 安装VirtualBox
- sudo apt update
- sudo apt install -y virtualbox-6.1
- # 安装扩展包
- wget https://download.virtualbox.org/virtualbox/6.1.38/Oracle_VM_VirtualBox_Extension_Pack-6.1.38.vbox-extpack
- sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.38.vbox-extpack
复制代码- # 下载并安装Vagrant
- wget -O ~/vagrant.deb "https://releases.hashicorp.com/vagrant/2.3.4/vagrant_2.3.4-1_amd64.deb"
- sudo dpkg -i ~/vagrant.deb
- sudo apt install -f
- # 验证安装
- vagrant --version
复制代码- # 下载Minikube
- 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
复制代码- # 下载Helm
- curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
- echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
- sudo apt update
- sudo apt install -y helm
复制代码
6. 数据库工具
- # 安装MySQL服务器
- sudo apt install -y mysql-server
- # 安全配置
- sudo mysql_secure_installation
- # 安装MySQL Workbench
- sudo apt install -y mysql-workbench
复制代码- # 安装MariaDB服务器
- sudo apt install -y mariadb-server
- # 安全配置
- sudo mysql_secure_installation
复制代码- # 安装PostgreSQL
- sudo apt install -y postgresql postgresql-contrib
- # 安装pgAdmin图形化管理工具
- sudo apt install -y pgadmin3
复制代码- # 切换到postgres用户
- sudo -u postgres psql
- # 在PostgreSQL shell中创建新用户和数据库
- CREATE USER myuser WITH PASSWORD 'mypassword';
- CREATE DATABASE mydb OWNER myuser;
- \q
复制代码- # 导入MongoDB公钥
- wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
- # 添加MongoDB仓库
- echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
- # 安装MongoDB
- sudo apt update
- sudo apt install -y mongodb-org
- # 启动MongoDB服务
- sudo systemctl start mongod
- sudo systemctl enable mongod
复制代码- # 下载MongoDB Compass
- wget -O ~/mongodb-compass.deb "https://downloads.mongodb.com/compass/mongodb-compass_1.35.0_amd64.deb"
- sudo dpkg -i ~/mongodb-compass.deb
- sudo apt install -f
复制代码- # 安装Redis
- sudo apt install -y redis-server
- # 安装Redis桌面管理工具
- sudo snap install redis-desktop-manager
复制代码- # 安装SQLite和开发工具
- sudo apt install -y sqlite3 libsqlite3-dev
- # 安装SQLite浏览器
- sudo apt install -y sqlitebrowser
复制代码
7. 高级开发工具链
- # 安装Java(如果尚未安装)
- sudo apt install -y openjdk-11-jdk
- # 添加Jenkins仓库
- wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
- # 安装Jenkins
- sudo apt update
- sudo apt install -y jenkins
- # 启动Jenkins服务
- sudo systemctl start jenkins
- sudo systemctl enable jenkins
复制代码- # 安装依赖
- sudo apt install -y curl openssh-server ca-certificates postfix
- # 添加GitLab仓库
- curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- # 安装GitLab
- sudo apt install -y gitlab-ce
- # 配置GitLab
- sudo nano /etc/gitlab/gitlab.rb
- # 修改external_url 'http://gitlab.example.com'
- # 保存后执行
- sudo gitlab-ctl reconfigure
复制代码- # 下载Postman
- wget -O ~/postman.tar.gz "https://dl.pstmn.io/download/latest/linux64"
- # 解压
- sudo tar -xzf ~/postman.tar.gz -C /opt
- # 创建符号链接
- sudo ln -sf /opt/Postman/Postman /usr/bin/postman
- # 创建桌面快捷方式
- cat << EOF | sudo tee /usr/share/applications/postman.desktop
- [Desktop Entry]
- Version=1.0
- Type=Application
- Name=Postman
- Comment=API Development Environment
- Exec=/usr/bin/postman
- Icon=/opt/Postman/app/resources/app/assets/icon.png
- Terminal=false
- Categories=Development;IDE;
- EOF
复制代码- # 添加Insomnia仓库
- echo "deb https://dl.bintray.com/getinsomnia/Insomnia /" | sudo tee -a /etc/apt/sources.list.d/insomnia.list
- wget --quiet -O - https://insomnia.rest/keys/debian-public.key.asc | sudo apt-key add -
- # 安装Insomnia
- sudo apt update
- sudo apt install -y insomnia
复制代码- # 安装htop
- sudo apt install -y htop
- # 安装iotop(磁盘I/O监控)
- sudo apt install -y iotop
- # 安装iftop(网络带宽监控)
- sudo apt install -y iftop
- # 安装nmon(系统性能监控)
- sudo apt install -y nmon
复制代码- # 安装Valgrind(内存调试和分析工具)
- sudo apt install -y valgrind
- # 安装Perf(Linux性能分析工具)
- sudo apt install -y linux-tools-common linux-tools-generic linux-tools-$(uname -r)
- # 安装gprof(GNU性能分析工具)
- sudo apt install -y binutils
复制代码- # 安装Sphinx
- sudo pip install sphinx sphinx-rtd-theme
- # 创建文档项目
- mkdir docs && cd docs
- sphinx-quickstart
复制代码- # 安装MkDocs
- sudo pip install mkdocs
- # 创建新项目
- mkdocs new my-project
- cd my-project
- mkdocs serve
复制代码
8. 性能优化和调试工具
编辑系统配置文件以优化性能:
- sudo nano /etc/sysctl.conf
复制代码
添加以下内容:
- # 优化内核参数
- kernel.sem = 250 32000 100 128
- kernel.shmall = 4294967296
- kernel.shmmax = 68719476736
- kernel.shmmni = 4096
- fs.file-max = 6815744
- net.ipv4.ip_local_port_range = 9000 65500
- net.core.rmem_default = 262144
- net.core.rmem_max = 4194304
- net.core.wmem_default = 262144
- net.core.wmem_max = 1048576
复制代码
保存后执行:
- # 检查文件系统类型
- df -T
- # 为ext4文件系统添加noatime选项
- sudo nano /etc/fstab
- # 修改包含ext4的行,将defaults改为defaults,noatime
- # 保存后重启系统
复制代码- # 安装GDB(已包含在build-essential中)
- sudo apt install -y gdb
- # 安装GDB图形化前端
- sudo apt install -y ddd insight
复制代码- # 创建一个简单的C程序
- cat > leak.c << 'EOF'
- #include <stdlib.h>
- int main() {
- int *x = malloc(10 * sizeof(int));
- x[10] = 0; // 数组越界
- return 0; // 内存泄漏,没有释放x
- }
- EOF
- # 编译程序
- gcc -g leak.c -o leak
- # 使用Valgrind检测内存问题
- valgrind --leak-check=full --show-leak-kinds=all ./leak
复制代码- # 安装Python调试工具
- sudo pip install pdbpp ipdb pudb
- # 安装内存分析工具
- sudo pip install memory-profiler objgraph pympler
复制代码- # 创建一个简单的C程序
- cat > compute.c << 'EOF'
- #include <stdio.h>
- #include <math.h>
- int main() {
- double result = 0;
- for (int i = 0; i < 100000000; i++) {
- result += sin(i) * cos(i);
- }
- printf("Result: %f\n", result);
- return 0;
- }
- EOF
- # 编译程序
- gcc -O0 -g compute.c -o compute -lm
- # 使用Perf记录性能数据
- perf record -g ./compute
- # 生成性能报告
- perf report
复制代码- # 安装性能分析工具
- sudo pip install line_profiler memory_profiler py-spy
- # 创建一个Python脚本
- cat > compute.py << 'EOF'
- import math
- def compute():
- result = 0
- for i in range(100000000):
- result += math.sin(i) * math.cos(i)
- return result
- if __name__ == "__main__":
- print("Result:", compute())
- EOF
- # 使用cProfile分析性能
- python -m cProfile -s tottime compute.py
- # 使用line_profiler分析行级性能
- echo "@profile\n$(cat compute.py)" > compute_profile.py
- kernprof -l -v compute_profile.py
复制代码
9. 自动化和部署工具
- # 安装Ansible
- sudo apt install -y ansible
- # 验证安装
- ansible --version
复制代码- # 创建Ansible配置目录
- mkdir -p ~/ansible/{inventory,playbooks,roles}
- # 创建主机清单文件
- cat > ~/ansible/inventory/hosts << 'EOF'
- [webservers]
- web1.example.com
- web2.example.com
- [databases]
- db1.example.com
- [all:vars]
- ansible_user=admin
- ansible_ssh_private_key_file=~/.ssh/id_rsa
- EOF
- # 创建Ansible配置文件
- cat > ~/ansible/ansible.cfg << 'EOF'
- [defaults]
- inventory = ./inventory
- host_key_checking = False
- roles_path = ./roles
- retry_files_enabled = False
- EOF
复制代码- # 创建一个安装Nginx的Playbook
- cat > ~/ansible/playbooks/install_nginx.yml << 'EOF'
- ---
- - name: Install and configure Nginx
- hosts: webservers
- become: yes
- tasks:
- - name: Update apt cache
- apt:
- update_cache: yes
-
- - name: Install Nginx
- apt:
- name: nginx
- state: present
-
- - name: Start Nginx service
- service:
- name: nginx
- state: started
- enabled: yes
-
- - name: Create custom index.html
- copy:
- content: "<h1>Welcome to Ansible-managed Nginx</h1>"
- dest: /var/www/html/index.html
- EOF
- # 运行Playbook
- cd ~/ansible
- ansible-playbook playbooks/install_nginx.yml
复制代码- # 添加HashiCorp GPG密钥
- wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
- # 添加HashiCorp仓库
- echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
- # 安装Terraform
- sudo apt update
- sudo apt install -y terraform
复制代码- # 创建Terraform工作目录
- mkdir -p ~/terraform/{projects,modules}
- # 创建一个简单的AWS EC2实例配置
- mkdir -p ~/terraform/projects/aws-ec2
- cd ~/terraform/projects/aws-ec2
- # 创建main.tf文件
- cat > main.tf << 'EOF'
- terraform {
- required_providers {
- aws = {
- source = "hashicorp/aws"
- version = "~> 4.0"
- }
- }
- }
- provider "aws" {
- region = "us-west-2"
- }
- resource "aws_instance" "example" {
- ami = "ami-830c94e3"
- instance_type = "t2.micro"
-
- tags = {
- Name = "ExampleInstance"
- }
- }
- output "instance_public_ip" {
- value = aws_instance.example.public_ip
- }
- EOF
- # 初始化Terraform
- terraform init
- # 预览更改
- terraform plan
- # 应用配置
- terraform apply
复制代码- # 创建GitHub Actions工作流目录
- mkdir -p ~/projects/my-app/.github/workflows
- # 创建一个简单的CI工作流
- cat > ~/projects/my-app/.github/workflows/ci.yml << 'EOF'
- name: CI
- on:
- push:
- branches: [ main ]
- pull_request:
- branches: [ main ]
- jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Set up Python
- uses: actions/setup-python@v2
- with:
- python-version: 3.9
-
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install -r requirements.txt
-
- - name: Run tests
- run: |
- python -m pytest tests/
-
- - name: Lint with flake8
- run: |
- pip install flake8
- flake8 .
- EOF
复制代码- # 创建Jenkinsfile
- cat > ~/projects/my-app/Jenkinsfile << 'EOF'
- pipeline {
- agent any
-
- stages {
- stage('Build') {
- steps {
- sh 'echo Building...'
- sh 'make build'
- }
- }
-
- stage('Test') {
- steps {
- sh 'echo Testing...'
- sh 'make test'
- }
- }
-
- stage('Deploy') {
- when {
- branch 'main'
- }
- steps {
- sh 'echo Deploying...'
- sh 'make deploy'
- }
- }
- }
-
- post {
- always {
- echo 'Pipeline completed'
- }
- success {
- echo 'Pipeline succeeded'
- }
- failure {
- echo 'Pipeline failed'
- }
- }
- }
- EOF
复制代码
10. 最佳实践和技巧
- # 创建自动更新脚本
- cat > ~/bin/update-system << 'EOF'
- #!/bin/bash
- echo "Updating package lists..."
- sudo apt update
- echo "Upgrading packages..."
- sudo apt upgrade -y
- echo "Removing unnecessary packages..."
- sudo apt autoremove -y
- echo "Cleaning up package cache..."
- sudo apt autoclean
- echo "System update completed."
- EOF
- # 添加执行权限
- chmod +x ~/bin/update-system
- # 创建cron任务进行每周自动更新
- echo "0 0 * * 0 $HOME/bin/update-system" | crontab -
复制代码- # 安装timeshift用于系统快照
- sudo apt install -y timeshift
- # 安装deja-dup用于个人文件备份
- sudo apt install -y deja-dup
- # 创建备份脚本
- cat > ~/bin/backup-data << 'EOF'
- #!/bin/bash
- BACKUP_DIR="/backup/$(date +%Y%m%d)"
- PROJECTS_DIR="$HOME/projects"
- echo "Creating backup directory: $BACKUP_DIR"
- mkdir -p "$BACKUP_DIR"
- echo "Backing up projects..."
- rsync -av --progress "$PROJECTS_DIR" "$BACKUP_DIR/"
- echo "Backing up system configuration files..."
- sudo rsync -av --progress /etc "$BACKUP_DIR/"
- echo "Creating compressed archive..."
- tar -czf "$BACKUP_DIR.tar.gz" -C /backup "$(basename $BACKUP_DIR)"
- echo "Backup completed: $BACKUP_DIR.tar.gz"
- EOF
- # 添加执行权限
- chmod +x ~/bin/backup-data
复制代码- # 创建Git钩子模板
- mkdir -p ~/.git/templates/hooks
- # 创建预提交钩子示例
- cat > ~/.git/templates/hooks/pre-commit << 'EOF'
- #!/bin/bash
- # 运行代码检查
- if command -v flake8 &> /dev/null; then
- echo "Running flake8..."
- flake8 .
- if [ $? -ne 0 ]; then
- echo "Code style issues found. Please fix before committing."
- exit 1
- fi
- fi
- # 运行测试
- if [ -f "Makefile" ] && grep -q "test" Makefile; then
- echo "Running tests..."
- make test
- if [ $? -ne 0 ]; then
- echo "Tests failed. Please fix before committing."
- exit 1
- fi
- fi
- exit 0
- EOF
- # 添加执行权限
- chmod +x ~/.git/templates/hooks/pre-commit
- # 配置Git使用模板目录
- git config --global init.templatedir '~/.git/templates'
复制代码- # 创建标准项目目录结构
- mkdir -p ~/projects/{web,api,mobile,cli,tools}
- # 创建项目模板
- mkdir -p ~/templates/python-project/{src,tests,docs,scripts,data}
- # 创建Python项目模板文件
- cat > ~/templates/python-project/requirements.txt << 'EOF'
- # Development dependencies
- pytest>=6.0
- pytest-cov>=2.0
- flake8>=3.8
- black>=21.0
- mypy>=0.800
- # Production dependencies
- # Add your project dependencies here
- EOF
- cat > ~/templates/python-project/setup.py << 'EOF'
- from setuptools import setup, find_packages
- setup(
- name="my-project",
- version="0.1.0",
- packages=find_packages(where="src"),
- package_dir={"": "src"},
- install_requires=[
- # Add your dependencies here
- ],
- extras_require={
- "dev": [
- "pytest>=6.0",
- "pytest-cov>=2.0",
- "flake8>=3.8",
- "black>=21.0",
- "mypy>=0.800",
- ],
- },
- )
- EOF
- cat > ~/templates/python-project/README.md << 'EOF'
- # My Project
- A brief description of the project.
- ## Installation
- \`\`\`bash
- pip install -e .
- \`\`\`
- ## Development
- \`\`\`bash
- pip install -e ".[dev]"
- \`\`\`
- ## Running Tests
- \`\`\`bash
- pytest
- \`\`\`
- EOF
- # 创建项目初始化脚本
- cat > ~/bin/new-python-project << 'EOF'
- #!/bin/bash
- if [ -z "$1" ]; then
- echo "Usage: $0 <project-name>"
- exit 1
- fi
- PROJECT_NAME=$1
- PROJECT_PATH=~/projects/python/$PROJECT_NAME
- echo "Creating new Python project: $PROJECT_NAME"
- mkdir -p "$PROJECT_PATH"
- cp -r ~/templates/python-project/* "$PROJECT_PATH/"
- # 初始化Git仓库
- cd "$PROJECT_PATH"
- git init
- git add .
- git commit -m "Initial commit"
- echo "Project created at: $PROJECT_PATH"
- EOF
- # 添加执行权限
- chmod +x ~/bin/new-python-project
复制代码- # 备份原始SSH配置
- sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- # 安全化SSH配置
- sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
- sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
- sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
- sudo sed -i 's/#X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
- # 重启SSH服务
- sudo systemctl restart sshd
复制代码- # 安装UFW(Uncomplicated Firewall)
- sudo apt install -y ufw
- # 配置默认策略
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
- # 允许必要的服务
- sudo ufw allow ssh
- sudo ufw allow 2222/tcp # 自定义SSH端口
- sudo ufw allow http
- sudo ufw allow https
- # 启用防火墙
- sudo ufw enable
- # 查看防火墙状态
- sudo ufw status verbose
复制代码- # 安装无人值守升级包
- sudo apt install -y unattended-upgrades
- # 配置自动安全更新
- sudo dpkg-reconfigure -plow unattended-upgrades
- # 或者手动编辑配置文件
- sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
复制代码
在配置文件中,确保以下行未被注释:
- Unattended-Upgrade::Allowed-Origins {
- "${distro_id}:${distro_codename}";
- "${distro_id}:${distro_codename}-security";
- // "${distro_id}:${distro_codename}-updates";
- // "${distro_id}:${distro_codename}-proposed";
- // "${distro_id}:${distro_codename}-backports";
- };
复制代码
启用自动更新:
- Unattended-Upgrade::Automatic-Reboot "true";
- Unattended-Upgrade::Automatic-Reboot-Time "02:00";
复制代码
结论
通过本文的详细指南,您已经在Ubuntu MATE系统上成功配置了一套完整的开发者工具链,从基础环境搭建到高级开发工具的配置。这套工具链涵盖了多种编程语言、版本控制、容器化、数据库、CI/CD等各个方面,为您提供了一个强大而高效的开发环境。
记住,开发环境的配置是一个持续的过程,随着技术的发展和个人需求的变化,您可能需要不断调整和优化您的工具链。希望本文提供的指南能够帮助您在Ubuntu MATE系统上建立一个高效、稳定且安全的开发环境,从而提高您的开发效率和代码质量。 |
|