Jeskinfly's blog

生活本是阳光的,不要失去她原本的色彩


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

homestead问题

发表于 2020-01-08 | 分类于 PHP , laravel | 阅读次数

问题描述

homestead启动时,卡在”SSH auth method: private key”的问题

1
2
3
4
5
6
7
8
9
10
E:\Work\Vagrant\Homestead (master)
vagrant up
...
homestead: SSH address: 127.0.0.1:2222
homestead: SSH username: vagrant
homestead: SSH auth method: private key
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.
...

阅读全文 »

homestead.yaml配置详解

发表于 2020-01-08 | 分类于 PHP , laravel | 阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 指定 IP ,允许多台虚拟机并存,除了指定 IP 以外,可用选项还有:autonetwork 
ip: "192.168.10.10"

# Homestead.yaml 中的 networks 属性为 Homestead 环境配置网络接口。你可以根据需要配置多个接口:
# https://learnku.com/docs/laravel/5.8/homestead/3882#network-interfaces
networks:
- type: "public_network"
ip: "192.168.10.20"
bridge: "en1: Wi-Fi (AirPort)"

# 设置虚拟机内存大小
memory: 2048

# 设置虚拟机多少核 CPU,
cpus: 1

# 虚拟机的「主机名词」,默认是`homestead`,登录虚拟机后
# 会显示 vagrant@homestead
hostname: homestead

# 虚拟机盒子的名称,这是虚拟机软件创建时为虚拟机设置的名词,为 homestead-7
name: homestead

# 目前支持四个虚拟机类型:virtualbox, vmware_desktop, parallels, hyperv
# 请见 https://app.vagrantup.com/laravel/boxes/homestead
provider: virtualbox

# box 用来作为初始化虚拟机的 vagrant box 名称
# version 指定虚拟机盒子版本,与 box 参数挂钩
box: laravel/homestead
version: 7.0.0

# 当你的 Vagrant 盒子销毁时,Homestead 能自动备份你的数据库
# 请见文档 https://learnku.com/docs/laravel/5.8/homestead/3882#62d8f8
backup: true

# 虚拟机认证相关,免密码登录
# authorize 填写主机公钥文件路径,虚拟机初始化时,会被复制到虚拟机
# 的 /home/vagrant/.ssh/authorized_keys文件中,从而实现 SSH 免密码登录。
authorize: ~/.ssh/id_rsa.pub

# 填本机的 SSH 私钥文件地址。虚拟机初始化时,私钥文件复制到虚拟机
# 的 /home/vagrant/.ssh/ 文件夹中,使虚拟机能共享主机上的 SSH 私钥文件,
# 使虚拟机具备等同于主机的身份认证。如你主机已经设置好了 GitHub 认证,
# 虚拟机也会同步获取到 GitHub 的认证。
keys:
- ~/.ssh/id_rsa

# 文件夹映射,将主机中的文件夹映射到虚拟机里,方便在虚
# 拟机读取和操作主机的文件
folders:
- map: ~/code # 主机里的目录
# 对应映射到的虚拟机目录,也就是说,在此目录下将映射
# 与 ~/code 一致的目录结构
to: /home/vagrant/code
# NFS 模式映射文件夹,可以有效提高效率,可选参数是 rsync,smb
type: "nfs"
- map: "~Project/myapp"
to: "/home/vagrant/myapp"
type: "rsync"
# Vagrant 提供的文件夹挂载选项,请见
# https://www.vagrantup.com/docs/synced-folders/basic_usage.html
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]

# 添加站点,默认将会生成 Nginx 站点,详见
# https://learnku.com/docs/laravel/5.8/homestead/3882#97ea16
sites:
- map: learnku.test # 域名地址
to: "/home/vagrant/code/learnku/public" # 网站的根目录
php: '5.6' # 选择 PHP 版本, 每个站点可以选择不同的 PHP 版本, 此站点项目选择 php 5.6 版本
# 计划任务,为一个 Homestead 站点的 schedule:run 命令运行起来
schedule: true
# 为 Nginx 添加 fastcgi_param 参数
params:
- key: FOO
value: BAR
# 站点类型,默认是 Laravel
# 所有类型请见:https://learnku.com/docs/laravel/5.8/homestead/3882#8681e1
type: "laravel"
- map: myapp.test
to: "/home/vagrant/myapp/public"
php: '7.1' # 此站点项目选择 php 7.1 版本

databases:
- myapp
- myapp

