php mysql apache 配置笔记

    前天专门安排了mysql apache php
,即使网上广大顿时地点的事例,可是多凡是作者又回顾写的,所以难免出笔误的地点。
要那些事物,正是新手很迷惑的地点。一下凡自家的设置笔记,在Centos虚拟机上安装成功。
普通话的参阅:http://xieyu.blog.51cto.com/213338/59749
英文的参考 How to Install MySQL 5.0 on
Linux
How
to Install PHP 5 on
Linux
How
to Install Apache 2 on
Linux

1.开启mod_rewrite
将#LoadModule rewrite_module modules/mod_rewrite.so
这行的#去掉

mysql apache php 安装过程。
将apache ,mysql
,php 的tar.gz 文件复制到/home/tmp目录。接着执行下的命令
    mysql 安装     1 cd /home/tmp
    2  groupadd mysql
    3  useradd -g mysql mysql
    4  tar -zxvf mysql-5.1.33.tar.gz
    5  cd mysql-5.1.33
    6  ./configure –prefix=/usr/local/mysql
    7  make
    8  make install
   14  cd /usr/local/mysql
   15  chown -R root .
   17  bin/mysql -u root -p
   18  chgrp -R mysql .(注意起个.)
   21  cd /home/tmp
   23  cd mysql-5.1.33
   25  ln -s /usr/local/mysql/ /usr/local/mysql
   26  cp support-files/my-small.cnf /etc/my.cnf 
    修改my.cnf 在[sqld]下边添加user=mysql.
   27  chown root /etc/my.cnf
   28  chgrp root /ect/my.cnf
   30  chmod 644 /etc/my.cnf
   33  /usr/local/mysql/bin/mysqld_safe –user=mysql &
   36  cp support-files/mysql.server /etc/init.d/mysql
   37  chmod 755 /etc/init.d/mysql
   38  chkconfig –add mysql
   39  chkconfig –level 35 mysql on
   41  /usr/local/mysql/bin/mysql_install_db  –user=mysql
   42  /usr/local/mysql/bin/mysql -u root(即便可以进mysql
命令行,表明mysql 配置成功。)

2.修改httpd.conf
1)将公的网站目录配置中之
AllowOverride None 改为AllowOverride All

edit /etc/my.cnf

2)修改Options的属性
提出转也Indexes FollowSymLinks

 [client]
 + default-character-set=utf8
 [mysqld]
 + default-character-set=utf8
 [mysql]
 + default-character-set=utf8

FollowSymLinks
服务器允许在斯目录中采纳标志连接。
Indexes
要一个射到目录的URL被请,而以此目录中同时从未DirectoryIndex(例如:index.html),那么服务器会回到由mod_autoindex生成的一个格式化后底目列表。
征:由于当下apache2.2本子后Options默认的值是None,导致启用.htaccess后出现403错误。这多少个题材困扰了分外遥远,因为最先没有在意到者问题。所有大丰裕日子在该地不可能测试re_write效率的先后。

  apache安装,请先进入/home/tmp目录(cd /home/tmp)
   44  tar -zxvf httpd-2.2.13.tar.gz
   45  cd httpd-2.2.13

前日清晨看apache的error.log时看
[Sat Aug 09 23:06:19 2008] [error] [client
127.0.0.1] Options FollowSymLinks or
SymLinksIfOwnerMatch is off which implies that RewriteRule directive is
forbidden: G:/hekey/www/111/post/0, referer:
http://localhost/111/admin.php?go=misc_urlrewrite
谬误的上才了然凡是Options的问题

   46  ./configure –prefix=/usr/local/apache2 –enable-so
–enable-rewrite –enable-auth-digest=shared –enable-ssl
–enable-deflate


   47  make
   48  history
   49  make install
   50  cp /usr/local/apache2/bin/apachectl  /etc/init.d
   51  chmod 755 /etc/init.d/apachectl 
   54  /usr/local/apache2/bin/apachectl start

