<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Linux on Foam 的博客</title>
    <link>https://blog.foamzou.com/categories/Linux/</link>
    <description>Recent content in Linux on Foam 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 11 May 2020 15:46:36 +0800</lastBuildDate>
    <atom:link href="https://blog.foamzou.com/categories/Linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用netcat能够做什么</title>
      <link>https://blog.foamzou.com/posts/what-can-netcat-do/</link>
      <pubDate>Mon, 11 May 2020 15:46:36 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/what-can-netcat-do/</guid>
      <description>&lt;h2 id=&#34;楔子&#34;&gt;楔子&lt;/h2&gt;
&lt;p&gt;[admonition] 今天朋友找我解决一个问题，他的java服务在阿里服务器里监听了某端口（使用的TCP），但通过公网无法连接。我尝试在本地telnet那个端口（跨公网），不通。在他服务器里telnet 127.0.0.1 端口，是通的。说明服务正常监听了端口。但由于我不熟悉他的java服务，无法判断该java服务是否只监听了本地回环地址。 因此公网无法访问大概有两种可能，一，java服务只监听了本地回环地址； 二、防火墙限制了端口 排除第二种情况对我来说比较简单，我通过netcat在服务器监听端口，然后在本地telnet，不通！说明问题的确出在防火墙身上。该服务器为Ubuntu，使用&lt;code&gt;ufw status&lt;/code&gt;查看防火墙状态，显示为&lt;code&gt;inactive&lt;/code&gt;，也就是关闭状态。再查看阿里云安全组规则，已经开放了tcp/udp的所有端口(-1/-1)。后面我再次执行&lt;code&gt;ufw disable&lt;/code&gt;，端口就通了。所以这是ufw的bug？ [/admonition] 引子有点长了。主要是为了说明，如果想知道与服务器之间的tcp连接是否通，可以使用netcat工具去判断。下面介绍下netcat ~&lt;/p&gt;
&lt;h2 id=&#34;netcat是什么&#34;&gt;netcat是什么&lt;/h2&gt;
&lt;p&gt;是一种计算机网络实用程序，用于使用TCP或UDP读写网络连接，号称 TCP/IP 的瑞士军刀。大家一般简写为&lt;code&gt;nc&lt;/code&gt;。总之，涉及到网络的事儿，它几乎都能做。为什么叫瑞士军刀，因为它体积很小，不同版本的nc可执行文件只有几十k到300多k，而且大部分linux发行版都有预安装。&lt;/p&gt;
&lt;h2 id=&#34;各种版本&#34;&gt;各种版本&lt;/h2&gt;
&lt;p&gt;netcat有许多版本，能力从弱到强为：GUN、BSD、Ncat。基础功能三者都一样，不同的是一些版本额外内置了些高级/有趣的功能（例如Ncat有个参数&lt;code&gt;--chat&lt;/code&gt;，可以创建匿名聊天室）。 大部分centos6内置的是BSD版本的nc，我的Centos7里边内置的nc是Ncat（属于nmap工具集里边） 使用&lt;code&gt;man nc&lt;/code&gt;，拉到最下边可以看到你的nc版本。（使用man你基本能够查阅所有的用法了，其它软件也是如此，只要是标准安装的） ps. socat号称是更为强大的nc，有兴趣的小伙伴可以自己去看看。&lt;/p&gt;
&lt;h2 id=&#34;用途&#34;&gt;用途&lt;/h2&gt;
&lt;h3 id=&#34;检查端口通不通&#34;&gt;检查端口通不通&lt;/h3&gt;
&lt;p&gt;以往我一直使用telnet来判断某个端口是否通，但telnet是基于tcp协议的，如果要判断udp端口就无能为力了。这时可以使用nc来判断。为了方便实验，本文统一使用同一台机器模拟服务端和客户端。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 咱们使用nc创建一个tcp协议监听的端口。-l为listen，默认协议为tcp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -l 8088
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 使用nc连上该端口。-v(verbose)用于显示更多信息，-z（zero I/O）表示不发送数据包，仅显示连接状态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 下面succeed表示端口是通的
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -vz 127.0.0.1 8088
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection to 127.0.0.1 8088 port [tcp/radan-http] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 创建一个udp端口。-u指使用udp协议
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -lu 8088
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 同样，加一个u表示使用udp连接该端口，同时你会看到服务端打印出若干个X。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 不是说加了z参数就不会发数据包吗，为什么服务端收到了报文？我认为udp是无连接状态的，通过系统调用write
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 往该套接字发数据，通过返回值才知道包发出去没有，从而判断udp端口是否通
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -vzu 127.0.0.1 8088
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection to 127.0.0.1 8088 port [udp/radan-http] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;端口扫描&#34;&gt;端口扫描&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 扫描tcp端口。-w(wait)指定连接超时时间，单位秒。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 连接成功的端口将作为标准输出
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -v -w3 -z 127.0.0.1 1-65535 | tee succeed_port.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 下面摘抄部分连接成功的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 80 port [tcp/http] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 443 port [tcp/https] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 1100 port [tcp/mctp] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 1111 port [tcp/lmsocialserver]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; succeeded! Connection to 127.0.0.1 2255 port [tcp/vrtp]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; succeeded! Connection to 127.0.0.1 3001 port [tcp/*]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; succeeded! Connection to 127.0.0.1 3306 port [tcp/mysql]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; succeeded! Connection to 127.0.0.1 4300 port [tcp/corelccam] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 4369 port [tcp/epmd] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 5672 port [tcp/amqp] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; Connection to 127.0.0.1 6553 port [tcp/*] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 扫描udp端口。nc -v -zu 127.0.0.1 1-65535
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 以下为我本地扫描结果
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection to 127.0.0.1 636 port [udp/ldaps] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection to 127.0.0.1 35157 port [udp/*] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connection to 127.0.0.1 54890 port [udp/*] succeeded!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;文件传输&#34;&gt;文件传输&lt;/h3&gt;
&lt;p&gt;归根到底都是创建一个tcp/udp连接，通过连接收发数据而已。所以，无论数据是ascii字符串，二进制文件都可以发送/接收。 为了加快传输速率/加密，你甚至还可以在发送之前对数据进行压缩/加密。 对于大文件，个人认为还是scp、rsync这类专业的工具靠谱。小文件可以试试这种方法，毕竟简单，不需要ssh认证。&lt;/p&gt;</description>
    </item>
    <item>
      <title>centos6升级python到2.7版本</title>
      <link>https://blog.foamzou.com/posts/upgrade-python-to-2-7-in-centos/</link>
      <pubDate>Tue, 09 Apr 2019 17:36:08 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/upgrade-python-to-2-7-in-centos/</guid>
      <description>&lt;p&gt;有些软件需要安装python2.7，但centos6默认安装的是2.6版本。但yum依赖2.6，所以不能覆盖安装。需要保留两者&lt;/p&gt;
&lt;h2 id=&#34;编译安装python27&#34;&gt;编译安装python2.7&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar xvf Python-2.7.14.tgz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir /usr/local/python2.7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; Python-2.7.14
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure --prefix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/python2.7 --enable-shared
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;验证&#34;&gt;验证&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /usr/local/python2.7/bin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./python
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;报错：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./python: error &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将python2.7的动态链接库加入到系统会读取的配置中&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo vim /etc/ld.so.conf  &lt;span class=&#34;c1&#34;&gt;# 在该配置文件追加一行：/usr/local/python2.7/lib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ldconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;备份原有的python&#34;&gt;备份原有的python&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which python
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# /usr/bin/python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;myhost tmp&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;$ md5sum /usr/bin/python /usr/bin/python2.6
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8505ca7b24f60f8dca8d6d2622ed0563  /usr/bin/python
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8505ca7b24f60f8dca8d6d2622ed0563  /usr/bin/python2.6
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 发现已经有python2.6，且与python的md5一致，那就不用备份直接删除了&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm /usr/bin/python
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;编辑yum的执行程序&#34;&gt;编辑yum的执行程序&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo vim /usr/bin/yum
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 将#!/usr/bin/python 中的python改为python2.6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 即 #!/usr/bin/python2.6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行yum验证下，没有报错就ok了&lt;/p&gt;</description>
    </item>
    <item>
      <title>用lockf保证同一时间只有一个进程运行</title>
      <link>https://blog.foamzou.com/posts/lockf/</link>
      <pubDate>Mon, 25 Feb 2019 18:20:13 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/lockf/</guid>
      <description>&lt;h3 id=&#34;安装&#34;&gt;安装&lt;/h3&gt;
&lt;p&gt;参见&lt;a href=&#34;https://github.com/woshizoufeng/lockf&#34;&gt;github&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;使用场景&#34;&gt;使用场景&lt;/h3&gt;
&lt;p&gt;保证同一时间只有一个进程运行。 例如 crontab 设定每分钟跑一次 1.php ，但如果超过1分钟该脚本还没执行完，就会出现多个php脚本同时运行的情况，在某些场景下可能会有问题。 为了满足上述需求，我们可能会在脚本里添加一段代码，创建锁，执行完后删除锁，若锁文件存在则直接return。 还有另一种解决方案就是用 lockf 使用例子：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lockf -s -t &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; /tmp/xx.lock /usr/local/bin/php -f 1.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>给你的Mac/Linux的rm装一个回收站</title>
      <link>https://blog.foamzou.com/posts/setup-trash-for-safe-rm/</link>
      <pubDate>Tue, 09 Oct 2018 20:42:41 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/setup-trash-for-safe-rm/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;作为程序员，在工作中经常用到rm。我在不久前用vscode写代码，在底下的终端里想删掉没用的文件，手抖把未提交到git的代码文件删了。还好代码量不多，否则会崩溃。毕竟重写代码是很痛苦的~ 因此本文标题提上了日程&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;选择一款安全的删除脚本&#34;&gt;选择一款安全的删除脚本&lt;/h3&gt;
&lt;p&gt;Github看到一个脚本满足需求。 &lt;a href=&#34;https://github.com/kaelzhang/shell-safe-rm&#34;&gt;github地址&lt;/a&gt;，里边有多种安装方式。我选择的是npm全局安装。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm i -g safe-rm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装后，safe-rm命令就可以用了~&lt;/p&gt;
&lt;h3 id=&#34;将安装好的脚本设置为rm的别名&#34;&gt;将安装好的脚本设置为rm的别名&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;vim编辑~/.bash_profile(或其他bash启动时会执行的文件)。添加 &lt;code&gt;alias rm=&#39;safe-rm&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;由于我使用了fish-shell，因此还需要在fish启动时会执行的config文件里添加别名：vim编辑~/.config/fish/config.fish。添加 &lt;code&gt;alias rm=&#39;safe-rm&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;done&#34;&gt;Done&lt;/h3&gt;
&lt;p&gt;添加完之后别忘了重新打开终端窗口哦（或者source刚刚的配置文件）。至此，rm后文件的被mv到~/.Trash。即使是重名的文件也会在文件尾添加时间后缀，保证文件不被覆盖。&lt;/p&gt;</description>
    </item>
    <item>
      <title>mysql命令行神器mycli</title>
      <link>https://blog.foamzou.com/posts/mycli/</link>
      <pubDate>Sun, 22 Apr 2018 00:24:14 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/mycli/</guid>
      <description>&lt;h2 id=&#34;为什么使用它&#34;&gt;为什么使用它&lt;/h2&gt;
&lt;p&gt;受够了mysql原生client后，你会爱上mycli的自动补全和高亮。对于我这种常常记不住表结构的人来说，自动补全真是爽得不行。 ps：sql新手谨慎使用，建议多裸写sql后再来使用该软件&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;Mac&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install mycli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;CentOS&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 请尽量先将pip升级到最新版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install --upgrade pip
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum install python-devel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum install libffi-devel 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;easy_install mycli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用方法&#34;&gt;使用方法&lt;/h2&gt;
&lt;p&gt;和mysql原生命令行一样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mycli -uname
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Squid使用SSLBump正向代理</title>
      <link>https://blog.foamzou.com/posts/squid-proxy-with-ssl-bump/</link>
      <pubDate>Sat, 23 Sep 2017 18:58:39 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/squid-proxy-with-ssl-bump/</guid>
      <description>&lt;p&gt;背景：最近需要使用nodeJs访问一个历史久远的网站，那个网站的服务器证书是错误的，且使用的协议是TLSv1.0。浏览器上不得不使用IE并关闭各种安全设置和设置为兼容模式才能正常访问。Nodejs的新版本已经不支持这种不安全的协议，所以需要搭建一个代理服务进行访问。刚开始使用的是&lt;a href=&#34;https://github.com/mitmproxy/mitmproxy&#34;&gt;mitmproxy&lt;/a&gt; ，当时的最新版本对于SSL错误会报错，所以将源码中校验部分去掉就可以正常使用了。但部署到生产环境，会出现cpu占用过高的情况。所以后面换了Squid。&lt;/p&gt;
&lt;p&gt;部署Squid参考了一篇文章，原文：&lt;a href=&#34;https://smoothnet.org/squid-v3-5-proxy-with-ssl-bump/&#34;&gt;here&lt;/a&gt;，下面是简单翻译。&lt;/p&gt;
&lt;p&gt;  Squid是个很强大的Web代理，它可以应用于无线认证、重定向、用户身份验证、日志记录等。但其在SSL方面一直存在局限性。在3.2版本之前，Squid的策略只是简单地传递SSL加密流量，因为它无法校验受信任的SSL链接。对于每个SSL连接也无法给用户做预警。但3.5版本后允许更多的控制，但要注意仍然无法校验受信任的SSL链接。&lt;/p&gt;
&lt;p&gt;这里不会过多地介绍使用SSL Bump配置Squid以外的知识，对于编译和配置squid的细节你最好看下官方文档。 如果通过代理自动监测，通知浏览器连接到代理服务器，这样是挺简单的。但有些用户可能会试图规避这一点，并尝试直接连接。 在这种情况下，我们需要强制这些用户通过截取流量来使用代理。SSL Bumping的前提是中间人攻击，但由于这是在您的用户清楚所有流量都是检查过的环境中完成的，因此这并不是真正的攻击，这只是一种策略。Squid用于执行SSL Bumping有一些新方法，但是我会总结出最具实战性的方法：Squid收到一个https请求，然后为用户建立安全连接。 远程连接建立后，Squid会重新加密所有流量; 这时候的加密使用的是本地私钥，以及本地证书颁发机构即时创建出来的证书。 所以我们首先要确保的是你已经安装了3.5或更高版本的Squid。尽管3.2，3.3以及3.4版本也能实现，但3.5版本后SSL Bump的指令有了些显著变化。另外，编译Squid时需要带上‘&amp;ndash;with-openssl’参数。 在CentOS我使用以下参数来编译Squid（foam：我带上&amp;ndash;enable-ipf-transparent参数会报错，所以我是去掉再编译的）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;./&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;configure&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exec&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;includedir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;include&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datadir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;share&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;libdir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib64&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;libexecdir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;squid&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;localstatedir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sysconfdir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;squid&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sharedstatedir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lib&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;logdir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;squid&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pidfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;squid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pid&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;squid&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;silent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rules&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dependency&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tracking&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;openssl&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;icmp&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pools&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;useragent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;esi&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;follow&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;forwarded&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ipf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transparent&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接下来我们需要生成本地的SSL证书，这里我使用的是简单的命令，没有在意怎么去加密。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Generate Private Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openssl genrsa -out example.com.private 2048  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后是创建Certificate Signing Request（CSR），即证书注册请求。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Linux下编译php扩展</title>
      <link>https://blog.foamzou.com/posts/compiled-php-extension-in-linux/</link>
      <pubDate>Sun, 09 Aug 2015 10:06:36 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/compiled-php-extension-in-linux/</guid>
      <description>&lt;p&gt;在windows下我们需要开启某个扩展，很容易。一般情况下，dll文件都已经安静地躺在extension目录下，只等待你在php.ini里将它前面的;去掉。 而在linux，你cd到php的extensions目录往往发现里面空空的。或许只有几个so文件落寞地待着。 这里以编译&lt;strong&gt;fileinfo&lt;/strong&gt;扩展为例（注意这是php内置的扩展，如果你编译的是第三方扩展请自行到官网下载源码）&lt;/p&gt;
&lt;h3 id=&#34;一找到扩展包&#34;&gt;一、找到扩展包&lt;/h3&gt;
&lt;p&gt;你需要到PHP源码包里寻找，希望源码包没被你删除。 cd到php-5.x.x/ext/目录，你会发现里面有很多内置的扩展 &lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/compiled-php-extension-in-linux/9c4c484bf505c7695d964585d3b51a2f.png&#34;&gt; 我们cd到fileinfo目录&lt;/p&gt;
&lt;h3 id=&#34;二编译&#34;&gt;二、编译&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;phpize
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./configure --with-php-config&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/php/bin/php-config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面的命令很好理解，首先是执行phpize，它是用来安装php扩展的工具，如果你的系统无法识别，请使用完整路径。比如/usr/local/php/bin/phpize 。这个工具会在当前目录下生成configure文件。 接着就是编译的三板斧啦~其中with-php-config参数请按照你实际情况填写 没有意外的话，经过上面的编译，你会在php/lib/php/extensions/(在php.ini的extension_dir可找到, 或者 php -i | grep exten)目录下找到生成的fileinfo.so文件&lt;/p&gt;
&lt;h3 id=&#34;三添加配置&#34;&gt;三、添加配置&lt;/h3&gt;
&lt;p&gt;最后只需要在php.ini里把扩展添加进去就好了&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;extension = &amp;#34;fileinfo.so&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后别忘了reload php-fpm&lt;/p&gt;</description>
    </item>
    <item>
      <title>lnmp、lamp、lnmpa一键安装包</title>
      <link>https://blog.foamzou.com/posts/lnmp-lamp-lnmpa-install-by-one-press/</link>
      <pubDate>Sat, 21 Mar 2015 16:38:16 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/lnmp-lamp-lnmpa-install-by-one-press/</guid>
      <description>&lt;p&gt;最近在DO买了个VPS。这个安装包不错，不需要重复造轮子，可以专心做自己的事了。 注：本文转自&lt;a href=&#34;http://blog.linuxeye.com/31.html&#34;&gt;Linux运维笔记&lt;/a&gt; 这个脚本是使用shell编写，为了快速在生产环境上部署&lt;a href=&#34;http://blog.linuxeye.com/31.html&#34;&gt;LNMP&lt;/a&gt;/&lt;a href=&#34;http://blog.linuxeye.com/82.html&#34;&gt;LAMP&lt;/a&gt;/LANMP（&lt;a href=&#34;http://www.linuxeye.com/&#34;&gt;Linux&lt;/a&gt;、&lt;a href=&#34;http://blog.linuxeye.com/tag/Nginx&#34;&gt;Nginx&lt;/a&gt;/Tengine、&lt;a href=&#34;http://blog.linuxeye.com/tag/mysql&#34;&gt;MySQL&lt;/a&gt; /&lt;a href=&#34;http://blog.linuxeye.com/tag/mariadb&#34;&gt;MariaDB&lt;/a&gt;/&lt;a href=&#34;http://blog.linuxeye.com/359.html&#34;&gt;Percona&lt;/a&gt;、PHP）,适用于CentOS/Redhat 5+、Debain 6+和Ubuntu 12+ &lt;strong&gt;脚本特性：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持续不断更新&lt;/li&gt;
&lt;li&gt;源码编译安装，大多数源码是最新stable版，并从官方网址下载&lt;/li&gt;
&lt;li&gt;一些安全优化&lt;/li&gt;
&lt;li&gt;提供多个数据库版本(MySQL-5.6, MySQL-5.5, MariaDB-10.0, MariaDB-5.5, Percona-5.6, Percona-5.5)&lt;/li&gt;
&lt;li&gt;提供多个PHP版本(php-5.3, php-5.4, php-5.5,php-5.6,php-7/phpng(alpha))&lt;/li&gt;
&lt;li&gt;提供&lt;a href=&#34;http://blog.linuxeye.com/tag/Nginx&#34;&gt;Nginx&lt;/a&gt;、Tengine&lt;/li&gt;
&lt;li&gt;提供多个&lt;a href=&#34;http://blog.linuxeye.com/tag/apache&#34;&gt;Apache&lt;/a&gt;版本（&lt;a href=&#34;http://blog.linuxeye.com/tag/apache&#34;&gt;Apache&lt;/a&gt;-2.4，&lt;a href=&#34;http://blog.linuxeye.com/tag/apache&#34;&gt;Apache&lt;/a&gt;-2.2）&lt;/li&gt;
&lt;li&gt;根据自己需求安装PHP缓存加速器，提供ZendOPcache、xcache、apcu、eAccelerator、ionCube和ZendGuardLoader（php-5.4、php-5.3 PHP源码加密）&lt;/li&gt;
&lt;li&gt;根据自己需求安装&lt;a href=&#34;http://blog.linuxeye.com/tag/Pureftpd&#34;&gt;Pureftpd&lt;/a&gt;、phpMyAdmin&lt;/li&gt;
&lt;li&gt;根据自己需求安装memcached、&lt;a href=&#34;http://blog.linuxeye.com/tag/redis&#34;&gt;redis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;根据自己需求可使用tcmalloc或者&lt;a href=&#34;http://blog.linuxeye.com/356.html&#34;&gt;jemalloc&lt;/a&gt;优化MySQL、Nginx&lt;/li&gt;
&lt;li&gt;提供添加虚拟主机脚本&lt;/li&gt;
&lt;li&gt;提供Nginx/Tengine、PHP、Redis、phpMyAdmin升级脚本&lt;/li&gt;
&lt;li&gt;提供本地备份和远程备份（服务器之间rsync）脚本&lt;/li&gt;
&lt;li&gt;提供CentOS 6/7下HHVM安装**#news**&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Github地址：&lt;a href=&#34;https://github.com/lj2007331/lnmp&#34;&gt;https://github.com/lj2007331/lnmp&lt;/a&gt; &lt;a href=&#34;http://blog.linuxeye.com/31.html&#34;&gt;LNMP&lt;/a&gt;问题反馈论坛：&lt;a href=&#34;http://bbs.linuxeye.com/&#34;&gt;http://bbs.linuxeye.com&lt;/a&gt; &lt;a href=&#34;http://blog.linuxeye.com/31.html&#34;&gt;LNMP&lt;/a&gt;最新源码一键安装脚本问题反馈请加QQ群： &lt;strong&gt;235258658&lt;/strong&gt; &lt;strong&gt;安装步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;yum&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;screen&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#for CentOS/Redhat
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#apt-get -y install wget screen # for Debian/Ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;://&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;linuxeye&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;oss&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;cn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;hangzhou&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;internal&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;aliyuncs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lnmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lnmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;full&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tar&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gz &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;#阿里云内网下载地址（包含源码） 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;://&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;mirrors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;linuxeye&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lnmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;full&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tar&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gz &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# 国内下载地址（包含源码） 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;://&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;downloads&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;linuxeye&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lnmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;full&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tar&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gz &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# 美国下载地址（包含源码） 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;://&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;downloads&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;linuxeye&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lnmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tar&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gz &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# 仅脚本源码，建议国外主机下载此包，源码包从官方站点下载
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;tar&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xzf&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lnmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;full&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;tar&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gz &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#tar xzf lnmp.tar.gz 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lnmp &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# 如果需要修改目录(安装、数据存储、Nginx日志)，请修改options.conf文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;screen&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;S&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lnmp &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# 如果网路出现中断，可以执行命令`screen -r lnmp`重新连接安装窗口 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;./&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sh &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# 请勿sh install.sh或者bash install.sh这样执行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;添加虚拟主机&lt;/strong&gt;**:**&lt;/p&gt;</description>
    </item>
    <item>
      <title>给不同域名配置不同虚拟站点</title>
      <link>https://blog.foamzou.com/posts/%E7%BB%99%E4%B8%8D%E5%90%8C%E5%9F%9F%E5%90%8D%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%90%8C%E8%99%9A%E6%8B%9F%E7%AB%99%E7%82%B9/</link>
      <pubDate>Wed, 10 Dec 2014 19:52:46 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/%E7%BB%99%E4%B8%8D%E5%90%8C%E5%9F%9F%E5%90%8D%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%90%8C%E8%99%9A%E6%8B%9F%E7%AB%99%E7%82%B9/</guid>
      <description>&lt;p&gt;有时候为了区分业务，给不同二级域名配置不同的站点也是很不错的。 以下配置的环境是：CentOS + Apache 首先在 httpd/conf/httpd.conf, 将其中的 ServerAdmin ServerName DocumentRoot 注释掉。 其中看到有一行是： Include conf.d/*.conf 既然已经包含了所有conf文件，那我就直接开干了。 以下是apache配置目录下的文件，很清楚地看到没有vhosts.conf之类的文件，那么我们自己在conf.d目录下创建&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;foam&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# tree /etc/httpd/ -L 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bak&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;2014.12&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bak&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;2014.12&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;rpmsave&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;   &lt;span class=&#34;sb&#34;&gt;`-- magic
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;|-- conf.d
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;|   |-- README
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;|   |-- php.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;|   `&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;welcome&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;logs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;../../&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;|--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;modules&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;../../&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;lib64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;modules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;run&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;../../&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;httpd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;directories&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;vhosts.conf文件内容如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;NameVirtualHost&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;#这行我一开始漏掉了，导致访问的一直是第一个虚拟站点，很郁闷啊。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;VirtualHost&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ServerAdmin&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#管理员账号，如 root@localhost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#该主机的目录，如 /var/www/html
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ServerName&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#域名1,如 zoufeng.me
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ServerAlias&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#别名（可选），如 www.zoufeng.me
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ErrorLog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;logs/域名1-error.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;CustomLog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;logs/域名1-access.log&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;combined&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/www/html&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;order&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;allow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;allow&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Directory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;VirtualHost&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;VirtualHost&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ServerAdmin&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#管理员账号，如 root@localhost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#该主机的目录，如 /var/www/html2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ServerName&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#域名2,如 m.zoufeng.me
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ServerAlias&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#别名（可选）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;ErrorLog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;logs/域名2-error.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;CustomLog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;logs/域名2-access.log&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;combined&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/www/html&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;order&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;allow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;deny&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;allow&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Directory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;VirtualHost&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;编辑后，重启apache服务&lt;/p&gt;</description>
    </item>
    <item>
      <title>搭建LAMP</title>
      <link>https://blog.foamzou.com/posts/%E6%90%AD%E5%BB%BAlamp/</link>
      <pubDate>Wed, 03 Dec 2014 11:13:22 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/%E6%90%AD%E5%BB%BAlamp/</guid>
      <description>&lt;p&gt;首先检查我的CentOS6是否预装apache [root@foam /]# rpm -qa | grep httpd httpd-tools-2.2.15-29.el6.centos.x86_64 httpd-2.2.15-29.el6.centos.x86_64 果然是安装了的，那么先卸载它。 [root@foam /]# rpm -e httpd warning: /etc/httpd/conf/httpd.conf saved as /etc/httpd/conf/httpd.conf.rpmsave 出来个警告，但是不影响卸载。&lt;strong&gt;一、安装Apache&lt;/strong&gt;1. yum install httpd 2. [root@foam init.d]# /etc/init.d/httpd start Starting httpd: httpd: Could not reliably determine the server&amp;rsquo;s fully qualified domain name, using 23.245.26.38 for ServerName [ OK ] 没找到domain name，使用ip地址做为server name。 设置Domain [root@foam init.d]# cd /etc/httpd/conf [root@foam conf]# vim httpd.conf 找到ServerName。将前面的#去掉 ServerName zoufeng.com:80 ：wq 保存 [root@foam conf]# chkconfig httpd on #设为开机启动 [root@foam conf]# /etc/init.d/httpd restart #重启Apache Stopping httpd: [ OK ] Starting httpd: [ OK ] ps：安装并启动apache后，浏览器输入IP，可以访问了。&lt;strong&gt;二、安装Mysql&lt;/strong&gt;1.安装 [root@foam conf]# yum install mysql mysql-server btw:下载速率有8.0M/s [root@foam ~]# /etc/init.d/mysqld start #启动 Initializing MySQL database: Installing MySQL system tables&amp;hellip; OK Filling help tables&amp;hellip; OK [root@foam ~]# chkconfig mysqld on #设置为开机启动 [root@foam ~]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf&amp;rsquo;? #可以覆盖它 2.设置密码 [root@foam /]# mysql_secure_installation 提示需要输入密码 Enter current password for root (enter for none): （默认是空，直接enter即可） Set root password? [Y/n] 接下来输入两次新密码即可 提示是否把匿名用户删除 Remove anonymous users? [Y/n] y &amp;hellip; Success! 提示是否不允许root远程登录（安全起见，不允许） Disallow root login remotely? [Y/n] y &amp;hellip; Success! 后面还有两个询问，默认Y就可以。 重启Mysql [root@foam ~]# /etc/init.d/mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ]&lt;strong&gt;三、安装PHP5&lt;/strong&gt;1.安装 [root@foam ~]# yum install php btw：这次是8.4MB/s 2.安装php组件 [root@foam ~]# yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt 3.重启mysql和apache [root@foam ~]# /etc/init.d/mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ] [root@foam ~]# /etc/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] 最后在/var/www/html/下新建index.php。 echo phpinfo(); 浏览器输入ip地址，看到了熟悉的php参数页面。配置成功！！ ==============至此LAMP搭建完成================== 如果希望调试PHP，希望显示错误信息，需要到 /etc/php.ini 修改&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
