加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用virtualbox部署本地开发测试环境

(2023-04-07 13:13:07)
分类: linux
# 创建虚拟环境:

安装 virtualbox:  
vargrant 的使用: vagrant 指南   
vagrant:  
vagrant 中文教材:  
vagrant 常用命令:  
镜像下载:  
ssh 客户端:

## 常用命令:

vagrant init # 初始化 vagrant init # 初始化一个指定  
box vagrant up # 启动虚拟机  
vagrant halt # 关闭虚拟机  
vagrant reload # 重启虚拟机  
vagrant ssh # SSH 至虚拟机  
vagrant suspend # 挂起虚拟机  
vagrant resume # 唤醒虚拟机  
vagrant status # 查看虚拟机运行状态  
vagrant provision #重新应用更改 vagrant 配置  
vagrant destroy # 销毁当前虚拟机  
vagrant reload --provision #按新配置重启  
vagrant up --provision #按新配置启动  
vagrant box list # 查看本地 box 列表  
vagrant box add # 添加 box 到列表  
vagrant box remove # 从 box 列表移除  
vagrant package --output local-centos.box # 将虚拟机打包为一个.box 的文件

## 安装虚拟机

下载镜像:vagrant 官方 generic/centos8 镜像  
vagrant box add xxx.box --name generic-centos8 #安装目录 C:\Users\lupin\.vagrant.d\boxes  
vagrant box list #确认是否成功  
mkdir demo  
cd demo  
vagrant init generic/centos8 #会在 demo 目录下生成 Vagrantfile 的配置文件,其中 config.vm.box = "generic/centos8"对应上面的 name vagrant up #启动虚拟机,在 virtualbox 中可以登录,用户名/密码 vagrant/vagrant 错误:Guest Additions seems to be installed () correctly, but not running Vagrantfile 在Vagrantfile增加:

```
#可以防止反复安装 Guest Additions
if Vagrant.has_plugin?("vagrant-vbguest")
  config.vbguest.auto_update = false
end
#文件夹共享
config.vm.synced_folder ".", "/vagrant"
```

## 编译Guest Addiotions 参考

1,下载 develop-kernel:在 kernel-devel-4.18.0-348.el8.x86_64.rpm  
2,安装 sudo yum install kernel-devel-4.18.0-348.el8.x86_64.rpm  
3,安装其他库 sudo yum install gcc make perl  
4,安装,mount 对应 Guest Addiotions 的 iso 光盘,执行 VBoxLinuxAdditions.run,安装过程中会缺少一些库文件,可以使用yum provides libXt.so.6  
#搜索对应的包并安装:  
sudo yum install libXt  
sudo yum install libXext  
sudo yum install libXmu \

## 登录虚拟机,修改centos:允许 ssh 登录:参考

配置文件/etc/ssh/sshd_config  
检查监听端口: 22  
监听地址 0.0.0.0 ::  
检查允许远程登录:PermitRootLogin yes  
检查开启用户名密码验证:PasswordAuthentication yes  
重启:sudo systemctl restart sshd  \

# VSCODE
GIT:https://git-scm.com/download/win \
VScode :https://code.visualstudio.com/Download \
## vscode 学习 https://code.visualstudio.com/docs/introvideos/basics
界面介绍 总体布局 菜单,功能(文件、搜索、git、运行、插件),面板 \
中文插件安装(搜索 chinses 插件)\
颜色主题 (左下角-主题-颜色主题-上下键)\
文件主题(左下角-主题-文件主题-安装)\
添加文件、文件夹等基本操作\
## vscode 十大特性:https://blog.csdn.net/Zhangguohao666/article/details/105676173
多光标编辑(Multi-Cursor Editing)- alt+click \
智能感应(intelliSense)- 获取代码和外部模块的代码帮助和参数建议 \
行操作(Line Actions )- Alt + UpArrow 和 Alt + DownArrow 向上或向下移动选定行;Ctrl + Shift + K 删除整行; Ctrl + / 来注释掉光标所在行、切换注释 \
重命名重构(Rename Refactoring)- 快速重命名代码库中的符号(比如变量名、函数名)将光标选中符号,按 F2 键 \
格式化(Formatting)- 格式化整个文档 Shift + Alt + F;保存时自动格式化整个文档:Ctrl + , 输入 editor.formatOnSave \
代码折叠(Code Folding) -折叠 Ctrl + Shift + [;展开 Ctrl + Shift + ];鼠标 \
错误和警告(Errors and Warnings)-按 F8 键可以按顺序在错误之间导航,并查看详细的错误消息 \
片段(Snippets)- 花更少的时间输入片段;,需安装 python snippets,for 例子 \
Emmet - 只需要敲一行代码就能生成你想要的完整 HTML 结构等(极大方便前端开发) ul>li.item$\*5 \
JavaScript Type Checking- 使用零配置的 TypeScript 对 JavaScript 文件执行类型检查。在文件顶部添加 "// @ts-check"或者“// @ts-nocheck” \
## 插件
新建 index.html 使用!内置模板库自动生成 html5 框架(!) 安装 open in default browser 插件可以直接预览(右键) \
Live Server 插件 \
Auto Rename Tag 自动修改闭环标签 \
carbon-now-sh 生成代码图片 \
prettier 代码格式化 1、安装插件-点击设置-搜索 save-format on save 2、右键-使用格式化文档-配置默认格式化程序 \
### vscode 相关设置(提升代码阅读体验、提升编程开发效率)
字体大小 \
字体(JetBrains Mono~),下载https://www.jetbrains.com/lp/mono/ -解压-安装(右键)-设置添加 JetBrains Mono \
光标 设置-文本编辑器-光标-控制是否启用平滑插入动画 \
关闭代码缩略图 设置-搜索 minimap \
滚轮缩放 设置-搜索 Mouse Wheel Zoom ctrl+滚轮 \

