Apache + PHP配置
因工作需要,重新配置了Apache和PHP。想起当年曾经配置过,但是已经忘得差不多了。而且,也没有记录。从我个人来看,确实缺乏这样的训练,从国家教育体系来看,似乎也从未有过做科学记录的训练。中国的瓷器之所以有名气,是因为发展得早,各种能工巧匠各种灵感迸发,精美绝伦,然后各种失传,只留下一个精美的物件,而没有怎样再次制作的记录。到现在也不知道地动仪的内部结构吧?也许是他们没有做记录的习惯,也许是他们不想让别人知道,不想让别人学去自己的看家本领。从历史上中国人的个性来看,后者的可能性大。不是他们没有做记录的习惯,而是他们不想做记录。反观目前已经超越中国、处于世界顶级的德国瓷器,在奥古斯都大帝那个时代,为了仿制中国瓷器,进行了3万多次实验,并记录。可复现、可证实、可证伪,这是科学。需要训练,思维上,行动上。
==============言归正传双层线===============================
Apache安装与配置详解
安装
官方网站:http://www.apache.org/
顶层菜单找到:download
在下面的链接中选择官方推荐的第一个,清华的镜像服务器:
http://mirrors.tuna.tsinghua.edu.cn/apache/
会出现一个目录列表,Ctrl + F,查找httpd,点击进入。
如果想查看详细信息,就搜Apache HTTP Server Download Page,也可以直接打开http://httpd.apache.org/download.cgi
在这个页面上,我们可以看到一些说明和细节信息,各种下载方法。在这里,只说明windows系统的文件的下载方法。
在页面最明显的位置,有个
- 2.4.29 (released 2017-10-23)
点击,会跳到本页面对应的节。如下:
- Source: httpd-2.4.29.tar.bz2 [ PGP ] [ MD5 ] [ SHA1 ] [ SHA256 ]
- Source: httpd-2.4.29.tar.gz [ PGP ] [ MD5 ] [ SHA1 ] [ SHA256 ]
- Binaries
- Security and official patches
- Other files
- Files for Microsoft Windows
是源码和安装文件的下载链接。apache服务器本身不存储文件,一律通过第三方服务器发布,大概是因为全世界的流量太大了,作为一个非盈利组织,无力也没有必要维护。
如果点击Binaries,又会进入目录浏览,兜兜转转又会回到第三方服务器,所以,直接点 a number of third party vendors,或者Files for Microsoft Windows,这俩链接是一样的,会出现一个第三方的列表:
如果想要纯的Apache服务器,就选前两个,后面三个是集成了mysql和php的版本。
下载后,解压,我放在了c:/apache24目录下。
配置
打开apache24/conf目录,用文本编辑器打开httpd.conf文件。
查找【ServerRoot "${SRVROOT}"】
(说明:因文件内有一些标记带有引号,故凡是需要查找的,一律用中文中括号标记,以便区别,使用时只需查找中括号内的内容即可,下同)
此处的${SRVROOT}"是apache配置文件中的变量,它的上一句是Define SRVROOT "/Apache24",意思是,把SRVROOT这个变量的值定义为/Apache24,
这里我们根据实际情况调整一下,改成Define SRVROOT "c:/Apache24",也就是我们Apache安装目录的绝对路径。
这个配置文件中,使用了很多${SRVROOT}变量来设置apache的安装路径,比如DocumentRoot,所以这里最好把这个变量用上,就不必到处改了。
查找【Listen 80】,这里是默认的,如无必要,不必修改。
查找【ServerName】
ServerName localhost:80
此处是主站点名称,即网站域名,根据实际情况修改
查找【ServerAdmin】
ServerAdmin xxx@163.com
此处是管理员的邮件地址,可自动向管理员发日志等邮件。
查找【DocumentRoot】
DocumentRoot "${SRVROOT}/htdocs"
此处是网站的根目录,SRVROOT即是前面定义的安装目录,可根据实际情况调整。可以设置在安装目录之外。
查找【<Directory />】
把其下的Require all denied 改为Require all granted
最后,使用httpd.exe文件进行安装,可以cmd进入D:\Apache24\bin目录执行,也可以任意目录D:\Apache24\bin\httpd.exe。
httpd -k install -n "Apache24"
引号内是自定义的别名。
如果需要删除这个服务:
httpd -k uninstall -n "Apache2.4"
至此,apache配置完毕。此时用http://localhost,应该就可以访问了。
如果外网无法访问,关闭防火墙或设置80端口通过,试试。
虚拟站点的配置
在http.conf 中将 httpd-vhosts.conf包含进来
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
在 httpd-vhost.conf中配置
(1)基于IP的虚拟主机
修改hosts文件,添加3个域名与之对应
192.168.1.11 www.test1.com
192.168.1.12 www.test2.com
192.168.1.13 www.test3.com
建立虚拟主机存放文件的根目录,如
www/test1/1.html
www/test2/2.html
www/test3/3.html
在httpd-vhosts.conf进行如下配置
<VirtualHost 192.188.1.11:80>
ServerName www.test1.com
DocumentRoot "www/test1"
<Directory "www/test1">
Options Indexs FollowSysLinks
AllowOverride None
Order allow deny
allow from all
DirectoryIndex index.html index.htm index.php
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.12:80>
ServerName www.test2.com
DocumentRoot /www/test2/
<Directory "/www/test2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.13:80>
ServerName www.test3.com
DocumentRoot /www/test3/
<Directory "/www/test3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
(2)基于主机名
设置域名映射同一个主机
192.168.1.10 www.test1.com
192.168.1.10 www.test2.com
192.168.1.10 www.test3.com
设置存放网页的根目录
www/test1/1.html
www/test2/2.html
www/test3/3.html
在使用基于域名的虚拟主机时,必须指定服务器的IP地址和可能的访问端口来使主机接受请求,可以
使用NameVirtualHost指令来配置,如果服务器上所有的IP都会用到,则可以使用来表示,
在NameVirtualHost指定的ip并不会让服务器监听这个IP
然后配置<VirtualHost>
如果在现有的WEB服务器上配置虚拟主机,则必须为现存的虚拟主机也配置<VirtualHost>,其中
ServerName 和 DocumentRoot包含的内容应该与全局的内容一致,且要放在配置文件的最前面,
作为默认主机的配置
NameVirtualHost :80
<VirtualHost :80>
ServerName www.test1.com
DocumentRoot "www/test2"
<Directory "www/test1">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost :80>
ServerName www.test2.com
DocumentRoot "www/test2"
<Directory "www/test2">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost :80>
ServerName www.test3.com
DocumentRoot "www/test3"
<Directory "www/test3">
Options Indexs FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
(3)基于端口
修改httpd.conf
设置为
Listen 8001
Listen 8002
修改虚拟主机配置文件 httpd-vhosts.conf
<VirtualHost *:8001>
ServerName www.test1.com
DocumentRoot "www/test1"
</VirtualHost>
<VirtualHost *:8002>
ServerName www.test2.com
DocumentRoot "www/test2"
</VirtualHost>
此处要注意,如果 httpd-vhosts.conf中配置了80端口的virtualhost的DocumentRoot,就要与httpd.conf中的DocumentRoot一致,否则,以httpd-vhosts.conf中的为准,在httpd-vhosts.conf中找不到DocumentRoot时,才使用httpd.conf中的DocumentRoot。
PHP配置
下载链接:https://windows.php.net/download
注意与线程安全版本配合好,不然会报错,而且你不知道错在哪,先保证这一步是正确的。
Apache服务器下应当使用TS版,即线程安全版,官方说明如下:
TS(Thread Safe) refers to multithread capable builds. NTS(Non Thread Safe) refers to single thread only builds. Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server. For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).
就是TS版可以跑多线程,NTS只能跑单线程。常见的就是Apache和IIS,Apache下用TS,IIS下用NTS。
配置文件是PHP目录下的php-development.ini和php-dist.ini,开发期间把php-development.ini改成php.ini
1. 模块加载:
extension = php_mysqli.dll
2. 修改模块的目录
extension_dir = "D:/php/ext"
也可以将 D:/php ,D:/php/ext 添加到系统环境变量中,此处最好用绝对路径
3. 在Apache中配置php
更改httpd.conf
添加PHP模块
LoadModule php7_module "D:/php/php7apache2_4.dll
配置php.in路径
PHPIniDir "D:/php"
配置AddType
AddType application/x-httpd-php .php
AddType application/x-httpd-php .txt
4. register_globals = Off 设置是否开启全局变量
若设置为On
已GET/POST提交的参数,直接可以使用变量用调用, 建议不开启
5.设置时区:date.timezone =PRC
6.设置session
以上配置完成后,在命令行中运行php.exe,如果一切正常,不会有提示,否则会出现错误提示,例如缺少MSVC环境。
GOOD LUCK!
Apache + PHP配置的更多相关文章
- 【只需3步】源码手动安装Apache以及配置(亲测可行)
作者小波/QQ463431476欢迎转载! redhat6采用centos yum源. 第一步下载apache依赖的软件包并安装 安装 apr下载地址:http://apr.apache.org/do ...
- centos apache svn配置
单独安装svn服务: 安装svn软件 yum install subversion 创建根目录 mkdir -p /var/www/svn 创建版本库repos svnadmin create /va ...
- Apache+PHP 配置随笔
准备安装包 1:安装VC++ 2012(vcredist_x64,我这边服务器为64位) 2:Apache安装包,php安装包 安装后配置工作 1:安装Apache服务,配置环境变量 httpd -k ...
- Apache安装配置步骤
注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...
- Apache服务器安装配置
Apache服务器安装 1.Apache服务器安装 在Linux系统下,apache服务器的安装方式比较灵活,可以使用二进制包安装,比如:rpm包.deb包.已编译好的包.也可以简单的使用y ...
- Apache安全配置方案
Apache安全配置方案 from:http://drops.wooyun.org/%e8%bf%90%e7%bb%b4%e5%ae%89%e5%85%a8/2727 apache的一些配置主要是通过 ...
- apache+php配置中遇到的问题
在安装apache+php配置中遇到的问题: LoadModule php5_module "D:/PHP/php5apache2_4.dll"PHPIniDir "D: ...
- apache性能配置优化
最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...
- Apache的配置
Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...
- Apache https 配置指南
Windows Apache HTTPS配置创建下面3个目录: C:\Program Files\Apache Group\Apache2\conf\sslC:\Program Files\Apach ...
随机推荐
- 最简单的社交分享代码,无需注册OpenID
包含新浪微博.QQ空间.人人网一键分享,无需注册各个开放平台的OpenID,简单易用. //分享 function share() { var shareLink = location.href; v ...
- Ethereum for web developers
我学习以太坊区块链平台已经有一段时间了,这个真是让我越学越兴奋啊.网络上有很多关于以太坊的资料(文章,视频,平台官网),这些我们都很容易就获取到,由于平台还在快速迭代所以相关的资料内容普遍普遍滞后.自 ...
- 2.Swift快速浏览
传统认为,在一个新的语言的第一个程序要在屏幕上显示“Hello world!”.在Swift,可以用一行代码来完成: println("Hello, world!") 如果你已经在 ...
- leetcode笔记:3Sum Closest
一.题目描写叙述 二.解题技巧 该题与3Sum的要求类似.不同的是要求选出的组合的和与目标值target最接近而不一定相等.但实际上,与3Sum的算法流程思路类似,先是进行排序.然后顺序选择数组A中的 ...
- 【Python】Python的安装与个人使用记录
下载 从官网上下载,目前,最新版是Python3,基于项目需求,我们使用的是Python2. 我是在CentOS上安装,下载的是Python-2.7.9.tgz. 安装 tar -zxvf Pytho ...
- linux每日命令(18):whereis命令
whereis命令用于查找文件. 该指令会在特定目录中查找符合条件的文件.这些文件应属于原始代码.二进制文件,或是帮助文件. 该指令只能用于查找二进制文件.源代码文件和man手册页,一般文件的定位需使 ...
- openssl实现CA自签证书和颁发数字证书
1. 测试环境准备: CA签署服务器:192.168.2.181 WEB服务器:192.168.2.180 CA安装openssl WEB服务器使用nginx 2. CA生成自签证书: 2.1 为C ...
- ArcGIS Runtime SDK for iOS之符号和渲染
符号定义了图形外观的非地理方面.它包括了图形的颜色.线宽.透明度等等.ArcGIS Runtime SDK for iOS包含了许多符号类,其中的每个类可以让你以独特的方式指定符号.每个符号的类型也是 ...
- Java中内存溢出与内存泄露
内存溢出 内存溢出(out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给他存了long才能存下的数,就会发 ...
- 提一下InfoQ
昨天在微信读书中整理了一个"架构师"清单,把InfoQ中文社区这两年发布的电子书整理到了一起,分享给了团队成员. 如果你去研究InfoQ中文社区,就会发现其中一个人与之因缘际会的相 ...