1 LAMP的安装
LAMP通常是指Linux+Apache+MySQL+PHP组合形成的一套可以运行PHP程序的体系,并不是一个软件的名称。没有安装MySQL的服务器依然可以在其它条件完备的情况下运行不涉及MySQL数据库读写操作的PHP程序,另外PHP并非只支持MySQL一种数据库产品,还支持其他的数据库产品。并非只有Apache可以通过扩展支持PHP的解析,Nginx,LightHttpd等其它软件同样可以。
Ubuntu一键安装LAMP环境的命令:sudo apt-get install apache2 php5 mysql-server php5-mysql或者使用tasksel安装LAMP套件:sudo apt-get update && sudo apt-get install tasksel && sudo tasksel install lamp-server给PHP添加常用扩展:sudo apt-get install php5-gd curl libcurl3 libcurl3-dev php5-curl安装完需要重启apache:sudo service apache2 restartUbuntu系统LAMP环境配置在Ubuntu系统中,通过apt-get工具安装的软件配置文件均放置在/etc下,并为每个软件建立一个以软件名称为名的文件夹用于区分不同软件的配置文件。通过apt-get安装的LAMP组件的配置文件也在/etc目录下:- Apache /etc/apache2- MySQL /etc/mysql- PHP /etc/php5
2 虚拟主机(Virtual-Host)原理
Apache通过Virtual-Host配置功能可以实现,一台服务器上可以同时放多个服务的网站,用户使用不同的域名访问不同的网站。
在Apache中配置虚拟主机的方法:(1) 通过修改客户端hosts文件(/etc/hosts)来模拟DNS解析。例如:127.0.0.1 a.gerryyang.com127.0.0.1 b.gerryyang.com(2) 进入/etc/apache2/sites-available目录,将000-default.conf作为模板,分别复制两份,然后修改部分内容。cp 000-default.conf a.confcp 000-default.conf b.confvi a.conf打开后:添加ServerName:ServerName a.gerryyang.com修改DocumentRoot:DocumentRoot /var/www/html/gerry_data同理,对b.conf做同样操作。然后,再进入/etc/apache2/sites-enabled目录,分别创建../sites-available/a.conf和../sites-available/b.conf两个配置文件的软链接:ln -s ../sites-available/a.conf a.confln -s ../sites-available/b.conf b.conf最后,重启Apache2,sudo service apache2 restart(3) 测试方法curl "a.gerryyang.com/index.html"curl "b.gerryyang.com/index.html"3 MySQL数据存储目录迁移方法
(1) 停止MySQL服务
sudo service mysql stop(2) 创建新的迁移目录,以及访问权限和之前的目录相同(MySQL的数据存储目录在/var/lib/mysql中)sudo mkdir /mysqldatasudo chown -vR mysql:mysql /mysqldata/sudo chmod -vR 700 /mysqldata/sudo cp -av /var/lib/mysql/* /mysqldata/(3) 修改MySQL的配置sudo vim /etc/mysql/my.cnf将datadir = /var/lib/mysql修改为:datadir = /mysqldata(4) Ubuntu还需要修改apparmor的配置文件sudo vi /etc/apparmor.d/usr.sbin/mysqld将:/var/lib/mysql/ r,/var/lib/mysql/** rwk,注释,然后添加新目录的访问权限:/mysqldata/ r,/mysqldata/** rwk,保存退出。(5) 分别重启apparmor和mysql服务sudo service apparmor reloadsudo service mysql restart(6) 测试方法建立一个新的数据库,MySQL会在数据存储目录建立一个与数据库同名的文件夹。create database db_gerry;show databases;exit;cd /mysqldata/ && ll小结:Apache支持virtual-host虚拟主机,可以将多个指向同一服务器的域名分别指定根目录以及权限配置并且互不干扰。通过apt-get安装的MySQL,其数据存储目录可以改变,以便更加符合数据安全的需求,但在迁移数据后需要修改apparmor中与MySQL相关的目录访问权限。默认情况下,出于安全的考虑,MySQL在初始状态下不允许远程连接,只允许服务器内部应用的本地连接。4 安装phpmyadmin
phpmyadmin是非常流行的mysql管理工具。
两种安装方式:(1) apt-get方式(/etc/phpmyadmin/)sudo apt-get install phpmyadminsudo ln -s /usr/share/phpmyadmin/ /var/www/pma(2) 手动上传方式先下载好phpmyadmin的安装包,然后通过ftp工具FileZilla上传到服务器。5 开启MySQL的remote access
默认情况下MySQL只允许本地访问,而不允许远程访问(remote access)
(1) 第一步,修改vi /etc/mysql/my.cnf(针对整个服务器而言)将bind-address = 127.0.0.1注释并退出。(2) 第二步,修改user用户表使用phpmyadmin添加一个新的用户,允许用公网IP来访问(3) 因为修改过my.cnf配置,所以需要重启MySQL服务sudo service mysql restart(4) 测试通过外网使用phpmyadmin或者Navicat进行访问测试6 服务器集群介绍
一种简单的LAMP集群 (读写分离)一大波用户请求到来 -> 负载均衡Nginx (分发请求) -> Apache+PHP (写入) -> MySQL#1 (同步) -> MySQL#2...#3一大波用户请求到来 -> 负载均衡Nginx (分发请求) -> Apache+PHP (读取) -> MySQL#2...#3国内外著名的巨型服务器集群TTC - Tencent Table Cache (腾讯)TFS - Taobao File System (阿里巴巴)BAE - Baidu Application Engine (百度)SAE - Sina Application Engine (新浪)GFS - Google File System (谷歌)