目录
一、什么是LAMP
LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:
Linux,操作系统
Apache,Web服务器
MariaDB或MySQL,数据库管理系统(或者数据库服务器)
PHP、Perl 或 Python,脚本语言
虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的廉价和普遍,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的“解决方案包”(Solution Packages)。其他的方案包有苹果的WebObjects(英语:WebObjects)(最初是应用服务器),Java/J2EE和微软的.NET架构。“LAMP包”的脚本组件中包括了CGI web接口,它在90年代初期变得流行。这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。正是由于这个原因系统设计者经常称这些脚本语言为胶水语言。
当然除了LAMP结构还有这许多它的变体,比如
LAPP | 以 PostgreSQL 替代 MySQL 或 Mariadb |
LNMP | 以 Nginx 替代 Apache |
LAMP | 最后两个字母意味着 Middleware 和 PostgreSQL |
WAMP | 以 Microsoft Windows替代 Linux |
MAMP | 以 Macintosh 替代 Linux |
LAMJ | 以 JSP/servlet 替代 PHP |
BAMP | 以 BSD 替代 Linux |
WIMP | 指 Microsoft Windows, Microsoft IIS,MySQL, PHP |
AMP | 单指 Apache, MySQL和PHP |
XAMP | 以 XML 替代 Linux |
下面我将使用AWS EC2实例的Amazon Linux AMI搭建一个LAMP结构(Linux、Apache、MySQL or Mariadb),Amazon Linux AMI 是基于Centos 进行二次开发的,所以本次教程同样适用于Centos 的 Linux 操作系统进行搭建
二、LAMP结构搭建
1. 首先使用Amazon Web Service AWS创建并用Putty连接EC2实例
2. 更新 yum软件包,安装Apache、PHP、MySQL
#更新yum软件包
$ sudo yum upgrade -y
#安装Apache、PHP、MySQL
$ sudo yum install -y httpd24 php70* mysql56-server
#启动 Apache Web 服务器
$ sudo service httpd start
Starting httpd: [ OK ]
#设置Apache Web服务器开机自启
$ sudo chkconfig httpd on
#验证httpd是否已启用
$ chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
chkconfig --list 命令 在运行级别 2、3、4 和 5 下,httpd 应该on
在网页中输入你EC2实例的公有DNS或公有IP地址: ec2-54-180-69-184.ap-northeast-2.compute.amazonaws.com
如果你未能看到 Apache 测试页面,请检查你使用的安全组或者防火墙是否包含允许 HTTP(端口 80)流量的规则。
3. 设置文件权限
Apache httpd 提供的文件保存在名为 Apache 文档根目录的目录中。Amazon Linux Apache 文档根目录为 /var/www/html,默认情况下归根用户所有
$ ll /var/www/
total 20
drwxr-xr-x 2 root root 4096 Dec 13 00:18 cgi-bin
drwxr-xr-x 3 root root 4096 Feb 25 08:18 error
drwxr-xr-x 2 root root 4096 Dec 13 00:18 html
drwxr-xr-x 3 root root 4096 Feb 25 08:19 icons
drwxr-xr-x 2 root root 4096 Feb 25 08:18 noindex
要允许 ec2-user 账户操作此目录中的文件,必须修改其所有权和权限,允许ec2-user (和 apache 组的任何未来成员) 可以添加、删除和编辑 Apache 文档根目录中的文件,添加内容,如静态网站或 PHP 应用程序
#将您的用户 (这里指 ec2-user) 添加到 apache
$ sudo usermod -a -G apache ec2-user
#验证ec2-user用户是否已添加进apahce组
$ groups
ec2-user wheel
$ exit
$ groups
ec2-user wheel apache
#将 /var/www 及其内容的组所有权更改到 apache 组
$ sudo chown -R ec2-user:apache /var/www/
#要添加组写入权限以及设置未来子目录上的组 ID,请更改 /var/www 及其子目录的目录权限
$ sudo chmod 2775 /var/www/
$ find /var/www/ -type d -exec sudo chmod 2775 {} \;
#要添加组写入权限,请递归地更改 /var/www 及其子目录的文件权限:
$ find /var/www -type f -exec sudo chmod 0664 {} \;
4. 测试LAMP Web服务器
$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
在浏览器中键入 公有ip地址或者公有DNS/phpinfo.php (注:测试完成后尽量删除该文件以保证服务器安全性)
如果你未看到此页面,请验证上一步中是否已正确创建 /var/www/html/phpinfo.php 文件。你也可以使用以下命令验证已经安装了所有必需的程序包
$ sudo yum list installed httpd24 php70 mysql56-server php70-mysqlnd
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
httpd24.x86_64 2.4.37-1.83.amzn1 @amzn-updates
mysql56-server.x86_64 5.6.42-1.31.amzn1 @amzn-updates
php70.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-mysqlnd.x86_64 7.0.33-1.32.amzn1 @amzn-updates
5. 启动MySQL服务器
$ sudo service mysqld start
Initializing MySQL database:
...
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
...
Starting mysqld: [ OK ]
#运行 mysql_secure_installation 初始化MySQL数据库
$ sudo mysql_secure_installation
#设置MySQL开机自启
$ sudo chkconfig mysqld on
a. 在提示时,键入根账户的密码。
i. 输入当前根密码。默认情况下,根账户没有设置密码。按回车键 Enter
ii. 输入 Y 设置密码,然后输入两次安全密码。
注意:设置 MySQL 根密码仅是保护数据库的最基本措施。在您构建或安装数据库驱动的应用程序时,您通常可以为该应用程序创建数据库服务用户,并避免使用根账户执行除数据库管理以外的操作。
b. 输入 Y 删除匿名用户账户
c. 输入 N 禁用远程根登录
d. 输入 Y 删除测试数据库
e. 输入 Y 重新加载权限表并保存您的更改
现在,我们有了一个功能完善的 LAMP Web 服务器。如果你将内容添加到 Apache 文档根目录 (位于 /var/www/html),你应该能够在你的实例的公有 DNS 地址中看到该内容
三、安装 phpMyAdmin(可选)
注:Amazon Linux 包管理系统当前不支持 PHP 7 环境中的 phpMyAdmin 自动安装
#检查是否安装 php70-mbstring.x86_64 和 php70-zip.x86_64
$ sudo yum list installed php70-mbstring.x86_64 php70-zip.x86_64
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
php70-mbstring.x86_64 7.0.33-1.32.amzn1 @amzn-updates
php70-zip.x86_64 7.0.33-1.32.amzn1 @amzn-updates
#若不存在上面两个软件包执行以下命令
$ sudo yum install -y php70-mbstring.x86_64 php70-zip.x86_64
2. 下载并安装phpMyAdmin
#进入 /var/www/html 的 Apache 文档根
$ cd /var/www/html/
#下载并安装 phpMyAdmin
$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
$ rm phpMyAdmin-latest-all-languages.tar.gz
#重启httpd
$ sudo service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
$ sudo service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]