lamp 相关配置 [Debian]

编译环境

Debian (Ubuntu)

apt-get install build-essential
apt-get install libncurses5-dev
sudo apt-get install libxml2-dev libcurl3-dev libpng-dev libmhash-dev libmcrypt-dev libxslt-dev libpspell-dev

Mysql编译安装参数

CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-Community-Server --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-ndb-debug --without-isam --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock

配置成功会提示:

MySQL has a Web site at [http://www.mysql.com/] which carries details on the
latest release, upcoming features, and other information to make your

work or play with MySQL more productive. There you can also find
information about mailing lists for MySQL discussion.
Remember to check the platform. specific part of the reference manual for
hints about installing MySQL on your platform. Also have a look at the
files in the Docs directory.
Thank you for choosing MySQL!

make
make install
groupadd mysql                     #增加mysql组
useradd -g mysql mysql          #增加mysql用户,这个用户属于mysql组
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root:mysql . #设置权限,注意后面有一个 "."
chown -R mysql /var/lib/mysql #设置 mysql 目录权限
chgrp -R mysql . #注意后面有一个 "."
cp share/mysql/my-medium.cnf /etc/my.cnf
cp share/mysql/mysql.server /etc/init.d/mysqld #开机自动启动 mysql。
chmod 755 /etc/init.d/mysqld
rcconf    #开启启动服务设置
/etc/init.d/mysqld start #启动 MySQL
bin/mysqladmin -u root password "password_for_root"

查看mysql编译参数

cat /usr/local/mysql/bin/mysqlbug |grep ./configure

把 mysql 加入环境变量

export PATH="$PATH:/usr/local/mysql/bin"

apache 编译

./configure   #配置源代码树
--prefix=/usr/local/apache2  #体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。
--enable-module=so   #打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
--enable-deflate=shared   #支持网页压缩
--enable-expires=shared   #支持 HTTP 控制
--enable-rewrite=shared   #支持 URL 重写
--enable-cache  #支持缓存
--enable-file-cache  #支持文件缓存
--enable-mem-cache  #支持记忆缓存
--enable-disk-cache #支持磁盘缓存
--enable-static-support   #支持静态连接(默认为动态连接)
--enable-static-htpasswd   #使用静态连接编译 htpasswd - 管理用于基本认证的用户文件
--enable-static-htdigest  #使用静态连接编译 htdigest - 管理用于摘要认证的用户文件
--enable-static-rotatelogs  #使用静态连接编译 rotatelogs - 滚动 Apache 日志的管道日志程序
--enable-static-logresolve   #使用静态连接编译 logresolve - 解析 Apache 日志中的IP地址为主机名
--enable-static-htdbm   #使用静态连接编译 htdbm - 操作 DBM 密码数据库
--enable-static-ab  #使用静态连接编译 ab - Apache HTTP 服务器性能测试工具
--enable-static-checkgid   #使用静态连接编译 checkgid
--disable-cgid  #禁止用一个外部 CGI 守护进程执行CGI脚本
--disable-cgi   #禁止编译 CGI 版本的 PHP
--disable-userdir  #禁止用户从自己的主目录中提供页面
--with-mpm=worker  #让apache以worker方式运行
--enable-authn-dbm=shared #对动态数据库进行操作。Rewrite时需要。
make
make install

建立一个符号连接:

ln -s /usr/local/apache2/bin/apachectl /etc/init.d/httpd
rcconf    #加入自动启动

php 编译

CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-gd --enable-calendar --with-zlib --with-curl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs --with-openssl --enable-zend-multibyte --with-gettext --with-mcrypt --enable-exif --with-png-dir=/usr/local/lib --enable-ftp --with-mhash --with-libxml-dir=/usr/local/lib --with-xsl --with-pspell

配置完成提示

+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.

make
make install

修改/usr/local/apache2/conf/httpd.conf,在AddType部分加入如下内容

AddType application/x-httpd-php .php
2008-03-18 146 apache debian linux mysql php

MySQL导出导入命令的用例

1.导出整个数据库

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u dbuser -p dbname > dbname.sql

2.导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u dbuser -p dbname users> dbname_users.sql

3.导出一个数据库结构

mysqldump -u dbuser -p -d --add-drop-table dbname >d:\dbname_db.sql

-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

常用source 命令

进入mysql数据库控制台,如

mysql -u root -p
mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:\dbname.sql

2007-11-05 144 mysql 备份

PHP 和 Mysql 学习笔记(四)

1. 如何禁用 select 下拉列表中的某一项

<select>
<option  selected>——请选择——</option> 
<optgroup  label="分类一"> 
<option>——子类一</option> 
<option>——子类二</option> 
</optgroup> 
<optgroup  label="分类二"> 
<option>——子类一</option> 
<option>——子类二</option> 
</optgroup> 
</select>

2. EMS SQL Manager中文显示乱码

打开EMS SQL Manager点击那个数据库出现了许多属性

选择database registration info中有一个client charset

选择gb2312简体中文

3. Mysql 乱码

MySQL数据库字符集为utf8

并且网页通过UTF-8编码发送

这时存入数据库的仍然是乱码

需要做以下设置:

@mysql_connect($dbhost,$dbuser,$dbpassword);

加上下面这行

$this->query("SET NAMES 'utf8'");

在每次发送sql查询前设定字符集为utf-8

  1. 正则表达式

Email匹配

if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$email))
{
    echo "邮件格式不正确";
}
  1. PHP5中时间相差八小时的解决办法
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s');
  1. PHP防止SQL注入攻击的简单方法

    1.修改PHP的配置文件 php.ini ,将display_errors的值设为Off,这样保证PHP脚本在出错之后不会在页面中显示错误信息。

    2.在Mysql函数前加错误抑制符 @ ,避免输出mysql错误。

    3.对所有用户输入的数据进行转义并进行类型检查。

  2. 返回GD函数版本号

function gd_version() {
    if (function_exists('gd_info')) {
        $GDArray = gd_info();
        $gd_version_number = $GDArray['GD Version'] ? $GDArray['GD Version'] : 0;
        unset($GDArray);
    } else {
        $gd_version_number = 0;
    }
    return $gd_version_number;
}
  1. 获得用户的真实IP地址
function realip()
{
    static $realip = NULL;
    if ($realip !== NULL)
    {
        return $realip;
    }

    if (isset($_SERVER))
    {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
            foreach ($arr AS $ip)
            {
                $ip = trim($ip);
                if ($ip != 'unknown')
                {
                    $realip = $ip;
                    break;
                }
            }
        }
        elseif (isset($_SERVER['HTTP_CLIENT_IP']))
        {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        }
        else
        {
            if (isset($_SERVER['REMOTE_ADDR']))
            {
                $realip = $_SERVER['REMOTE_ADDR'];
            }
            else
            {
                $realip = '0.0.0.0';
            }
        }
    }
    else
    {
        if (getenv('HTTP_X_FORWARDED_FOR'))
        {
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif (getenv('HTTP_CLIENT_IP'))
        {
            $realip = getenv('HTTP_CLIENT_IP');
        }
        else
        {
            $realip = getenv('REMOTE_ADDR');
        }
    }

    preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
    return $realip;
}
  1. 连接多个ID,以便创建像这样的查询: "IN('a','b')";
function implode_ids($array){
    $ids = $comma = '';
    if (is_array($array) && count($array)){
        foreach($array as $id) {
            $ids .= "$comma'".intval($id)."'";
            $comma = ', ';
        }
    }
    return $ids;
}
2007-09-07 149 mysql php 笔记