在这个Raspberry Pi Apache项目中,我们将向您展示如何在Raspberry Pi上安装和设置Apache网络服务器。
Apache本身可以通过HTTP和HTTPS网络协议来提供HTML文件。除了额外的模块,如PHP,Apache还能提供动态内容。Apache是树莓Pi上最流行的网络服务器之一。仅Apache就占了世界上所有网络服务器的44%。Apache的替代方案是Nginx Web服务器,它被认为在某些任务上比Apache快得多。这完全取决于你想继续使用哪种技术。在本篇树莓派Apache教程中,我们将通过设置Apache、安装PHP以及创建第一个基本的Apache VirtualHost文件等步骤来引导您。
在本教程中,我们涉及到Apache的所有基础知识,但是,并没有涉及到MYSQL和PHPMyAdmin的设置。我们也没有涉及在树莓派上设置WordPress。这些主题都会在单独的教程中介绍。
设备清单
以下是我在这个Raspberry Pi Apache Web服务器教程中使用的所有设备清单,点击链接可直达特别优惠购买。
建议
可选
如何在Raspberry Pi上安装Apache网络服务器
1. 在将Apache安装到Raspberry Pi之前,我们必须首先行以下两个命令确保软件包列表是最新的。
sudo apt-get update
sudo apt-get upgrade
2. 首先,需要在Raspberry Pi上安装Apache2包。
Apache是一个服务器软件,它可以将电脑中的HTML文件提供给网络浏览器。要在Raspberry Pi上安装apache2,在终端中输入以下命令。
sudo apt install apache2 -y
3. 在Raspberry Pi上安装了Apache2,我们现在已经有了一个非常基本的网络服务器。该服务器将能够提供非动态内容,如HTML文件。
在下一节,我们将通过在树莓派上安装PHP来扩展这个基本的Apache网络服务器。要检查Apache是否在你的Raspberry Pi上运行,你可以在网络浏览器中输入Raspberry Pi的IP地址。服务器应该会返回一个带有一些简单文字的网页。
如果不知道IP,可以在终端输入hostname命令来检索。
hostname -I
4. 在网络浏览器中,输入你的Raspberry Pi的IP地址,它应该会连接并加载一个类似下面的页面。
5. 为了能够在不使用root的情况下对/var/www/html内的文件进行修改,我们需要设置一些权限。
首先,我们将用户pi(我们的用户)添加到www-data组,这是Apache2的默认组。
其次,我们将/var/www/html目录下的所有文件和文件夹的所有权交给www-data组。
sudo usermod -a -G www-data pi
sudo chown -R -f www-data:www-data /var/www/html
一旦运行了该命令,需要注销,然后重新登录以使更改生效。
6. 现在您可以通过运行以下命令对默认网页进行更改。
该命令将使用nano文本编辑器来修改index.html文件。
Web服务器将为/var/ww/html/目录内的所有文件提供服务。
nano /var/www/html/index.html
Apache是一个基本的Web服务器,如果你想学习HTML、JS或CSS,它是非常好的。
然而,如果你是PHP(用于动态网页),然后继续我们的树莓派Apache教程的下一部分。
为Apache设置PHP7
1. 请注意,在开始本节之前,你应该至少运行Raspbian Buster。您可以在我们的 “升级Raspbian “指南中了解如何升级到Raspbian Buster。
在本节开始之前,我们需要先安装php7.3和其他几个包到树莓派上。我们要安装的是PHP应用中常用的包。
幸运的是,我们安装所有我们需要的包是一个简单的过程,因为PHP 7.3在Raspbian包仓库中是可用的。
运行下面的命令来安装所有的PHP包到你的Raspberry Pi。
sudo apt install php7.3 libapache2-mod-php7.3 php7.3-mbstring php7.3-mysql php7.3-curl php7.3-gd php7.3-zip -y
2. 现在PHP已经安装到我们的Raspberry Pi上了,我们可以测试它以确保它的工作。
我们不必担心修改任何配置文件,因为这是在检测到Apache时自动完成的。
我们可以通过在/var/www/html/目录下创建一个PHP文件来测试PHP是否工作。在这个目录下创建一个文件将允许它被处理,并在Web浏览器中打开时显示。
在我们的例子中,我们将创建一个名为example.php的PHP文件。我们可以通过下面的命令来创建这个文件。
sudo nano /var/www/html/example.php
3. 在这个文件中,我们需要在PHP代码上添加以下几行。
<?php
echo "Today's date is ".date('Y-m-d H:i:s');
上面的代码只是一个非常简单的 PHP 脚本,它可以打印出使用 PHP 的 date() 函数检索到的今天的日期。这将足以告诉我们,事实上,PHP是可以运行的。
4. 现在按Ctrl + X然后按Y键并按ENTER键保存文件。
5. 在您的网络浏览器中,访问http://192.168.1.103/example.php。确保您将192.168.1.103替换为您Raspberry Pi的IP地址。
进入下面的URL,应该显示如下内容。
Today's date is 2019-06-28 21:30:45
设置一个Apache虚拟主机
虚拟主机是Apache工作方式的一个重要部分。Apache使用这些Virtualhost文件,以便它知道如何处理一个单独的站点。
在本节中,我们将向您展示如何在您的Raspberry Pi Apache网络服务器上创建一个基本的虚拟主机文件。虚拟主机是Apache处理多个网站的方式,每个虚拟主机文件都会设置和配置一个特定的域名。
1. 首先运行以下命令,在/etc/apache2/sites-available文件夹内创建一个名为example.com.conf的基本虚拟主机文件。
如果你打算用它来做一个实际的域名,请确保你把example.com和域名换掉。
sudo nano /etc/apache2/sites-available/example.com.conf
2. 在这个文件中,输入以下文字。我们将边走边解释虚拟主机文件的每个部分,这样你就可以知道如何设置一个非常基本的虚拟主机。
<VirtualHost *:80>
这一行指定了虚拟主机的开始,这个虚拟主机应该在80端口监听。
对于那些不知道80端口是http的默认端口。同样,https的端口也是443。
ServerName example.com
ServerAlias www.example.com
在这里,我们为我们的虚拟主机添加两个指令。其中第一个指令叫做ServerName,指定基础域。这个服务器名用于将VirtualHost与域名相匹配。
第二条指令,ServerAlias,定义了额外的域名,这些域名将像基本域名一样被匹配。
这条指令对于匹配额外的名称(如www.子域)很有用。
DocumentRoot /var/www/example.com/public_html
DocumentRoot指令定义了Apache将从哪里提供所有文件的目录。
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
在最后两个指令ErrorLog和CustomLog中,我们指定了我们希望日志文件保存的位置。
</VirtualHost>
最后,我们结束VirtualHost部分。
3. 一切完成后,代码最终应该是我们下面的样子。当然,使用你的域名而不是example.com。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
完成后,按CTRL + X,然后按Y,再按ENTER键保存文件。
4. 现在让我们创建一个文件夹,我们将在这里存储我们的HTML文件。我们将对www-data组也拥有这个文件夹的所有权。
运行下面的命令来创建我们需要的文件夹,并拥有它的所有权。
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/example.com/public_html
5. 现在我们已经创建了VirtualHost和它的文件夹,让我们继续运行以下命令来激活它。
该命令在/etc/apache2/sites-available/和/etc/apache2/sites-enabled/目录之间为我们的配置文件创建一个符号链接。
sudo a2ensite example.com.conf
6. 最后,我们新的虚拟主机文件要加载进来,我们需要告诉Apache2服务重新加载它的配置。
这可以通过运行下面的命令来完成。
sudo systemctl reload apache2
现在可以将域名服务器(DNS)指向Raspberry Pi的公网IP,并让它为请求的域名提供文件。需要设置端口转发才能正常工作。
现在你应该已经在Raspberry Pi上运行了Apache网络服务器。你也应该对如何在Apache上设置PHP和虚拟主机有一个不错的想法。
如果你有任何反馈,问题,技巧或其他任何东西,那么请不要犹豫,在下面留言。
欢迎转载,请留下出处链接:Labno3 » 树莓派PHP Web服务器,详细介绍安装和配置Apache网络服务器