分类 服务器端 下的文章

从宿主主机访问vagrant内的端口

我在vagrant内的虚拟机搭建了服务器,现在想从宿主主机中访问虚拟机中的服务器。
(因为虚拟机没有桌面环境)

需要先vagrant login登录vagrant hasicorp.
然后再用vagrant share --http 80(apache在80端口)
之后会生成一个一级域名为vagrantshare.com的地址。
打开该地址就可以访问服务器了。

Ubuntu下使用php7.0(nginx)

在nginx.conf下添加user=www-data;后,
运行sudo service php7.0-fpm start
才会在/var/run/php下创建php7.0-fpm.sock

这个时候跑php文件就不会再报404了。

Ubuntu下安装PHP7.0后报undefined symbol: pcre_jit_stack_free

安装完毕后,敲php -v报错:
php: symbol lookup error: php: undefined symbol: pcre_jit_stack_free
完全不知道为什么会出现这个错误。

看来是不php没认出pcre_jit_stack_free这个函数。
但php5版本又不会出现这个问题啊。难道没装pcre?
我记得pcre应该是标配。不管了,先看看怎么安装pcre。
用以下命令安装pcre
apt-get install libpcre3 libpcre3-dev
安装之后,再php -v却再也不会报错了。
奇怪……

Ansible hosts 配置

折腾了两三天,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一个名称才行。
的样子……

Ansible 连接错误

安装完ansible,在/etc/ansible/hosts添加了公司的正式服和测试服之后,尝试连接服务器,看看配置正不正确。
ansible all -m ping
却报了UNREACHABLE的错误。

www.xxx2.com | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
www.xxx.com | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

我已经把自己的key放到了服务器上的,为什么还不行呢?
在StackOverflow上找到解决方案。说是没有添加公钥。
这就奇怪了,我是按照文档说明的去做的。
Whatever,打开/etc/ansible/ansible.cfg,找到[defaults]中的private_key_file部分;

[defaults]
private_key_file=~/.ssh/my-key.pem

指定公钥位置即可。

www.xxx.com | SUCCESS => {
    "changed": false,
    "ping": "pong"
}