从宿主主机访问vagrant内的端口
我在vagrant内的虚拟机搭建了服务器,现在想从宿主主机中访问虚拟机中的服务器。
(因为虚拟机没有桌面环境)
需要先vagrant login
登录vagrant hasicorp.
然后再用vagrant share --http 80
(apache在80端口)
之后会生成一个一级域名为vagrantshare.com
的地址。
打开该地址就可以访问服务器了。
我在vagrant内的虚拟机搭建了服务器,现在想从宿主主机中访问虚拟机中的服务器。
(因为虚拟机没有桌面环境)
需要先vagrant login
登录vagrant hasicorp.
然后再用vagrant share --http 80
(apache在80端口)
之后会生成一个一级域名为vagrantshare.com
的地址。
打开该地址就可以访问服务器了。
在nginx.conf下添加user=www-data;
后,
运行sudo service php7.0-fpm start
才会在/var/run/php
下创建php7.0-fpm.sock
。
这个时候跑php文件就不会再报404了。
安装完毕后,敲php -v
报错:php: symbol lookup error: php: undefined symbol: pcre_jit_stack_free
完全不知道为什么会出现这个错误。
看来是不php没认出pcre_jit_stack_free
这个函数。
但php5版本又不会出现这个问题啊。难道没装pcre?
我记得pcre应该是标配。不管了,先看看怎么安装pcre。
用以下命令安装pcreapt-get install libpcre3 libpcre3-dev
安装之后,再php -v
却再也不会报错了。
奇怪……
准备用ansible管理服务器。
打算从最基础的安装服务器开始。
于是按照别人写的playbook,自己也写(chao)了以下的playbook:
- hosts: local_stage
tasks:
- name: install latest apache2
apt: name=apache2 state=latest
然而却运行不了。
难道和python一样,要对齐?
于是改成这样:
- hosts: local_stage
tasks:
- name: install latest apache2
apt: name=apache2 state=latest
奇怪。丢到YAMLLint上检查了一下,报的也不知道什么鬼,看不懂。毕竟是第一次写YAML。
明明有:
,但是他又不认……
还尝试了以下几种写法,还都不行……
- hosts: local_stage
tasks:
- name: install latest apache2
apt: name=apache2 state=latest
- hosts: local_stage
tasks:
- name: install latest apache2
apt:name=apache2 state=latest
尝试的其他写法我就不在这里一一列举出来了。
最终可行的是这个:
---
- hosts: local_stage
tasks:
- name: install latest apache2
apt: name=apache2 state=latest
可能大家没看出来。其实是这样的,
-
代表无须列表,其每一项需要对齐。hosts
和tasks
从一开始就对齐了的,所以报错没有在那一行。-
、:
后面必须跟一个空格。第一次写yaml,感觉比python或java还严格……
折腾了两三天,Ansible终于能连接本地的vagrant了。
问题出在Inventory上。
原本我写成这样了:
[local]
127.0.0.1:2222
这样是连接不了的。
于是我改成这样:
[local]
127.0.0.1 ansible_port=2222
这样还是连接不了
[local]
skys215.dev ansible_port=2222
这样又可以连接……(/etc/hosts
里写了127.0.0.1 skys215.dev
)
跪orz……
在文档中看到有ansible_host
的选项。我就觉得奇怪了,在tutorial中明明直接把ip写在inventory文件中的,怎么还需要这个选项?
再次尝试:
[local]
ansible_host=127.0.0.1 ansible_port=2222
还是不行。
在网上搜了下别人写的inventory文件,想到:咦?如果只想连接其中一台电脑的话怎么办?
原来是要这样写:
[local]
server1 ansible_host=127.0.0.1 ansible_port=2222
要给组中的每个server一个名称才行。
的样子……