注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

apache+php+mysql网站环境搭建及常见配置(Mac OS X 10.8,Ubuntu)  

2013-02-25 17:21:01|  分类: server |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

做web渗透测试,搭建网站是第一步,搭建的过程中可以了解各个组件的工作原理,相应的也就了解的各个组件的脆弱点。本篇文章重点记录了如何在Mac OS X上配置Apache+PHP+MySQL,其中操作系统版本不同,安装方法也会有所变化,比如说mac os x 10.8就取消了web共享服务与个人网站。

一、Mac OS X

首先介绍Mac OS X上环境搭建的方法,一共分为6步,分别为启动Apache(mac 内置apache),运行php(mac 内置php,这也是我喜欢mac的原因,内置很多东西),安装MySQL,安装phpMyAdmin,安装Mcrypt(mac上有点麻烦,需要安装xcode,autoconf,mcrypt),虚拟机配置(基本上各种组件的配置方法,各个平台是通用的,只是要区别一下模块的格式,例如windows上是dll,Linux上是so,Mac OS X上是dylib,配置文件的存放路径)

1. 启动apache

方法1:打开系统偏好设置-共享-web共享,Mac OS X 10.8取消了 web共享,因此采用下面的方法

方法2:打开终端,运行sudo apachectl start

下面是常见了apache操作

1sudo apachectl start

2sudo apachectl restart

3sudo apachectl stop

4sudo apachectl configtest检查配置文件中的语法是否正确

5sudo apachectl status显示服务器摘要的状态信息

6sudo apachectl fullstatus显示服务器完整的状态信息

7sudo apachectl graceful重新启动apache服务器,但不会中断原有的连接

(8)sudo apachectl -v 查看apache版本

验证是否开启成功

a. 本机网站的根目录在 /Library/WebServer/Documents/

本机用户可以通过http://localhost/与http://127.0.0.1/来访问

局域网用户可以通过http://本机ip地址/ 来访问

 

b. 个人网站的根目录在~/Sites/ 下

本机用户可以通过http://localhost/~danqingdani/http://127.0.0.1/~danqingdani/ 来访问

局域网用户http://192.168.1.11/~danqingdani/ 来访问

 注:Mac OS X 10.8移除了这个目录


2.运行PHP


(1)修改
httpd.conf 

sudo vim /etc/apache2/httpd.conf

找到下面的语句,去除前面的#

LoadModule php5_module libexec/apache2/libphp5.so

(2) 修改php.ini

sudo cp /etc/php.ini.default /etc/php.ini

(3)重启Apache 

sudo apachectl restart

(4) 验证是否能正确运行php文件:

sudo cp /Library/WebServer/Documents/index.html.en  /Library/WebServer/Documents/info.php

在info.php增加

<?php phpinfo(); ?>


3.安装MySQL

mysql在mac os x上的安装及配置交其他平台,有较大的区别,特别要注意socket地址,php.ini默认配置地址与Mac版本的mysql的socket地址是不同的

(1)下载mysql,选择合适的版本

(2)我选择的是dmg最新版本,dmg包括4个文件,

首先安装主安装文件mysql-5.6.10-osx10.7-x86_64.pkg,mysql默认安装到/usr/local/

然后安装MySQLStartupItem.pkg,该文件的作用是支持MySQL开机自动启动

最后安装MySQL.prefPane,该文件的作用是可以在系统偏好中启动或停止mysql服务

 (3)配置环境变量

vim ~/.profile

增加export PATH="$PATH:/usr/local/mysql/bin/"

source ~/.profile

(4)设置密码

mysqladmin -u root password 

(5)测试是否配置成功

<?php

