【LAMP服务器搭建】
1.apache2服务器安装
# sudo apt-get install apache2
2.PHP5安装
# sudo apt-get install php5
# sudo apt-get install libapache2-mod-php5 # 如果安装php5时,没有依赖上libapache2-mod-php5模块,请手动安装
# sudo a2enmod php5 # 配置apache2支持php5
# sudo /etc/init.d/apache2 restart
3.MySQL数据库安装
# sudo apt-get install mysql-server # 其中安装过程中会提示输入进入数据库的root用户密码
# sudo apt-get install libapache2-mod-auth-mysql
# sudo apt-get install php5-mysql
==== 设置MySQL的root密码 ====
输入
# mysql -u root
进入MYSQL控制台,然后输入
# mysql> SET PASSWORD FOR = PASSWORD('yourpassword');
如果成功MySQL会提示
''Query OK, 0 rows affected (0.00 sec) ''
MYSQL命令可以多行执行,但是请您不要忘记,一定要以“;”分号结尾哦
4.安装MySQL数据库管理软件PHPMyAdmin
# sudo apt-get install phpmyadmin # 安装过程中需要选择支持的服务器类型和模块
在浏览器地址栏输入
地址/phpmyadmin
用数据库MySQL的帐户和密码就可以登陆phpmyadmin的管理界面
【LAMP服务器配置】
一.Apache2服务器安全配置
修改配置文件后,都需要从新启动服务,从新启动服务的命令是:sudo /etc/init.d/apache2 restart
1.隐藏apache2服务器版本相关信息
在 /etc/apache2/apache2.conf 配置文件中添加以下信息:
ServerSignature off
ServerTokens Prod
2.不让apache2服务器显示目录信息
在 /etc/sites-available/default 配置文件中删掉 Indexes 参数
Option FollowSymLinks Multiviews
3.设置apache2服务器错误页面404
第一种方法:
用户可以在 /var/www/ 目录下创建一个errors目录,用来存放一些错误页面,诸如 errors/404.html 和 errors/.htaccess 隐藏控制文件,并在 .htaccess 文件中写入以下内容:
ErrorDocument 404 /errors/404.html
在修改/etc/sites-available/default配置文件中的
AllowOverride all
第二种方法:
用户可以在 /var/www/ 目录下创建一个errors目录,在 /etc/apache2/apache2.conf 配置文件中加入
ErrorDocument 404 /errors/404.html
4.解决apache2服务器重启时出现的问题
重启服务时,当出现"apache: Could not reliably determine the server's fully qualified domain name,using 127.0.1.1 for ServerName"
问题时,在 /etc/apache2/apache2.conf 配置文件中加入
ServerName "localhost:80"
二.PHP5的配置
PHP5的配置文件路径:/etc/php5/apache2/php.ini
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Language Options ; [语言选项]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
output_buffering = 1024 # 开启,PHP将把脚本产生的运行结果存放在特殊的内存缓冲区域内,并在得到明确指示时才将其发送出去。
# 通过这样的方式,你甚至可以在脚本中部或者脚本尾部发送特殊的HTTP文件头以及cookie数据。
# 当然,这样会造成脚本运行性能一定程度的下降。用于开启cookie.
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ; [打开包]
;;;;;;;;;;;;;;;;;;
allow_url_include = On # 是否准许include/requir打开URLs (like http:// or ftp://)作为一个文件
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Data Handling ; [数据处理]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
register_globals = On # 默认状况下是Off,这样能对通过表单进行的脚本攻击提供更为安全的防范措施。
# 如果要兼容 php 3.x 脚本,就要开启
# 很多程序的运行跑不动就是因为关闭了它
# PHP6中已经删除此指令
# 开启后,所有的环境变量,get/post变量,cookie变量都将自动注册为全局变量,会造成极大的安全问题,建议关闭
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ; [动态扩展]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
extension=mysql.so # 使PHP5和MySQL数据库配合使用
;;;;;;;;;;;;;;;;;;;;;;;
; Safe Mode ; [安全模式]
;;;;;;;;;;;;;;;;;;;;;;;
safe_mode = On # 启用时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作
# 启用该参数,PHP脚步将之允许访问那些其属主是PHP属主的文件,可有效防止遍历目录攻击及未受权访问
safe_mode_gid = Off # safe_mode参数开启,而safe_mode_gid参数关闭,PHP不仅可以访问相同uid文件,还可以访问与属主相同用户组文件
open_basedir = :var:www # 将PHP允许操作的所有文件(包括文件自身)都限制在此组目录列表下。
# 当一个脚本试图打开一个指定目录树之外的文件时,将遭到拒绝。
# 所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
# 特殊值'.'指定了存放该脚本的目录将被当做基准目录,
# 但这有些危险,因为脚本的工作目录可以轻易被chdir()改变。
# 对于共享服务器,在httpd.conf中针对不同的虚拟主机或目录灵活设置该指令将变得非常有用。
# 在Windows中用分号分隔目录,UNIX系统中用冒号分隔目录。
# 作为Apache模块时,父目录中的open_basedir路径将自动被继承。
# 指定的限制实际上是一个前缀,而非一个目录名,
# 也就是说"/dir/incl"将允许访问"/dir/include"和"/dir/incls",
# 如果您希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线。
# 默认是允许打开所有文件。
safe_mode_exec_dir = # 启用时,system(),exec()和其它运行系统的命令的函数将只能运行那些已经存在于配置目录中的程序
disable_functions = "symlink,shell_exec,exec,proc_close,proc_open,popen,system,dl,passthru,escapeshellarg,escapeshellcmd"
# 禁用PHP危险函数,这些函数大多可以直接调用系统命令或资源,应禁用在编写网站代码中使用
[Misc]
expose_php = Off # 隐藏PHP版本信息
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ; [错误处理和日志记录]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
display_errors = Off # 关闭参数可以防止PHP将错误或警告信息发送给客户端
log_errors = On # 启用,警告信息和错误信息将会被记录到日志文件(通过error_log参数指定)
# 如果指定的日志文件不可访问,警告信息和日志文件记录到Apache日志文件中
# 这样会为日志的管理及安全带来极大的问题
error_log = /var/log/php5/error.log
# 添加错误日志文件,apache 用户或组必须具有对该文件写的权限
;;;;;;;;;;;;;;;;;;;
; Module Settings ; [模块设置]
;;;;;;;;;;;;;;;;;;;
[Date]
date.timezone = PRC # 设置中国的时区
三.MySQL配置
MySQL的配置文件路径:/etc/mysql/my.cnf
log_bin = /var/log/mysql/mysql_bin.log # 开启MySQL的日志系统,可建立同步数据库
log_slow_queries = /var/log/mysql-slow.log # 开启它,对于我们查找,分析SQL语句性能的问题帮助很大
long_query_time = 8 # 系统对执行时间超过8秒中的语句进行记录,采用8秒钟的规则
log = /var/log/mysql/mysql.log # 开启日志功能
thread_connections = 2 # 线程连接数量为2,此设置是根据CPU的数量的两倍来设置
max_connections = 100 # 开启最大连接数,以保证你有足够的连接并发资源,响应来自Web服务器的响应
table_cache = 512 # 开启统计数据表的数量
【LAMP常见问题解决(FAQ)】
问题1:无法解析php文件,用浏览器访问php页面时,提示下载所要打开的php文件
--------------------------------------------------------
问题分析:主要是在apache2配置文件目录/etc/apache2/mod-enabled/目录下缺少php5.conf和php5.load这两个软连接文件,mod-
enabled目录用于存放已经被激活的apache支持的模块,此两个文件连接指向/etc/apache2/mod-available/中的同名文件,mod-
available目录用于存放已经安装但没有激活的apache支持的模块。
如果/etc/apache2/mod-available/不存在php5.conf和php5.load模块,则需要从新安装libapache2-mod-php5模块:
sudo apt-get install libapache2-mod-php5
sudo a2enmod php5
如果显示为:
This module does not exist!
那就要彻底删除libapache2-mod-php5,然后重新安装
sudo apt-get remove --purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5
如果/etc/apache2/mod-available/存在php5.conf和php5.load模块,则在命令行执行:
sudo a2enmod php5
--------------------------------------------------------
问题2:在/var/log/php5/error.log日志中出现“PHP Warning : Module 'mysql' already loaded in Unknown on line 0”问题
--------------------------------------------------------
问题分析:主要apache2重新启动时,重复加载了mysql.so动态库。在/etc/php5/apache2/php.ini文件中extension=mysql.so参数与/etc/php5/conf.d/mysql.ini文件中extension=mysql.so参数都被加载了,就重复加载了这个动态库。所以只要屏蔽php.ini中的extension=mysql.so参数,问题就解决。
--------------------------------------------------------
问题3:进入phpmyadmin的Web界面时,显示“无法载入 mcrypt 扩展,
请检查 PHP 配置”的问题
--------------------------------------------------------
问题分析:mcrypt是一个功能强大的加密算法扩展库,所以安装这个库,在修改php.ini配置文件,问题解决!
sudo apt-get install php5-mcrypt
安装完成后,打开/etc/php5/apache2/php.ini文件,在[Dynamic Extensions ;]添加以下内容:
extension=mcrypt.so
重起apache服务,问题解决!
--------------------------------------------------------
问题4: 在向MySQL数据库导入*.sql文件时,显示ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)错误信息
--------------------------------------------------------
问题分析:是有人用应用程序在登陆到数据库去了,在当前操作数据,关闭当前应用程序,问题解决,*.sql数据文件就可以导入。
--------------------------------------------------------
【提交汉字到MySQL数据库,phpMyAdmin字符显示乱码的解决方法】
1.在制作网页时,把你的网页上的汉字编码都转换成utf8编码,并在网页HTML语言里设置成utf8显示模式,使浏览器自动调用utf8编码显示
2.并在数据库连接之前,查询之后,在你的php连接数据库文件中添加以下语句
mysql_query("SET NAMES UTF8");
3.并在MySQL数据库/etc/mysql/my.cnf配置文件里相关添加如下代码,添加后重启MySQL服务
[mysqld]
default-character-set=utf8
4.在phpMyAdmin的Web管理界面设置MySQL连接校对为utf8_general_ci,在分别在数据库级,表级,连接级整理成utf8_general_ci。
通过以上步骤,就可以解决phpMyAdmin字符显示乱码。