docker上搭建LNMP环境

上一篇介绍在一个nginx容器上,如何管理docker容器
继续扩展,搭建一整套的环境,如LNMP环境( nginx + mysql + php)。
网上有介绍是通过容器连接的方式来实现,也就是一个nginx容器,一个mysql容器,一个php容器,然后通过配置来连接起来。形成一整套开发环境。
但对于一个开发环境来说,我并不建议这样子来做,因为开发环境本来就是要一个独立的环境,增加复杂性不说,独立性还不能保证。
我建议的方式是在一个容器里直接搭好所有的环境,然后启动容器的时候,一整套环境就启动起来。
上一篇已经有一个nginx容器上,可以登录到nginx容器中,在上面继续把mysql和php都装了。
但我选择重新下载一个干净有debian容器
使用命令

docker pull debian

命令把镜像下载到本地

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              cc1b61406712        8 weeks ago         182 MB
debian              latest              e5599115b6a6        2 months ago        123 MB

多了一个debian镜像(当然也可以选择其它的如ubuntu,centos之类的系统,看个人喜好)

用debian新建一个容器并启动起来

docker run -d -it -p 80:80 -p 3306:3306 -v /web:/var/www/html –name debian debian

 

绑定了80端口和3306端口,3306是方便以后要访问mysql用

登录容器并执行bash

docker exec -u root -it debian bash

先装些必要的工作,比如

apt-get update
apt-get install vim

于是开始你的安装环境之旅吧

具体的安装过程网络上有很多,比如这里
How To Install Linux, Nginx, MySQL, PHP (LEMP Stack) on Debian 8

这样lnmp环境就安装好了。但当你再次启动debina容器的时候,这些服务是不会自己起来的,还是要你再登录进容器来手动启动这些服务。

一个解决方法是在根目录下新建个脚本 startup.sh,

vi /startup.sh

填入以下内容

service mysql start
service nginx start
service php5-fpm restart

这个脚本的内容是启动mysql,nginx和php服务
保存妈出

给脚本执行权限

chmod +x startup.sh

 

退出并关闭容器,

$ docker stop debian

 

然后试下再启动

$ docker start debian

然后执行容器里的 startup.sh脚本来启动服务

$ docker exec -it mydebian bash /startup.sh
[ ok ] Starting MySQL database server: mysqld ..
[info] …

为wordpress文章评论添加算术验证码

从网上搜到http://www.yuju.org/379.html使用的方法,
但也许是我用的workpress版本不同,没有找到相关的代码,于是参考了作者文章的基础了,研究了下,最终这样实现。

修改wordpress根目录下的 wp-comments-post.php

修改源代码其实没那么难,只是任何源代码的修改都记得先备份一个就是了。

网站根目录下的 wp-comments-post.php,查找:

if ( ” == $comment_content )
在此代码的上面增加:

 

//my code

if ( !$user->ID ) {

$aaa = trim($_POST[aaa]);

$bbb = trim($_POST[bbb]);

$subab = trim($_POST[subab]);

if((($aaa+$bbb)!=$subab)|| empty($subab)){

wp_die( __(‘错误提示:请正确输入的两数字相加的结果。’) );

}

}

//my code

 

然后修改wp-includes文件夹下的的文件comment-template.php
找到function comment_form( $args = array(), $post_id = null ) 方法

查找相关代码,我修改后如下

$req = get_option( ‘require_name_email’ );
$aria_req = ( $req ? ” aria-required=’true'” : ” );
$html5 = ‘html5’ === $args[‘format’];
$aaa=rand(0,5);
$bbb=rand(3,9);
$fields = array(
‘author’ => ‘<p class=”comment-form-author”>’ . ‘<label for=”author”>’ . __( ‘Name’ ) . ( $req ? ‘ <span class=”required”>*</span>’ : ” ) . ‘</label> ‘ .
‘<input id=”author” name=”author” type=”text” value=”‘ . …