## 登录 vscode 安装 remote-ssh 插件

vscode:点击 remote-ssh 连接 vagrant@localhost:2222  
安装 ssh 客户端并验证登录 localhost:2222(在 windows cmmand 窗口用 ssh 命令登录登录命令:ssh -l vagrant 192.168.1.105 -p 2222)  客户端:比如 putty  
错误 :“vscode 远程连接提示过程试图写入的管道不存在”,是本地 c:\\Users\xxx\.ssh\known_hosts 文件定义的 host 有冲突,删除相同的 host 行就可以了,参见 *

## ssh 免密登录:

ssh-keygen -b 4096 -t rsa 生产密钥对,在.ssh 目录下产生 id_rsa(私钥)、id_rsa.pub(公钥) \ ssh-copy-id username@remote-server #copy 所有公钥到 remote-server(linux)的 username 用户,会生成 authorized_keys 文件如果是 windows,没有 ssh-copy-id,可以直接将 id_rsa.pub 内容复制到 authorized_keys,注意.ssh(700)和 authorized_keys(600)的权限  
用户目录下配置文件:c:\Users\lupin\.ssh\config

```Host localhost
HostName localhost
Port 2222
User lupin
IdentityFile c:\Users\lupin\.ssh\id_rsa
```

## 登录命令:ssh localhost

参考 vscode 参考:  
免密登录: (vscode) (通用)

## 主机上写一个启动 shell

```
cd \
cd vagrant\centos8
vagrant up
cmd /k vagrant ssh
```

## 网络设置

Vagrant 手册之网络:  
Vagrant (三) - 网络配置  
Vagrant 可以指定三种网络:端口转发(Forwarded Ports),私有网络(Private Network),公有网络(Public Network)

```
config.vm.network :forwarded_port, guest: 80, host: 8080 
config.vm.network :private_network, ip: "192.168.1.104" 
config.vm.network :public_network #dhcp
```

# 创建一个应用

## nodejs 安装 node.js

```
wget https://nodejs.org/dist/v18.13.0/node-v18.13.0-linux-x64.tar.xz 
tar -xvf node-v18.13.0-linux-x64.tar.xz 
sudo ln -s /home/vagrant/node-v18.13.0-linux-x64/bin/npm /usr/local/bin/ 
sudo ln -s /home/vagrant/node-v18.13.0-linux-x64/bin/node /usr/local/bin/ 
sudo ln -s /home/vagrant/node-v18.13.0-linux-x64/bin/npx /usr/local/bin/ 
node -v 
npm -v npm config get registry #查看源 
#更换 npm 源为淘宝镜像: 
npm config set registry
```

## 生成 demo 应用 它在内部使用 Babel 和 webpack

```
npx create-react-app my-app
cd my-app 
npm start #会自动打开
```

