摘要:簡介是一個基于的工具,用于創建和部署虛擬化開發環境。本教程不安裝可選。
簡介
Vagrant是一個基于Ruby的工具,用于創建和部署虛擬化開發環境。
它的主要意義是讓所有開發人員都使用和線上服務器一樣的環境,本質上和你新建一個虛擬機
安裝
常用命令
vagrant init # 初始化,生成Vagrantfile
vagrant up # 啟動虛擬機
vagrant halt # 關閉虛擬機
vagrant reload # 重啟虛擬機
vagrant ssh # SSH 至虛擬機
vagrant suspend # 掛起虛擬機
vagrant resume # 喚醒虛擬機
vagrant status # 查看虛擬機運行狀態
vagrant destroy # 銷毀當前虛擬機
vagrant box list # 查看本地box列表
vagrant box add # 添加box到列表
vagrant box remove # 從box列表移除
vagrant provision
vagrant reload --provision
homestead
站在巨人的肩膀上,快速部署PHP開發環境
homestead是laravel官方的一個php開發環境 (本教程采用homestead box6.1.0)
內置:
Ubuntu 18.04
Git
PHP 7.2
PHP 7.1
PHP 7.0
PHP 5.6
Nginx
Apache (可選。本教程不安裝)
MySQL
MariaDB (可選。本教程不安裝)
Sqlite3
PostgreSQL
Composer
Node (With Yarn, Bower, Grunt, and Gulp)
Redis
Memcached
Beanstalkd
Mailhog
Neo4j (可選。本教程不安裝)
MongoDB (可選。本教程不安裝)
Elasticsearch (可選。本教程不安裝,以免過大)
ngrok
wp-cli
Zend Z-Ray
Go
Minio
下載box(homestead)
box鏡像
metadata.json{
"name": "laravel/homestead", "versions": [ { "version": "6.1.0", "providers": [ { "name": "virtualbox", "url": "X:/path/homestead-6.1.0.box" } ] } ]
}
vagrant add box metadata.json
or
vagrant add box laravel/homestead X:/path/homestead-6.1.0.box --box-version=6.1.0
vagrant box list
laravel/homestead (virtualbox, 6.1.0)vagrant init laravel/homestead --box-version=6.1.0
生成了Vagrantfile文件調整后的Vagrantfile配置
-- mode: ruby -- vi: set ft=ruby :ENV["VAGRANT_DEFAULT_PROVIDER"] = "virtualbox"
Vagrant.configure("2") do |config|
# 虛擬機名
# config.vm.define = "sxx_v1"
# 鏡像名
config.vm.box = "laravel/homestead"
# 鏡像版本要求
config.vm.box_version = "6.1.0"
# config.vm.box_version = ">= 6.1.0"
# 服務名 這里注意不能用下劃線"_"
config.vm.hostname = "sxx-dev-server"
# 虛擬機的私有網絡ip
config.vm.network "private_network", ip: "192.168.10.10"
# 共享同步的數據目錄
config.vm.synced_folder "D:/qkl/sxx/docker", "/home/share", create:false
config.vm.synced_folder "D:/qkl/sxx/sxx_admin3", "/web/www/sxx_admin3", create:false
config.vm.synced_folder "D:/qkl/sxx/vagrant/nginx/conf", "/etc/nginx/sites-custom/", create:false
# 端口轉發
# guest->虛擬機
# host->宿主
config.vm.network "forwarded_port", guest: 22, host: 2222
config.vm.network "forwarded_port", guest: 80, host: 8000
# VirtualBox 虛擬機配置:
config.vm.provider "virtualbox" do |vb|
vb.gui = false vb.name = "sxx_v1" vb.memory = "2048" vb.cpus = "2"
end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
#config.vm.provision "shell", inline: <<-SHELL
# sudo apt-get update
#SHELL
end
啟動
vagrant up
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box "laravel/homestead" is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1) default: 80 (guest) => 8000 (host) (adapter 1) default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running "pre-boot" VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/sbin/ifdown "eth1" || true
/sbin/ip addr flush dev "eth1"
sed -e "/^#VAGRANT-BEGIN/,$ d" /etc/network/interfaces > /tmp/vagrant-network-interfaces.pre
sed -ne "/^#VAGRANT-END/,$ p" /etc/network/interfaces | tac | sed -e "/^#VAGRANT-END/,$ d" | tac > /tmp/vagrant-network-interfaces.post
cat
/tmp/vagrant-network-interfaces.pre
/tmp/vagrant-network-entry
/tmp/vagrant-network-interfaces.post
/etc/network/interfaces
rm -f /tmp/vagrant-network-interfaces.pre
rm -f /tmp/vagrant-network-entry
rm -f /tmp/vagrant-network-interfaces.post
/sbin/ifup "eth1"
Stdout from the command:
Stderr from the command:
bash: line 4: /sbin/ifdown: No such file or directory
bash: line 20: /sbin/ifup: No such file or directory
解決錯誤
這里的ip,我們上面設置為192.168.10.10ssh -p 2222 vagrant@ip
or
直接打開virtualbox的虛擬機進入
sudo apt-get install -y ifupdown
重新啟動vagrant reload
output初始化工作
重置/設置root密碼su passwd root
輸入新密碼 這里我是Vagrant123 解決homestead6.1.0里沒有phpize的問題 安裝過程會提示操作,默認選擇即可sudo apt-get install -y php7.2-dev
sudo apt-get install -y php7.1-dev
sudo apt-get install -y php7.0-dev
sudo apt-get install -y php5.6-dev
update-alternavtives --config php
選擇自己需要的版本前的序列即可 nginx配置里可以直接指定版本,具體查看分享的nginx配置即可安裝擴展
這我就不演示怎么安裝了基本都是phpize -> configure -> make && make installredis
mongodb
rdkafka(安裝前先安裝librdkafka-https://github.com/edenhill/l...)
zookeeper(安裝前線安裝zookeeker的C庫支持)
建議后續安裝的擴展
swoole
查看常用服務
clipboard.png
clipboard.png
打包vagrant box
vagrant package --output sxx_v1
分享和使用
安裝vagrant
安裝virtualbox
copy 分享的box
添加box: vagrant add box qklin/sxx_v1 box_file -box-version=6.1.0 或者上面的metadata.json添加
設置復制一份Vagrantfile,調整成自己所需的共享目錄
添加nginx的虛擬主機配置
vagrant up
如果nginx有問題,你可以ssh到虛擬機,然后重啟下nginx,因為共享目錄可能遲于nginx,所以nginx啟動除了問題,重啟nginx即可(/usr/sbin/nginx -s reload)
分享本教程的vagrantbox和部分配置
sxx_v1 box鏈接: https://pan.baidu.com/s/1vkU5... 密碼: 6666
sxx_v1配置(nginx, vagrantfile等)鏈接: https://pan.baidu.com/s/1z7Mf... 密碼: 8888
homestead 官方的7.14.2配置(僅做參考,可以快速增加其他服務,參考scripts里的腳本)鏈接: https://pan.baidu.com/s/1qZ29... 密碼: 9999
總結
vagrant 本質還是虛擬機,不過是通過vagrant快速部署和管理虛擬機
本教程只是演示了一個配置配置一臺虛擬機,vagrant通過vagrantfile快速部署分布式虛擬機
這個不是本教程的目的,具體更多你可以翻閱官方或百度搜索相關教程自行學習
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31116.html
摘要:準備開發所需工具系統環境搭建系統搭建環境以及環境為啥不用因為很多公司用的,然而才能正常支持,在下安裝一大堆東西不行,折騰了好些下,決定不躺著個坑。 準備 開發所需工具: Vagrant Oneinstack Virtualbox Vagrant box 系統環境:macOS Sierra 10.12.5搭建系統:CentOS 7搭建環境:Oneinstack(PHP以及Java環境...
摘要:入門指北后端的同學用快速的可重復的創建各種不同環境的虛擬機,來測試部署各后端程序。快速入門安裝安裝非常簡單,可以在頁面選擇最新的版本安裝。將虛擬機置于休眠狀態。則會將虛擬機從磁盤中刪除。啟動檢查狀態出現如上所示代表啟動成功。 Vagrant 入門指北 showImg(https://segmentfault.com/img/remote/1460000015282321?w=900&h...
閱讀 1221·2023-04-26 02:20
閱讀 3342·2021-11-22 14:45
閱讀 4120·2021-11-17 09:33
閱讀 976·2021-09-06 15:00
閱讀 1486·2021-09-03 10:30
閱讀 3844·2021-07-26 22:01
閱讀 996·2019-08-30 15:54
閱讀 535·2019-08-30 15:43