# 设置 PHP 全局环境变量,
variables:
- key: 'APP_ENV'
value: 'local'
- key: 'APP_DEBUG'
value: 'true'

# 端口转发
ports:
- send: 50000 # 主机端口
to: 5000 # 虚拟机端口
- send: 7777
to: 777
protocol: udp # 端口转发类型

SSH登录原理

发表于 2020-01-08 | 分类于 Linux | 阅读次数

口令登录

假定你要以用户名user,登录远程主机host。

1
$ ssh user@host

SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

1
$ ssh -p 2222 user@host

如果你是第一次登录对方主机,系统会出现下面的提示:

阅读全文 »

PHP获取真实IP

发表于 2017-12-27 | 分类于 PHP , IP | 阅读次数

变量

  • $_SERVER[‘HTTP_CLIENT_IP’] 通过请求头传递,可伪造。
  • $_SERVER[‘HTTP_X_FORWARDED_FOR’] 格式:clientip,proxy1,proxy2。通过请求头传递,可伪造。
  • $_SERVER[‘REMOTE_ADDR’] 可信的。它是与服务器握手的最后一个ip,可能是用户的真是ip,也可能是用户的代理服务器或自己的反向代理服务器ip地址。

反向代理服务器传递ip

1
2
3
location /{
proxy_set_header client-real-ip $remote_addr
}

数据库存储ip

  存储时使用ip2long(),把ip转换为数字;取出时,使用long2ip(),格式转换回来。

阿里云虚拟主机配置子域名指向子目录

发表于 2017-12-27 | 分类于 其他 | 阅读次数

背景

  我在阿里云有一个免费赠送的虚拟主机,并有一个域名,想部署多个测试的项目,必要是可以用作项目展示,然后通过独立的子域名去访问。
  不考虑增加经济支出,如升级虚拟主机为服务器啥的。

方案

  利用web服务器(apache、nginx)的重写功能做重定向。
  前提你的空间服务器如果安装的web服务器是apache且rewrite功能,才能继续下一步。默认状态为开启。
  nginx默认关闭.htaccess的加载,不作介绍。

阅读全文 »

通过web实现IM功能

发表于 2017-12-19 | 阅读次数

web 的通信方式

  浏览器和我们桌面应用的工作方式是不同的,桌面应用通过socket和远程主机上另外一端的一个进程建立TCP连接,从而达到全双工的即时通信。浏览器是客户端请求服务器,服务器返回结果的模式。浏览器要想实现两个客户端的通信,必然要通过服务器进行信息的转发。例如A要和B通信,则应该是A先把信息发送给IM应用服务器,服务器根据A信息中携带的接收者将它再转发给B,同样B到A也是这种模式,如下所示:

阅读全文 »

MySQL查询:获取两个表的差集

发表于 2017-12-19 | 分类于 MySQL | 阅读次数

场景:假设有A、B两表, id 为关联键

方法一

最好理解的方法

1
select * from A where A.id not in (select B.id from B)

方法二

最常用的方法

1
select * from A left join B on A.id = B.id where B.id is null

方法三

最快的方法

1
select * from B where (select count(1) from A where A.id = B.id ) = 0

PHP程序守护进程化

发表于 2017-10-13 | 分类于 PHP , 守护进程 | 阅读次数

  一般Server程序都是运行在系统后台,这与普通的交互式命令行程序有很大的区别。glibc里有一个函数daemon。调用此函数,就可使当前进程脱离终端变成一个守护进程,具体内容参见man daemon。PHP中暂时没有此函数,当然如果你有兴趣的话,可以写一个PHP的扩展函数来实现。

PHP命令行程序实现守护进程化有2种方法:

阅读全文 »

github如何同步fork?

发表于 2017-10-13 | 分类于 Github , fork | 阅读次数

为 fork 配置远程 upstream仓库

  • 列出当前远程仓库配置.
1
2
3
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
阅读全文 »

程序如何支持emoji表情?

发表于 2017-10-09 | 分类于 PHP , emoji | 阅读次数

Unicode简述

  Unicode(中文:万国码、国际码、统一码、单一码):把世界上所有语言的文字和所有的符号(如高音谱号、麻将、emoji)用同一套编码表示出来。

阅读全文 »
123
Jeskinfly

Jeskinfly

Jeskinfly's blog

23 日志
20 分类
16 标签
GitHub
© 2017 - 2020 Jeskinfly
由 Hexo 强力驱动
主题 - NexT.Pisces