注意:不能在vscode里执行`错误:Error: ENOSPC: System limit for number of file watchers reached, watch '/home/vagrant/my-app/public' 参考: 执行:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

# ansible

## 安装 python3.9 参考:

wget   
yum install -y gcc patch libffi-devel python3-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel xz-devel 有 2 个包上面无法直接安装,只能手动安装  
安装 db4-devel

```
wget https://pkgs.dyn.su/el8/base/x86_64/libdb4-4.8.30-30.el8.x86_64.rpm 
rpm -ivh libdb4-4.8.30-30.el8.x86_64.rpm 
wget https://pkgs.dyn.su/el8/base/x86_64/libdb4-devel-4.8.30-30.el8.x86_64.rpm 
rpm -ivh libdb4-devel-4.8.30-30.el8.x86_64.rpm
```

安装 libpcap-devel

```
wget https://vault.centos.org/centos/8/PowerTools/aarch64/os/Packages/libpcap-devel-1.9.1-5.el8.aarch64.rpm 
dnf --enablerepo=powertools install libpcap-devel #需要下载吗?
```

编译 python

```
tar -zxvf Python-3.9.10.tgz cd python-3.9.10 
./configure 
make 
sudo make install
```

debian 安装  
ansible sudo apt update  
sudo apt install ansible -y  
sudo ansible --version  
cendos 安装  
ansible sudo yum install python3  
sudo yum install python3-pip -y #应该已经有了 pip 工具  
sudo python3 -m pip install --upgrade pip #升级pip  
python3 -m pip install ansible #通过 python 安装 ansible,可能安装较低版本 ansible \

## 安装 git sudo apt-get install git

## ansible常用命令

/usr/bin/ansible    Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行  
/usr/bin/ansible-doc     Ansible 模块功能查看工具  
ansible-doc -l #获取全部模块的信息;ansible-doc -s MOD_NAME #获取指定模块的使用帮助  
/usr/bin/ansible-galaxy   下载/上传优秀代码或 Roles 模块 的官网平台,基于网络的 /usr/bin/ansible-playbook Ansible 定制自动化的任务集编排工具  
/usr/bin/ansible-pull    Ansible 远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)  
/usr/bin/ansible-vault    Ansible 文件加密工具 /usr/bin/ansible-console   Ansible 基于 Linux Consoble 界面可与用户交互的命令执行工具 \

## ansible 命令示例

```
sudo mkdir /etc/ansible sudo sh -c "echo "localhost" > /etc/ansible/hosts" 
sudo yum install nginx 
ansible localhost -b -c local -m service -a "name=nginx state=started" systemctl status nginx # 确认状态
```

## ansible-playbook 命令示例

```
git clone https://github.com/devops-book/ansible-playbook-sample.git 
cd ansible-playbook-sample 
ansible-playbook -i development site.yml ansible-playbook -i production site.yml 
curl localhost #验证 另外脚本有一个小 bug,变量命名的问题
```

使用 ansible 好处:管理一组服务器、留下执行痕迹、幂等性、-C 参数检测对服务器的影响

## roles 目录描述:

roles/project 项目名称 (然后再该项目下创建子目录)  
files/ 存放由 copy 或 script 模块等调用的文件  
templates/ template 模块查找所需要模块文件的目录  
tasks/ 定义 task,role 的基本元素,至少应该包含一个名为 main.yml 的文件;其他的文件需要在此文件中通过 include 进行包含  
vars/ 定义变量,至少应该包含一个名为 main.yml 的文件;其他的文件需要在此文件中通过 include 进行包含  
meta/ 定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为 main.yml 的文件,其他文件需在此文件中通过 include 进行包含  
default/ 设定默认变量时使用此目录中的 main.yml 文件 \

## 对另外一台服务器进行配置

1、创建 2 台虚拟机(IP1:192.168.33.11,IP2:192.168.33.10),private network 方式,保证两台虚拟机可以互通  
2、设置 ssh,保证一台 vagrant 账好可以 ssh 到另外一台  
3、设置免密,ansible 服务器免密登录到被管理服务器 ssh-copy-id   
4、设置/etc/ansible/hosts 增加地址 192.168.33.11  
5、安装 nginx  
6、测试 ansible 命令 ansible 192.168.33.11 -b -m service -a "name=nginx state=started" \

# 如何制作一个 vagrant box

  
  
vagrant package --base --output #注意:虚拟机的名字是 virtualbox 里的虚机名字

## 修改 vagrant 公钥

完成box制作之后,需要修改公钥才能用ssh登录

```
wget -O .ssh/authorized_keys 
chmod 700 .ssh 
chmod 600 .ssh/authorized_keys 
chown -R vagrant:vagrant .ssh
```

vagrant key

```
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
```

## 参考


Ansible 之 roles(角色)详解

vagrant plugin install vagrant-vbguest vagrant up --provider=virtualbox


Ansible 的条件判断介绍和使用方式详解!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有