在网上检索了重重篇有关配置apache
mod_rewrite的稿子,发觉这篇最有由此,我们用的而参看一下。

    php的安装    56  cd /home/tmp
   58  tar -xzf php-5.3.0.tar.gz
   59  cd php-5.3.0

1,通过php提供的phpinfo()函数查看环境布置,通过Ctrl+F查找到“Loaded
Modules”,其中列有了有apache2handler已经打开之模块,假如中间包括“mod_rewrite”,则既匡助,不再需要持续设置。
假设无打开“mod_rewrite”,则打开目录
您的apache装目录“/apache/conf/”
下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule
rewrite_module”,将前方的”#”号去即可。假如没翻动找到,则到“LoadModule”
区域,在终极一行在“LoadModule rewrite_module
modules/mod_rewrite.so”(必选独占一行),然后又开apache服务器即可。

./configure –prefix=/usr/local/php \
–with-apxs2=/usr/local/apache2/bin/apxs \
–with-mysql=/usr/local/mysql \
–with-pdo-mysql \
–with-zlib \
–with-libxml-dir \
–with-xsl \
–enable-mbstring \
–enable-zend-multibyte \
–enable-sockets \
–enable-soap \
–enable-zip

2, 让apache服务器匡助”.htaccess”
哪些被祥和之地头APACHE服务器协理”.htaccess”呢?其实要简单修改一下apache的httpd.conf设置就可以给APACHE
持.htaccess了。打开httpd.conf文件(在那里?
APACHE目的CONF目录里面),用文本编辑器打开后,查找
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
改为
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
就是可了

   62  make
   65  make install
   修改apache httpd.conf(apache/conf/httpd.conf)
长如下一些:
LoadModule php5_module modules/libphp5.so

