在Ubuntu 16.04 LTS上安装Apache,MariaDB和PHP7(LAMP堆栈)
默认情况下,Ubuntu 16.04 LTS Xenial Xerus随附PHP7,因此您不必依赖第三方PPA来安装PHP7。 在本教程中,我们将研究如何在Ubuntu 16.04 LTS Xenial Xerus上安装Apache,MariaDB和PHP7(LAMP堆栈)。
更新资料:本教程也在Ubuntu 16.10 Yakkety Yak上成功进行了测试。
步骤1:更新Ubuntu 16.04 LTS
在安装任何软件之前,始终最好更新存储库和软件包。 SSH进入您的Ubuntu 16.04服务器,然后输入以下命令。
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
步骤2:安装Apache Web服务器
输入此命令以安装Apache Web服务器。
sudo apt-get install apache2 apache2-utils
安装后,应自动启动Apache。 使用systemctl检查其状态。
systemctl status apache2
输出:
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2016-04-20 18:32:57 EDT; 32s ag o
如果它没有运行,请使用systemctl来启动它。
sudo systemctl start apache2
重启Ubuntu 16.04后,使Apache自动启动也是一个好主意。
sudo systemctl enable apache2
检查Apache版本:
apache2 -v
输出:
Server version: Apache/2.4.18 (Ubuntu) Server built: 2016-04-15T18:00:57
现在,在浏览器的地址栏中,键入Ubuntu 16.04 LTS服务器的公共IP地址。 您应该看到“它有效!” 表示Apache Web服务器正在正确运行的网页。
您可以使用以下命令来获取Ubuntu 16.04服务器的公共IP地址。
sudo apt-get install curl curl http://icanhazip.com
如果要在本地Ubuntu 16.04机器上安装LAMP,只需键入 127.0.0.1
要么 localhost
在浏览器地址栏中。
最后,我们需要 www-data
(Apache用户)作为Web根目录的所有者。
sudo chown www-data /var/www/html/ -R
步骤3:安装MariaDB
MariaDB是MySQL的直接替代品。 它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成封闭源代码产品。 许多Linux发行版和公司已迁移到MariaDB。 因此,我们将安装MariaDB而不是MySQL。
sudo apt-get install mariadb-server mariadb-client
安装后,MariaDB服务器应自动启动。 使用systemctl检查其状态。
systemctl status mysql
输出:
● mysql.service - LSB: Start and stop the mysql database server daemon Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled) Active: active (running) since Wed 2016-04-20 18:52:01 EDT; 1min 30s ago Docs: man:systemd-sysv-generator(8)
如果它没有运行,请使用以下命令启动它:
sudo systemctl start mysql
要使MariaDB在重新启动Ubuntu 16.04时自动启动:
sudo systemctl enable mysql
现在运行安装后安全脚本。
sudo mysql_secure_installation
当要求您输入MariaDB根密码时,请按Enter键,因为尚未设置根密码。 然后输入y设置MariaDB服务器的根密码。
接下来,您只需按Enter即可回答所有剩余的问题。 这将删除匿名用户,禁用远程root登录并删除测试数据库。 此步骤是MariaDB数据库安全性的基本要求。
步骤4:安装PHP7
输入以下命令以安装PHP7和PHP7扩展。
sudo apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl libapache2-mod-php7.0
启用Apache php7.0模块,然后重新启动Apache Web服务器。
sudo a2enmod php7.0 sudo systemctl restart apache2
步骤5:测试PHP
要测试PHP7的cli版本,我们只需要输入以下命令:
[email protected]:~$ php --version PHP 7.0.4-7ubuntu2 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
要使用Apache服务器测试PHP,请先创建一个 test.php
Web根目录中的文件。
sudo nano /var/www/html/test.php
将以下PHP代码粘贴到文件中。
<?php phpinfo(); ?>
保存并关闭文件。 现在,在浏览器地址栏中,输入 server-ip-address/test.php
。 更换 sever-ip-address
与您的实际IP。 当然,如果您在本地计算机上遵循本教程,请输入 127.0.0.1/test.php
要么 localhost/test.php
。
您应该看到服务器的PHP信息。 这意味着PHP处理很好。 您可以发现Zend OPcache已启用。
Apache PHP7.0模块与PHP-FPM
现在基本上可以通过两种方法在Apache Web服务器上运行PHP代码:
- Apache PHP模块
- PHP-FPM。
上面的配置使用Apache PHP7.0模块来处理PHP代码。 很好,如果您对此感到满意,请删除 test.php
立即提交文件,以使其他人无法看到您的服务器信息,并且不遵循以下说明。
但是,如果要使用PHP-FPM来运行PHP代码,则需要启用Apache mod_proxy_fcgi
使用以下命令的模块:
sudo a2enmod proxy_fcgi
然后编辑虚拟主机配置文件。 本教程以默认虚拟主机为例。
sudo nano /etc/apache2/sites-available/000-default.conf
添加 ProxyPassMatch
该文件的指令。
.... ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ProxyPassMatch ^/(.*.php(/.*)?)$ unix:/run/php/php7.0-fpm.sock|fcgi://localhost/var/www/html/ .....
保存并关闭此文件。 重新启动Apache2。
sudo systemctl restart apache2
启动php7.0-fpm
sudo systemctl start php7.0-fpm
启用php7.0-fpm在启动时启动。
sudo systemctl enable php7.0-fpm
检查状态:
systemctl status php7.0-fpm
输出:
● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor pre set: enabled) Active: active (running) since Wed 2016-04-20 19:21:05 EDT; 2s ago
现在,如果您刷新 test.php
浏览器页面上,您会发现服务器API是 FPM/FastCGI
这意味着Apache Web服务器将把PHP请求传递给PHP-FPM。
为了服务器的安全,您应该删除 test.php
立即归档,以防止窥视。
恭喜! 您已在Ubuntu 16.04 LTS Xenial Xerus上成功安装了Apache,MariaDB和PHP7。