1.为确保所有软件包都处于最新状态,需要对实例执行快速软件更新。以确保我们拥有最新的安全更新和缺陷修复。参数选项-y 表示安装更新时不提示确认。如果需要在安装前检查更新内容,则可以忽略该选项。
[ec2-user ~]$ sudo yum update -y
2.安装lamp-mariadb10.2-php7.2和php7.2AmazonLinuxExtras存储库,以获取适用于Amazon Linux2的LAMPMariaDB和PHP程序包的最新版本
[ec2-user ~]$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2
注意:如果提示sudo: amazon-linux-extras: command not found 的错误,是因为实例未与Amazon Linux 2 AMI 一起启动(可以改用Amazon Linux AMI)。使用以下命令查看Amazon Linux 的版本
cat /etc/system-release
3.实例处于最新状态后,便可以安装ApacheWeb服务器、MariaDB和PHP软件包。使用yum install 命令可同时安装多个软件包和所有相关依赖项
[ec2-user ~]$ sudo yum install -y httpd mariadb-server
注意:使用以下命令可以查看这些程序包的当前版本:
yum info package_name
4.启动ApacheWeb服务器。
[ec2-user ~]$ sudo systemctl start httpd
5.使用systemctl命令可将ApacheWeb服务器配置为在每次系统启动时启动。
[ec2-user ~]$ sudo systemctl enable httpd
可以通过运行以下命令验证httpd 是否已启用:
[ec2-user ~]$ sudo systemctl is-enabled httpd
6.如果无法启动ApacheWeb服务器,需要添加安全规则以允许实例的入站HTTP (端口80)连接。默认情况下,初始化时将设置launch-wizard-N安全组。此组包含一条允许SSH 连接的规则。
7.测试Web 服务器。在Web 浏览器中,键入实例的公有DNS地址(或公有IP 地址)。如果/var/www/html 中没有内容,应该会看到Apache测试页面。
如果未能看到Apache 测试页面,检查使用的安全组是否包含允许HTTP(端口80)流量的规则。如果使用的不是Amazon Linux,则还可能需要在实例上配置防火墙才能允许这些连接。
Apache httpd 提供的文件保存在称为Apache 文档根目录的目录中。Amazon Linux Apache文档根为/var/www/html,默认情况下归根用户所有。
要允许ec2-user 账户操作此目录中的文件,必须修改其所有权和权限。有多种方式可以完成此操作。这里将ec2-user 添加到apache 组,将/var/www 目录的所有权授予apache 组,并为该组指定写入权限。
设置文件权限
1.将用户(这里指ec2-user) 添加到apache。(usermod可用来修改用户帐号的各项设定。)
[ec2-user ~]$ sudo usermod -a -G apache ec2-user
2.先退出再重新登录以选取新组,然后验证成员资格。
a.退出(使用exit命令或关闭终端窗口):
[ec2-user ~]$ exit
b.要验证您是否为apache组的成员,请重新连接到实例,然后运行以下命令:
[ec2-user ~]$ groups
3.将/var/www及其内容的组所有权以递回的方式更改到apache组。
[ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
4.要添加组写入权限以及设置未来子目录上的组ID,请更改/var/www及其子目录的目录权限
[ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {
} \;
5.要添加组写入权限,我们需要递归地更改/var/www及其子目录的文件权限:(这里有点问题)
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {
}\;
这样,ec2-user (和apache 组的任何未来成员) 可以添加、删除和编辑Apache 文档根目录中的文件,允许添加内容,如静态网站或PHP 应用程序。
如果服务器已安装并运行,且文件权限设置正确,则ec2-user 账户应该能够在/var/www/html 目录(可从Internet 访问) 中创建PHP 文件。
测试LAMP 服务器:
1.在Apache文档根目录中创建一个PHP文件。
[ec2-user ~]$ echo "" > /var/www/html/phpinfo.php
尝试运行该命令时,如果出现“Permission denied (权限被拒绝)”错误,请尝试先注销,再重新登录,以获取在设置文件权限中配置的适当组权限。
2.在Web浏览器中,键入刚刚创建的文件的实例的公有DNS地址,后接正斜杠和文件名。例如:
http://my.public.dns.amazonaws.com/phpinfo.php
注意:如果未看到此页面,请验证上一步中是否已正确创建/var/www/html/phpinfo.php 文件。还可以使用以下命令验证是否已经安装了所有必需的程序包。
[ec2-user ~]$ sudo yum list installed httpd mariadb-server php-mysqlnd
如果输出中未列出任何必需的程序包,请使用sudo yum install package
命令安装它们。另请验证在amazon-linux-extras
命令的输出中启用了php7.2 和lamp-mariadb10.2-php7.2 Extras。
3.删除phpinfo.php文件。尽管此信息可能很有用,但出于安全考虑,不应将其传播到Internet。
[ec2-user ~]$ rm /var/www/html/phpinfo.php
现在就有了一个功能完善的LAMP Web 服务器。如果将内容添加到Apache 文档根目录(位于/var/www/html),就能够在该实例的公有DNS 地址中看到该内容。
MariaDB 服务器的默认安装提供有多种功能,这些功能对于测试和开发都很有帮助,但对于产品服务器,应禁用或删除这些功能。mysql_secure_installation 命令可引导您设置根密码并删除安装中的不安全功能。即使不打算使用MariaDB 服务器,也建议执行此步骤。保护MariaDB 服务器
1.启动MariaDB服务器。
[ec2-user ~]$ sudo systemctl start mariadb
2.运行mysql_secure_installation。
[ec2-user ~]$ sudo mysql_secure_installation
a.在提示时,键入根账户的密码。
i.键入当前根密码。默认情况下,根账户没有设置密码。按Enter。
ii.键入Y设置密码,然后键入两次安全密码。有关创建安全密码的更多信息,请访问https://identitysafe.norton.com/password-generator/。确保将此密码存储在安全位置。注意设置MariaDB 根密码仅是保护数据库的最基本措施。在构建或安装数据库驱动的应用程序时,通常可以为该应用程序创建数据库服务用户,并避免使用根账户执行除数据库管理以外的操作。
b.键入Y删除匿名用户账户。
c.键入Y禁用远程根登录。
d.键入Y删除测试数据库。
e.键入Y重新加载权限表并保存您的更改。
3.(可选) 如果不打算立即使用MariaDB服务器,停止它。可以在需要时再次重新启动。
[ec2-user ~]$ sudo systemctl stop mariadb
4.(可选) 如果希望实例每次启动时MariaDB服务器都启动,请键入以下命令。
[ec2-user ~]$ sudo systemctl enable mariadb
phpMyAdmin是一种基于Web 的数据库管理工具,可用于在EC2 实例上查看和编辑MySQL数据库。按照下述步骤操作,在Amazon Linux 实例上安装和配置phpMyAdmin。
重要:
除非在Apache 中启用了SSL/TLS,否则不建议使用phpMyAdmin访问LAMP 服务器;如果使用phpMyAdmin,数据库管理员密码和其他数据将无法安全地通过Internet 传输。
安装phpMyAdmin
1.安装所需的依赖项。
[ec2-user ~]$ sudo yum install php-mbstring -y
2.重启Apache。
[ec2-user ~]$ sudo systemctl restart httpd
3.重启php-fpm.
[ec2-user ~]$ sudo systemctl restart php-fpm
4.导航到位于/var/www/html的Apache文档根。
[ec2-user ~]$ cd /var/www/html
5.从https://www.phpmyadmin.net/downloads选择最新phpMyAdmin 发行版的源软件包。要将文件直接下载到您的实例,请复制链接并将其粘贴到wget命令,如本示例中所述:
[ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
6.使用以下命令创建phpMyAdmin文件夹并将程序包提取到其中。
[ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
7.删除phpMyAdmin-latest-all-languages.tar.gz tarball。
[ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
8.(可选) 如果MySQL服务器未运行,请立即启动它。
[ec2-user ~]$ sudo systemctl start mariadb
9.在Web浏览器中,键入phpMyAdmin安装的实例的公有DNS地址(或公有IP 地址),后接正斜杠和安装目录的名称。例如:
http://my.public.dns.amazonaws.com/phpMyAdmin
本篇为学习过程记录笔记。