3,建立 “.htaccess” 文件
设假设当windows平台下,刚起还真不知道怎么建立”.htaccess”文件,因为是文件实际上并未公文称,仅仅只有扩大名,通过平日情势是无力回天树立者文件的,别着急,顿时报告您二种模式:
老三栽艺术仍然先行创立一个htaccess.txt的公文文件(当然,这些文件文件的名而可随便取),然后有两种植艺术给这么些文件再度命名:(1)用记事本
打开,点击文件–另存为,在文件称窗口输入”.htaccess”,注意是全黑色部分,也尽管是含英文引号,然后点击保存就行了。(2)进入cmd命令
窗口,通过cd切换当刚建立htaccess.txt文件之文书夹,然后输入指令:rename
htaccess.txt .htaccess
,然后点击键盘Enter键即可。(3)通过ftp连接htaccess.txt所当文书夹,通过ftp软件再命名。
这就是说我们亟须要起五只“.htaccess”
文件,里面又输入什么内容也?基本的尺码是这样,根目录必须暴发一个,用于重定向(URl重写)所有的央求都会晤转移至到index.php(交
给前端控制
器);”./application”文件夹下必要一个,用于拒绝所有对该公文夹内容之直白访问(比如
http://localhost/application/models/User.php),这样做是因为所有访问请求必选通过前端控制器来分配访
问,其次为安全;“./library”文件夹下之“.htaccess”同前;”./public”文件夹下必将选建一个,因为这文件夹的文本全体凡是
供前端直接看的,因而须撤消URl重写。以下是4单“./htaccess”文件之情节:
./.htaccess
RewriteEngine on
RewriteRule !/.(js|ico|gif|jpg|png|css)$
index.php
./application/.htaccess
deny from all
./library/.htaccess
deny from all
./public
RewriteEngine off
实际上,apache的url重写效率吗得以从来当httpd.conf文件中开展安装,这里虽无现实说了,网上有关的科目也大多。

AddType application/x-httpd-php .php


   68  cp php.ini-development /usr/local/php/lib/php.ini
   69  /usr/local/apache2/bin/apachectl start
   70  /usr/local/apache2/bin/apachectl stop
   71  /usr/local/apache2/bin/apachectl start

rewrite标志

**附:mysql 允许远程连接

R[=code](force redirect) 强制外部重定向
强制在代表字符串加上http://thishost\[:thisport\]/前缀重定向到外部的URL.如果code不指定,将用缺省的302
HTTP状态码。
F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
P(force proxy) 强制行使代理转发。
L(last rule) 注明当前规则是最后一久规则,停止分析后规则之重写。
N(next round) 重新于第一长条规则起先运行重写过程。
C(chained with next rule) 与生一致漫漫规则关联
假若规则匹配则正常处理,该标志无效,倘使不般配,那么下有关乎的平整都超了。
T=MIME-type(force MIME type) 强制MIME类型
NS (used only if no internal sub-request) 只用于不是内部子请求
NC(no case) 不区分轻重缓急写
QSA(query string append) 追加请求字符串
NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1/%3d$1 [R,NE]
将可以正确的将/foo/zoo转换成/bar?arg=P1=zed
PT(pass through to next handler) 传递给下一个拍卖
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会见交/def规则处理
Alias /def /ghi
S=num(skip next rule(s)) 跳过num条规则
E=VAR:VAL(set environment variable) 设置环境变量

**/usr/local/mysql/bin/mysql -u root -p  (进入mysql)
use mysql;
SELECT `Host`,`User` FROM user;
UPDATE user SET `Host` = ‘%’ WHERE `User` = ‘root’ LIMIT 1;
flush privileges;
注意在mysql 命令行格局下自然假设输入”;”.

rewrite时服务器变量: HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE,
HTTP_HOST, HTTP_ACCEPT
connection & request: REMOTE_ADDR, QUERY_STRING
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL
system stuff: TIME_YEAR, TIME_MON, TIME_DAY

pdo_mysql
wget
http://pecl.php.net/get/PDO\_MYSQL-1.0.2.tgz
tar xzvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
./configure –with-php-config=/usr/local/php/bin/php-config
经过configure就可以make了
make
make install注意pdo_mysql的全路径,我之是:
/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
然后在/usr/local/lib/php.ini
累加同样句:
extension=/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
复开动apache即可看到就加载pdo_mysql成功。

Rewrite规则表明式的证实:
. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可挑选的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到几近单字符

 

  • 匹配1到大半只字符
    ^ 字符串开头标志
    $ 字符串截止标志
    /n 转义符标志

mysql 的config例子

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个非凡的变量调用(1 <= N <= 9)

 

RewriteCond标志符 ‘nocase|NC'(no case)忽略大小
‘ornext|OR’ (or next condition)逻辑或,可以又匹配多独RewriteCond条件

./configure –prefix=/usr/local/mysql-5.1.59 –enable-assembler
–with-charset=utf8 –with-collation=utf8_general_ci
–with-extra-charsets=complex –enable-thread-safe-client
–with-big-tables –with-readline –with-ssl –with-embedded-server
–enable-local-infile –with-plugins=partition,innobase,myisammrg

RewriteRule适用的标志符
‘redirect|R [=code]’ (force
redirect)强迫重写啊因http起头的外部转向(注意URL的更动)
如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重写啊禁止访问
‘proxy|P’ (force proxy)重写吗经过代办访问的http路径
‘last|L’ (last rule)最终之重写规则标志,假诺匹配,不再举办后的条条框框
‘next|N’ (next round)循环同一个平整,直到不可知满足匹配
‘chain|C’ (chained with next
rule)假使配合该规则,则持续下的发Chain标志的规则。
‘type|T=MIME-type’ (force MIME type)指定MIME类型
‘nosubreq|NS’ (used only if no internal
sub-request)假使是外部子请求虽超过了
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查询字符串
‘noescape|NE’ (no URI escaping of
output)禁止URL中之字符自动转义成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next
handler)将重写结果以于mod_alias
‘skip|S=num’ (skip next rule(s))跳了下面几乎单规则
‘env|E=VAR:VAL’ (set environment variable)添加环境变量

实际操作

例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L]
这里”-”表示没替换,浏览器也IE和Opera的访客将于禁访问。

例子:
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)/.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

界定目录只可以展现图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*/.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule>