一.默认目录在哪儿?
开始时面对该xampp集成开发环境的相关配置有点不知所错,于是便先想着找httpd.conf,通过该文件,对该集成环境的配置文件关系有了大致了解,具体操作如下;
cd /opt/lampp/etc
vi httpd.conf
默认ServerName
默认网页等资源所在目录:
对其它配置文件的包含引入:
打开linux的hosts文件,我们可以看到对应的主机名(Hostname)和域名(Domain)映射关系:
vi /etc/hosts
二.让php在命令行中跑起来
经过查阅相关资料,要让lampp的php在ubuntu中能执行起来,需要添加相关的环境变量:
sudo gedit /etc/profile
export PATH=/opt/lampp/bin:$PATH
使配置立即生效:
source /etc/profile
查看环境变量是否成功加入:
echo $PATH
这时建立一个用来测试的php文件,存放在 /home/yang/Downloads/1.php
<?php
$i="hello world";
echo "该变量是:"."$i";
echo "\n";
?>
在命令行中进行执行测试:
nice! 测试通过,可以进行下一步了.
三.php的相关配置
1.查看php在apache中的相关配置
打开/opt/lampp/etc/httpd.conf文件,可看到php模块的载入部分为:
在该文件此处可配置.php文件的执行方式:
增添内容为:
#设定三种文件后缀都又php模块来"执行"
Add AddType application/x-httpd-php .php .php3 .ppp
在/opt/lampp/etc/extra/httpd-xampp中,也可以发现起到相同作用的配置语句:
2.配置php.ini
通过localhost--->点击主页中的php.ini 我们可知php.ini在该集成环境中的默认位置
用vi 打开该文件并使用vi 的search功能找到时区设置:
sudo vi /opt/lampp/etc/php.ini
按住 shift+: -----> 输入 /timezone ----> n键查找下一个-->退出并保存
这样就将时区设置成我国本地.
四.测试数据库连接
在/opt/lampp/htdocs/ 目录下,我们写测试文件 2.php
<?php
//数据库连接测试
$conn = mysql_connect("localhost","root","123");
if($conn)
{
echo "数据库连接成功";
}
?>
在浏览器中地址拦输入如下地址,如果显示"数据库连接成功"则说明该部分工作正常.
五.虚拟主机配置
1.端口监听
端口:就是一个数字,目的是让一台电脑(对外只有一个IP)能够对外提供多项服务,行业默认的有如下常见服务和端口号:
web服务:80
ftp服务:21
邮件收取服务:110
mysql数据库服务:3306
一台电脑中,有6万个端口,但通常一台服务器,一般只提供几个或10几个服务.apache的端口监听设置,是指apache这个软件针对当前服务器哪些端口提供web服务.
apache中的端口监听设置为:
我们新增一个808端口进行测试:
可见,新增的端口号起到了作用.
2.主机配置关键项
主机,虚拟主机,web站点,是指一个可以通过浏览器并使用某个域名进行访问的"web应用".
一个主机(站点),最核心的就两件事:
主机(站点)的名字: ServerName "主机名"
主机(站点)的实际文件夹位置: Documentot "站点的实际完整路径"
apache 的作用其实就是一个"转换"角色:将当前电脑中的某个文件夹,对外以某个域名(站点)的方式展现出来,换句话说站点的本质就是一个文件夹.
/opt/lampp/etc/httpd.conf 中的默认有关配置为:
当一个请求通常域名解析进入到当前apache并端口匹配成功后,apache就会开始提供服务:
1.在站点设置中找ServerName项,看是否匹配请求中的主机名;
2.如果找到,则在对应的目录(DucumentRoot配置项)中找相应的文件(可能是index.php或其他)
3.如果找到,则返回该文件(或调用php语言模块执行后返回)
4.如果没找到对应请求中的主机名,那么就将第一个主机当做准备提供服务的主机
由此可见,只要ip解析和端口能够进入到当前服务器并匹配apache的端口设定,则apache一定会提供服务,即使主机名不匹配.
根据上述思想我们来进行一些测试:
将/opt/etc/httpd.conf 中的三个地方修改:
并在 /etc/hosts中进行如下增添:
/opt/lampp 用来测试的php文件为:
<?php
echo "you are visiting the resource by self configuration";
?>
在浏览器中测试:
3.配置文件夹访问权限
文件夹的访问权限在该标签下进行:
常见设置语句:
<Directory "/opt/lampp/htdocs/">
#下一行用于设定"可显示文件列表"(当无显示网页的时候)
Options Indexes
#用于设定权限的判断顺序:先拒绝,后允许
Order deny,allow
#允许所有(这里没有设定拒绝)
Allow from all
</Directory>
我们访问一个站点的时候,可以设定要访问的网页,比如 www.dachongzi.com/index.php,也可以不指定如:www.dachongzi.com
对于后一种情况,apache就可以设定"默认网页"以提供给用户,形式为:
此时,对于没有明确要访问网页的请求,会按顺序从前往后找这些文件,找到后就"返回"给用户.但是,如果最终都没有找到,Options中的Indexes 就发挥作用了:显示该文件夹中的所有文件.
我们也可以将DirectoryIndex设置项放在一个单独的站点或单独的文件夹中,则只对该单独的站点或单独的文件夹起作用.
<Directory "/opt/lampp/htdocs/">
#下一行用于设定"可显示文件列表"(当无显示网页的时候)
Options Indexes
#用于设定权限的判断顺序:先拒绝,后允许
Order deny,allow
#允许所有(这里没有设定拒绝)
Allow from all
#DirectoryIndex设置,此时只对该文件夹有效
DirectoryIndex 1.php
</Directory>
4.主机别名设置
在应用中,我们常常可以使用以下两种方式来访问一个站点:
http://www.dachongzi.com
http://abc.com
通常,现在越来越流行后者,此时,就相当于"2个站点(主机名)"但访问的是一个内容
此时就需要使用主机别名来实现:
ServerAlias 别名1 别名2 别名3 ...
5.文件夹访问控制的文件控制方式
通常,我们在config配置文件中,使用Directory 配置项,目的是用来控制文件夹的访问权限.我们也可以使用一个独立的文件来控制文件某文件夹的访问权限,该文件名必须是: .htaccess
注意:
1.只有后缀和点号(无文件名部分);
2.该文件必须放在要被控制访问权限的文件夹中(不同的文件夹可以放不同的该文件);
3.其"上级文件夹"(通常是Directory设定中的文件夹)必须使用如下代码允许 .htaccess发挥作用:
AllowOverride All
4. .htaccess 文件中出现代码,几乎可以跟Directory设定出现的代码一样;
5.如果 .htaccess 文件有效,则其设置会覆盖上级设置;
6.此.htaccess文件修改后可以立即发挥作用,无需重启apache.
6.目录别名设置Alias
在一个站点中,如果不存在某个文件夹(目录),我们可以通过配置项,来做到"对外"看起来却存在一样,比如:
http://www.dachongzi.com/phpmyadmin/ 假设站点中不存在 phpadmin 目录
但是我们可以让该地址"可访问",这就是目录别名(虚拟目录)
打开 /opt/lampp/etc/extra/httpd-xampp.conf 我们能看到相关设置:
7.多站点配置
首先,在/opt/etc/httpd.conf 中打开多站点配置文件:
对httpd-vhosts.conf文件修改进行多站点配置:
#设置 www.dachongzi.com 站点
<VirtualHost *:80>
ServerName www.dachongzi.com
#设置主机别名,即用该别名也可以访问(前提是域名解析正确)
ServerAlias dachongzi.com
#设置主机目录
DocumentRoot "/opt/lampp/htdocs/myweb"
#下一行的文件夹路径要跟上一行的DocumentRoot一样
<Directory "/opt/lampp/htdocs/myweb">
Options Indexes
AllowOverride All
Order allow,deny
allow from all
deny from 192.168.3.33
DirectoryIndex index.php page1.php page2.php
</Directory>
</VirtualHost>
经测试,多站点配置成功起作用!
下部分,将通过大量的php示例从简单到复杂探索php