安装 Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu Server

在这之前,我个人搭建网站一般是用现成的虚拟主机或者像 openshift 那样的 PaaS,后来随着需求改变开始使用拥有独立系统的 VPS。前者操作简单、上手迅速、价格划算,后者独立性强、方便定制。在服务器操作系统方面,也先后尝试过 CentOS、Debain 和 FreeBSD。为了便于入手,目前选择了 Ubuntu Server 作为服务器操作系统。

刚买来的 VPS 一般什么都没安装,或者像 macOS 那样默认的 Web 服务器也只有 Apache,为了方便部署我们的 WordPress 另外还需要安装的一套软件是 Apache、MySQL 以及 PHP组件(合起来称为 LAMP)。现在就按步骤记录下这些软件的安装过程,方便今后快速搭建 Web 服务器,同样也便于你参考一下。

在测试这篇文章中的操作步骤时使用的服务器操作系统是 Ubuntu Server 16.04 LTS,其他同类系统的操作类似,但仅供参考。

Step 0

开始之前,应该确保你能够正常登录服务器,而且该账户拥有 sudo 权限。因为之后的操作会使用 root 账户的权限,所以你也可以直接用 root 账户管理服务器。

Step 1

为了确保能检索出仓库里最新的软件,首先请更新 APT,之后安装 Apache。

sudo apt-get update
sudo apt-get install apache2

安装成功以后,80 端口呈现了初始的欢迎页面并且告诉了我们 Apache 配置文件的存放地点 /etc/apache2 以及目录结构。我们知道了目录结构,就开始修改第一个独立站点的配置文件 000-default.conf,在这里修改变量 ServerName、AllowOverride、ServerAdmin 以及增减各种各样的参数。

sudo vi /etc/apache2/sites-available/000-default.conf
  • 这里 ServerName 的值指向了你的域名或IP地址,如果在这里使用 _ 就会代表所有未知的域名以及IP,也就是ICP备案时所说的空头主机。
  • 添加 AllowOverride All 以允许读取该目录下的 .htaccess 并应用重写功能(覆盖配置),跟随 Directory 的目录地址定义了要应用该重写功能的目录。
  • 在 ServerAdmin 补充管理员的电子邮箱地址。
<VirtualHost *:80>
    ServerName www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    <Directory /var/www/html/>
        AllowOverride All
    </Directory>
    . . .

小提示:为了避免 Apache 加载有错误的配置文件,应该检查配置文件有无逻辑和语法错误。这里可以使用命令 sudo apache2ctl configtest 做自动检测,如果得到的结果包含 Syntax OK 则语法正确。

sudo apache2ctl configtest
Syntax OK

启动 Rewrite 模块,以及重启 Apache 让所有配置文件被重新加载进来使前的配置全部生效。

sudo a2enmod rewrite
sudo service apache2 restart

创建网站根目录的 .htaccess 文件,并授之 www-data 帐户权限。由于 Apache 程序的工作账户是 www-data,因此 Apache 执行的一些程序(比如 WordPress)才有资格修改 .htaccess 文件。

sudo touch /var/www/html/.htaccess
sudo chown :www-data /var/www/html/.htaccess
sudo chmod 664 /var/www/html/.htaccess

Step 2

安装 MySQL。

sudo apt-get install mysql-server

当安装完成后,我们可以再运行一个安全化脚本,用它将删除一些存安全隐患的默认值,增强数据库应用于生产环节的安全性。通过执行以下命令来启动交互式脚本:

sudo mysql_secure_installation

Step 3

安装 PHP 以及 Apache PHP 扩展模块。

sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

这样安装PHP应该没有任何问题。我们稍后将测试一下。

在大多数情况下,我们希望修改 Apache 在处理目录请求时提供文件的方式,在这里也就是读取和执行文件的先后顺序。目前,如果用户从服务器请求访问一个目录,Apache 会先寻得文件 index.html。而我们要做的是告诉我们的 Web 服务器优先执行 index.php  脚本文件。要做到这一点,只需编辑 dir.conf 中 DirectoryIndex 排列的先后顺序。

sudo vi /etc/apache2/mods-enabled/dir.conf

打开文件 dir.conf,起初是这样的。标红的 index.php 被排在了第四位,如此 Apache 就根据配置要求在网站的目录下面依次寻找能够提供网页输出的文件。假如按顺序没能找到 index.html、index.cgi、index.pl 那么 Apache 才会寻找 index.php,如果找到了就会用 PHP 扩展模块来执行它输出网页。

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

后面是修改后的配置,标红的 index.php 根据我们的需求被移动到了最前面。Apache 配置生效后,下一次读取文件的读取顺序也就发生了变化。

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

现在可以重启你的 Apache 看看效果了。

sudo systemctl restart apache2

Step 4

在服务器上测试 PHP 是否正常工作,只需要简单地创建一个PHP探针文件调用 phpinfo 来呈现出当前的PHP工作环境。当然,公开暴露服务器的配置信息不够安全,所以使用探针后最好还是将其删除掉。

/* PHP探针 */
<?php
phpinfo();
创建 sudo vi /var/www/html/info.php
删除 sudo rm /var/www/html/info.php

2 thoughts on “安装 Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu Server”

Comments are closed.