$link = mysql_connect("localhost","root","password") or die("can not connect mysql server:

 

".mysql_error() );

 

echo " success connecton !";

 

mysql_close($link);

?>

(5)上面步骤mysql_error会报“No such file or directory”的错误,我们运行info.php发现,

php默认的socket地址是 /var/mysql/mysql.sock

apache+php+mysql网站环境搭建(Mac OS X,Ubuntu) - 碳基体 - 碳基体
apache+php+mysql网站环境搭建(Mac OS X,Ubuntu) - 碳基体 - 碳基体
apache+php+mysql网站环境搭建(Mac OS X,Ubuntu) - 碳基体 - 碳基体
 而mysql默认socket地址是/tmp/mysql.sock

dani-2:Documents leedani$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.6.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> status
--------------
mysql Ver 14.14 Distrib 5.6.10, for osx10.7 (x86_64) using EditLine wrapper

Connection id: 10
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.10 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 42 min 30 sec

因此需要修改php.ini

sudo chmod +w /etc/php.ini

sudo vim /etc/php.ini 


pdo_mysql.default_socket= /tmp/mysql.sock
mysql.default_socket =
/tmp/mysql.sock
mysqli.default_socket =
/tmp/mysql.sock


sudo apachectl restart


4. 安装phpMyAdmin

下载phpMyAdmin

tar jxvf phpMyAdmin-3.5.7-all-languages.tar.bz2

mv phpMyAdmin-3.5.7-all-languages/ phpmyadmin/

sudo mv phpmyadmin/ /Library/WebServer/Documents/

访问 http://localhost/phpmyadmin 即可


 5. 安装PHPMCrypt扩展库

(1).下载libmcrypt

tar zxvf libmcrypt-2.5.8.tar.bz2

cd ~/Downloads/libmcrypt-2.5.8

./configure --disable-posix-threads --enable-static

make

sudo make install

 (2).下载对应版本的php源码

dani-2:lib leedani$ php -v
PHP 5.3.15 with Suhosin-Patch (cli) (built: Aug 24 2012 17:45:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

(3).编译mcrypt模块

brew install autoconf (brew安装方法

tar zxvf php-5.3.15.tar.gz

cd ~/Downloads/php-5.3.15/ext/mcrypt/

phpize

./configure

make

sudo make install

(4).编辑php.ini

sudo vim /etc/php.ini 

增加

extension=mcrypt.so

或者

extension=/usr/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so


sudo apachectl restart


6.  设置虚拟主机

(1)开启虚拟主机功能

sudo vim /etc/apache2/httpd.conf

 修改Include /private/etc/apache2/extra/httpd-vhosts.conf 去掉  

sudo apachectl restart

(2)配置虚拟主机文件 httpdvhost.conf,

sudo vi /etc/apache2/extra/httpd-vhosts.conf  

默认开启了下面两个作为例子的虚拟主机,但实际上,这两个虚拟主机时不存在的

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot "/usr/docs/dummy-host.example.com"

    ServerName dummy-host.example.com

    ServerAlias www.dummy-host.example.com

    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"

    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host2.example.com

    DocumentRoot "/usr/docs/dummy-host2.example.com"

    ServerName dummy-host2.example.com

    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"

    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common

</VirtualHost>

注释掉上面的配置,增加如下配置

<VirtualHost *.80>
ServerAdmin danqingdani@gmail.com
DocumentRoot "/Library/WebServer/Documents"
ServerName www.tanjiti.com
ErrorLog "/private/var/log/apache2/tanjiti-error-log"
CustomLog "/private/var/log/apache2/tanjiti-access-log" common
</VirtualHost>

sudo apachectl restart


(3)设置/etc/hosts

sudo vi /etc/hosts, 

添加 

127.0.0.1 www.tanjiti.com

就可以通过http://www.tanjiti,.com访问

局域网内用户可以先将 ip www.tanjiti.com添加到/etc/hosts中,然后通过http://www.tanjiti.com访问

 

二、Ubuntu

Ubuntu上的环境搭建就非常简单了,Ubuntu是我最喜欢的Linux系统,他的终端及软件库非常棒,遗憾的是图形化界面占用的资源太坑爹了

1. 安装mysql

sudo apt-get install mysql-server

2. 安装apache2

sudo apt-get install apache2 

测试:http://localhost

3.安装php

sudo apt-get install php5 libapache2-mod-php5

sudo /etc/init.d/apache2 restart

测试:

sudo gedit /var/www/info.php

<?php phpinfo(); ?>

http://localhost/info.php

4.安装其他(使得各个组件联系起来)

sudo apt-get install php5-mysql libapache2-mod-auth-mysql
php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt
php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite
php5-tidy php5-xmlrpc php5-xsl php5-common


sudo /etc/init.d/apache2 restart

5.安装phpmyadmin

sudo apt-get install phpmyadmin

sudo /etc/init.d/apache2 restart

建立apachephpmyadmin的联系

方法一:

sudo vi /etc/apache2/apache2.conf

include /etc/phpmyadmin/apache.conf

方法二:

sudo ln -s /usr/share/phpmyadmin /var/www

6.打开模块重写功能

sudo a2enmod rewrite(打开模块重写功能)

sudo /etc/init.d/apache2 restart

7.测试mysql安装

<?php

$link =mysql_connect("localhost","root","xxxxx") or die("can not connect mysql server: ".mysql_error() );

echo " success connecton !";

mysql_close($link);

?>

 

三、Apache httpd.conf常见配置

1. LoadModule php5_module libexec/apache2/libphp5.so 使得Apache与PHP关联起来

2. 网站根目录DocumentRoot "/Library/WebServer/Documents"

3. 访问权限设置

<Directory "/Library/WebServer/Documents">

     Options -Indexes FollowSymLinks MultiViews

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

4.文件访问

<Files ~ "^\.ht">

    Order allow,deny

    Deny from all

    Satisfy all

</Files>


 四、PHP php.ini 常见配置(主要是安全配置)

1. session.save_path 保存会话信息的目录

2.cgi.force_redirect ,设置为0表示不强制运行在cgi模式下)

3   safe_mode = On 安全模式

4.   safe_mode_gid = On安全模式

5 .  safe_mode_include_dir文件存取限制

6. safe_mode_exec_dir 指定可以执行的外部应用程序应该放置的路径名。会影响system\exec\popen\passthru等函数的运行,shell_exec' ' 不会受影响。文件夹路径名用“/”分割

7.    safe_mode_allowed_env_vars = PHP_ 表示php程序可以更改以PHP_开头的环境变量

8.    safe_mode_protected_env_vars = LD_LIBRARY_PATH表示php程序不可以更改以LD_LIBRARY_PATH 开头的环境变量

9.    disable_functions 指定不允许执行的函数,不同的名称以逗号隔开

10.   magic_quotes_gpc 魔术引号,自动转义HTTP请求数据(GET POST COOKIE)

11.  magic_quotes_runtime 魔术引号,自动转义从外部数据库SQL或字符串exec()中返回的数据

12. magic_quotes_sybase 使用单引号来转义单引号,而不是使用反斜杠。双引号、反斜杠以及NULL不会受影响 

13. session.use_trans_sid =0 关闭透明化session id功能(透明化是指当浏览器的http请求并没有使用cookie来指定sessionid时,就在所有的相对链接中放入session_id

14. session.use_only_cookies =1只从cookie检查session_id

15.   expose_php = Off 不显示服务器信息的X-Powered-By,

16.    文件上传限制

file_uploads = On 是否允许通过http上传文件

max_file_uploads = 20 单次请求允许上传的文件数量

upload_tmp_dir = 文件上传的临时存储地方

upload_max_filesize = 2M 上传文件的大小限制

17. post_max_size = 8M PHP POST 数据大小范围

18.    open_basedir 限制php只能在指定的目录中打开文件,该选项的值会被当作前缀使用 ;确认enable_dl选项是关闭的,否则open_basedir的限制可能会被绕过

19.    display_errors设置错误信息显示选项,当关闭该选项的时候,最好将log_error设置为有效,以便看到出错信息

20.    error_reporting 控制错误日志的显示详细程度

21.    memory_limit 只在php指定了enable-memory-limit方式编译时才会生效;可以使用该选项对最大内存使用量进行限制

22.    register_globals = Off需要关闭该项,用超级数组如$_GET$_POST$COOKIE取而代之

23.    enable_dl = Off用于控制dl()函数是否生效,该函数允许在运行时加载PHP扩展。 使用dl()函数可能导致攻击者绕过open_basedir限制,因此除非有必要,必须在你的应用中禁止它

24. allow_url_fopen 允许是否如同本地文件一样引用远程资源,

25. allow_url_include 允许是否能够使用include/require函数来引用远程资源,容易引发远程文件包含漏洞

26. memory_limit

 

参考:

http://dancewithnet.com/2010/05/09/run-apache-php-mysql-in-mac-os-x/ 

http://www.coolestguyplanettech.com/how-to-install-mcrypt-for-php-on-mac-osx-lion-10-7-development-server/

  评论这张
 
阅读(3271)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017