windows 配置apache+php+mysql环境
第一部分:系统环境和安装介质
操作系统:Windows Server 2008R2 /Windows 7 64bit
Apache2.4:
Download页面
http://httpd.apache.org/download.cgi
Apache 2.4 Server Binaries下载页面
http://www.apachehaus.com/cgi-bin/download.plx
Apache2.4 安装说明
http://httpd.apache.org/docs/current/platform/windows.html#down
php7:
http://windows.php.net/download#php-7.1
要下载的版本
VC14 x64 Thread Safe (2017-Apr-12 02:23:05)
如果下载
VC14 x64 Non Thread Safe (2017-Apr-12 02:22:49)
是没有php7apache2_4.dll 这个文件的。MySQL:
https://www.mysql.com/downloads/
登录后下载:
mysql-5.6.29-winx64.zip
原本使用mysql-advanced-5.7.17-winx64,后来发现MySQL5.7 有安全配置,初始化后有安全限制,因为本机系统配置原因导致无法登录。故先换为5.6.以后再研究一下MySQL5.7。
vc2015
到这里下载:http://www.microsoft.com/zh-cn/download/details.aspx?id=48145
点下载,之后选择vc_redist.x86.exe / vc_redist.x64.exe下载,运行安装。
需要注意,安装vc14必须开启这3个服务,否则一定会安装失败:
进入服务启动下列服务: windows modules installer、windows update、window defender service
第二部分:安装和配置
1. Apaceh2.4 配置
将apache解压缩,我的httpd路径:D:\Apache24
conf 路径下:
httpd.conf
1. 找到
Define SRVROOT "D:\Apache24"
ServerRoot "${SRVROOT}"
修改Define SRVROOT 的路径,注意有双引号。
2.修改端口:
#Listen 12.34.56.78:8081
Listen 8081
ServerName localhost:8081
3.修改SSL的端口(默认端口443)
\conf\extra 路径下
2个文件中的443 全部替换为 446
httpd-ahssl.conf
httpd-ssl.conf
4.加载httpd服务,启动服务
bin 路径下
方法一
a. ApacheMonitor.exe 启动apache服务监控器
b. 启动apache
方法二:
用管理员权限启动cmd
C:> d:
D:> cd D:\Apache24\bin
--安装apache
D:\Apache24\bin>httpd.exe -k install
--卸载apache
D:\Apache24\bin>httpd.exe -k uninstall
--启动apache
D:\Apache24\bin>httpd.exe -k start
--停止apache
D:\Apache24\bin>httpd.exe -k stop
--重启apache
D:\Apache24\bin>httpd.exe -k restart
浏览网站:
http://127.0.0.1:8081/
https://localhost:446/
2. 配置php7:
将php加压缩,我的php7路径:D:\php-7.1.4
复制php.ini-development后重命名为php.ini
修改httpd(Apache)的配置文件:D:\Apache24\conf\httpd.conf
在“#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule xml2enc_module modules/mod_xml2enc.so”
后面添加如下内容:
PHPIniDir "D:/php-7.1.4"
AddType application/x-httpd-php .php .html .htm
LoadModule php7_module "D:/php-7.1.4/php7apache2_4.dll"
找到<IfModule dir_module>添加index.php
<IfModule dir_module>
DirectoryIndex index.html index.php index.htm
</IfModule>
修改php7的配置文件:
找到
; On windows:
; extension_dir = "ext"
修改为:
extension_dir = "D:/php-7.1.4/ext"
修改控件:(; 表示注释掉,需要用的就需要去掉前面的;号)
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_ftp.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
在操作系统的环境变量Path中最后一行添加php路径:
;D:\php-7.1.4;D:\php-7.1.4\ext
测试php:
在D:\Apache24\htdocs路径下创建文件:
phpinfo.php
文件内容:
<?php
phpinfo();
?>
重启Apache后访问页面:http://127.0.0.1:8081/phpinfo.php
出现php配置说明页面就表示配置正确。
3. 配置MySQL:
mysql-5.6.29-winx64 解压缩到
D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64
复制my-default.ini文件后重命名为my.ini:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[WinMySQLAdmin]
#指定mysql服务启动的启动文件
Server=D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64\bin\mysql.exe
[mysql]
no-auto-rehash
default-character-set=utf8
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64
datadir = D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64\data
port = 3306
server_id = 1
# default-character-set=gbk
#default-character-set=utf8
character-set-server=utf8
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
[client]
#设置mysql客户端的字符集
#default-character-set=gbk
default-character-set=utf8
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
启动MySQL:
C:\>d:
D:\>cd D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64\bin
D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64\bin>mysqld -install
Service successfully installed.
D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64\bin>net start mysql
MySQL 服务正在启动 ...
MySQL 服务已经启动成功。
设置root密码
--password 为root密码,请自行修改
mysql> update user set password=password('password') where user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
--查询一下
mysql> select host,user,password from user;
mysql>exit
--重新登录
--password 为root密码
D:\MySQL\Mysql-Windows\mysql-5.6.29-winx64\bin>mysql -u root -p(password)
D:\Apache\Apache24\htdocs路径下新建文件 dbtest.php :
内容如下:
<?php
header("Content-type: text/html; charset=utf8");
$mysqli = new mysqli("localhost", "root", "password", "mysql");
if(!$mysqli) {
echo"database error";
}else{
echo"php env successful 连接成功";
}
$mysqli->close();
?>
重启Apache后访问页面:http://127.0.0.1:8081/dbtest.php
页面出现“php env successful 连接成功”就表示配置正确。
第三部分:综合测试
创建一个数据库,建一个新表,填写测试数据,通过网站访问数据库中的数据。
1. 创建一个新的数据库,建一张新表
mysql> create database TEST;
mysql>
CREATE TABLE TEST1 (
`ID` varchar(25) NULL,
`NAME` varchar(25) NULL,
`MAIL` varchar(25) NULL,
`PHONE` varchar(25) NULL,
`ADDRESS` varchar(25) NULL,
`BZ` varchar(25) NULL,
PRIMARY KEY(`ID`)
)
mysql>
INSERT INTO `ccejw`.test1(`ID`, `NAME`, `MAIL`, `PHONE`, `ADDRESS`)
VALUES('1', '张三', '_@_._', '1234567890', '地址1')
GO
INSERT INTO `ccejw`.test1(`ID`, `NAME`, `MAIL`, `PHONE`, `ADDRESS`)
VALUES('2', '李四', '_@_._', '1234567890', '地址2')
GO
mysql>use test;
test>select * from test1;
test> select * from test1;
+----+--------+-------+------------+---------+------+
| ID | NAME | MAIL | PHONE | ADDRESS | BZ |
+----+--------+-------+------------+---------+------+
| 1 | 张三 | _@_._ | 1234567890 | 地址1 | NULL |
| 2 | 李四 | _@_._ | 1234567890 | 地址2 | NULL |
+----+--------+-------+------------+---------+------+
2 rows in set (0.00 sec)
在D:\Apache\Apache24\htdocs路径下创建文件testselect.php:
内容如下:
<html>
<head>
<title>浏览器中的记录test</title>
</head>
<body>
<center>
<?php
$db_host="localhost"; //MYSQL服务器名
$db_user="root"; //MYSQL用户名
$db_pass="password"; //MYSQL用户对应密码
$db_name="test"; //要操作的数据库
//使用mysql_connect()函数对服务器进行连接,如果出错返回相应信息
$link=new mysqli($db_host,$db_user,$db_pass,$db_name)or die("不能连接到服务器".mysql_error());
//mysql_select_db($db_name,$link); //选择相应的数据库,这里选择test库
$sql="select * from test1"; //先执行SQL语句显示所有记录以与插入后相比较
$result=mysqli_query($link,$sql); //使用mysql_query()发送SQL请求
echo "当前表中的记录有:";
echo "<table border=1>"; //使用表格格式化数据
echo "<tr><td>ID</td><td>NAME</td><td>邮箱</td><td>电话</td><td>地址</td><td>备注</td></tr>";
while($row=mysqli_fetch_array($result)) //遍历SQL语句执行结果把值赋给数组
{
echo "<tr>";
echo "<td>".$row[ID]."</td>"; //显示ID
echo "<td>".$row[NAME]." </td>"; //显示姓名
echo "<td>".$row[MAIL]." </td>"; //显示邮箱
echo "<td>".$row[PHONE]." </td>"; //显示电话
echo "<td>".$row[ADDRESS]." </td>"; //显示地址
echo "<td>".$row[BZ]." </td>"; //显示备注
echo "</tr>";
}
echo "</table>";
?>
</center>
</body>
</html>
访问网址:
http://127.0.0.1:8081/testselect.php
页面显示:
当前表中的记录有:
ID | NAME | 邮箱 | 电话 | 地址 | 备注 |
1 | 张三 | _@_._ | 1234567890 | 地址1 | |
2 | 李四 | _@_._ | 1234567890 | 地址2 |
至此,基础配置完成。本配置仅能作为测试环境使用,生产环境中最好使用Liunx+Apache+php+mysql/mongodb
基础配置后还需要针对安全做一些安全上的配置,比如修改Apache的默认网站文件路径,最好使用相对路径。开放必要的端口,关闭不需要的端口。
修改mysql/mongodb数据库的密码,尽量不要使用root用户,禁用mysql远程登录等等。