搭建apache+php+mysql环境七部曲

时间:2021-06-16 20:33:29

学了很多东西,发现只要需要再次使用的时候就一下子又不知所措,又得去重新学一遍。为什么会一直这样,现在发现是因为学的新的知识后疏于对知识的总结,导致以为自己明白了,实则不然。


首先说明软件版本:

apache:  httpd-2.2.22-win32-x86-no_ssl.msi

php: php-5.3.13-Win32-VC9-x86.zip

mysql: mysql-5.5.27-win32.msi


软件的安装就不说了,都是下一步下一步。


当3个软件安装好了后就进入比较复杂的环境搭建,万事开头难,对于我们刚接触一门新技术,很多时候都是死在了环境搭建上搭建apache+php+mysql环境七部曲


第一:

php是作为apache的一个模块来运行的,所以首先要做的是进入apache的conf目录下打开配置文件httpd.conf,然后crtl+f查找 loadmodule 指令(大概在128行左右)复制上面的格式后面的内容替换为php目录下php5apache2_2.dll  (这个DLL在php目录下)  

 最终效果:     LoadModule php5_module "d:/amp/php/php5apache2_2.dll"   (目录是根据自己安装软件时的目录决定)


第二:

既然php是作为apache的模块来运行,那么我们就得告诉apache凡是以.php后缀的文件都交给php模块处理。

一共有3种方法,同样是在httpd.conf中配置

第一种:使用AddType指令(大概385行) 按照上面的格式模仿写就行了      如:AddType application/x-httpd-php .php

第二种:使用addhandler指令(不推荐,因为这种指令会导致只要文件名中有.php都会被 当作php文件来解析如abc.php.html)

第三种:使用FilesMatch指令 :

<FilesMatch \.php$>

SetHandler application/x-httpd-php

</FilesMatch>


第三:

php在运行是时候需要载入php的配置文件,因为php作为apache的模块,所以要告诉Apache这个配置文件在哪里。

       1.首先进入php目录,通过查找可以发现有2个后缀名为php.ini-(英文 开发者和生产者)的文件,随便选一个复制一份重命名为php.ini(记住别忘记删除空格)

      2.进入httd.conf配置文件中,找个位置建议就放在loadmudole下面方便查看和修改。用 PHPIniDir指令配置  如:PHPIniDir "d:/amp/php"   (不用写php.ini)


第四:

配置php.ini。要对php进行初始化比如打开扩展目录。打开php.ini 查找Extension指令,配置如:extension_dir = "d:/amp/php/ext"   (大概822行)

然后继续往下打开dll扩展库,如extension=php_gd2.dll、extension=php_mysql.dll、extension=php_mysqli.dll (去掉前面的分号即可)(大概960行)

继续往下配置时区如:date.timezone = PRC   (大概1100行) PRC:*(People's *)


     配置文件的格式都是非常严格的,一定顶格写。每次配置完成后都需要重启apache配置文件才会生效。

      如果某次配置文件后重启Apache发现重启不了,一般都不是网上所云的80端口占用,一般都是你配置文件中格式的问题(如顶格、空格、字母大小写、分号等一系列小疏忽导致的)


第五:

一台服务器如果要代理多个站点的话就的使用基于域名的虚拟主机技术

1.首先进入httpd.conf中查找Virtual hosts指令把他下面的那段指令前面的注释(#号)去掉,表明开启vhost配置。

2.进入apache\conf\extra下找到httpd-vhosts.conf打开后使用NameVirtualHost 指令, 下面已经写好一句其中*号表示所有IP,80表示端口。

3.任意复制下面一个指令段,删除多余的,留下需要用的2个如:

   <VirtualHost *:80>
    DocumentRoot "D:/amp/apache/htdocs"
    ServerName localhost
</VirtualHost>


4.通过浏览器访问某个域名的时候,需要进行域名的解析,首先找本地的hosts文件,如果能解析,就使用本地的配置,如果不能解析,则去外网进行解析。所以我们打开本地hosts文件(在C:\Windows\System32\drivers\etc)打开后根据自己需要配置 如  127.0.0.1   localhost       127.0.0.1   zsc.com

        

/ 和 \ 的使用 写目录时候建议都使用/因为linux下面都是/,为了程序的可移植性应该都是用/


第六:

访问权限配置:

第5中配置好了虚拟主机后如果我们去访问会发现权限被禁止,因为Apache有严格的权限管理,所以我们要用directory指令去配置访问权限,在httpd.conf中找到directory指令段复制下来然后粘贴到httpd-vhosts.conf中如:

<VirtualHost *:80>
    DocumentRoot "C:/Users/Jack/Desktop/zsc" //网站目录
    ServerName zsc.com // 域名
    <Directory "C:/Users/Jack/Desktop/zsc"> //网站根目录
    Options Indexes FollowSymLinks // Indexes表示如果网站如果没有index.html这个文件话就开启索引 FollowSymLinks据说是Linux下的符号链接(不建议打开)
    AllowOverride All //是否开启分布式文件 。后面再说
    Order deny,allow //具体的权限控制 order表示顺序
Allow from all //允许所有配合上面使用(后面总结)
</Directory>


Order deny,allow有默认的效果:Order deny,allow默认允许所有 Order allow,deny默认拒绝所有。

谁先谁后不影响最终判断结果,但都会被判断到

Allow from all或者deny from all 或者 allow/deny from 192.168.1.1等配合使用

如果http.conf和httpd-vhosts.conf都配置了访问权限那么以httpd-vhosts.conf为准


第七:

开启分布式文件。

AllowOverride None 改为 AllowOverride All 就开启了分布式配置。

分布式配置文件,名字是固定的在网站目录中创建名为.htaccess的文件

配置的权限在该目录及其子目录生效。


为什么要这样做的原因是因为在实际开发中开发者的网站是托管给服务器上的,而如果我们每次需要修改访问权限的时候是否都要去叫服务器管理员给我们去修改配置文件呢。这样做显然不可能,所以为什么不能让我们自己在编码的时候就能自己选择控制访问权限岂不是更好。

优点:

分布式配置文件修改之后,不需要重启apache,立即生效。

开发者有*配置权限的机会。



缺点:

性能损失,一旦打开分布式配置文件,Apache会在每个文件夹下搜索.htaccess。




总结:

有些时候配置mysql后测试是否成功时会弹出一个缺少mysql组件加载失败,如果你把错误消息复制到百度上去问,十有八九的人都是说的是端口问题,你会发现无论你怎样弄还是弄不好,因为这和端口没有关系,其实就是你配置php.ini的时候要么没有顶格写,要么多一个空格,要么字母大小写错了,要么多加了一个分号,所以在配置文件时一定要非常细心,尽量复制,少自己敲。比如 Order deny, allow 这句话你发现错误所在了吗?