红枫缎 發表於 2023-8-22 00:00:00

在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件

<p>
        <img style="max-width:100%!important;height:auto!important;"title="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" alt="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/fb6546aa24756a14a4e7bc7f3bdd70dd.jpg" width="auto"></p>
<p>
        <strong>LAMP</strong> 套件是一种流行的开源 Web 开发平台,可用于运行和部署动态网站和基于 Web 的应用程序。通常,LAMP 套件由 Apache Web 服务器、MariaDB/MySQL 数据库、PHP/Python/Perl 程序设计(脚本)语言组成。 LAMP 是 <strong>L</strong>inux,<strong>M</strong>ariaDB/<strong>M</strong>YSQL,<strong>P</strong>HP/<strong>P</strong>ython/<strong>P</strong>erl 的缩写。 本教程描述了如何在 Ubuntu 18.04 LTS 服务器中安装 Apache、MySQL、PHP(LAMP 套件)。</p>
<p>
        就本教程而言,我们将使用以下 Ubuntu 测试。</p>
<ul>
<li>
                <strong>操作系统</strong>:Ubuntu 18.04.1 LTS Server Edition</li>
        <li>
                <strong>IP 地址</strong> :192.168.225.22/24</li>
</ul>
<h3 class="mume-header" id="1-%E5%AE%89%E8%A3%85-apache-web-%E6%9C%8D%E5%8A%A1%E5%99%A8">
        1. 安装 Apache Web 服务器</h3>
<p>
         </p>
<p>
        首先,利用下面命令更新 Ubuntu 服务器:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt update</span></code>
</li>
        <li class="L1">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt upgrade</span></code>
</li>
</ol>
<p>
        然后,安装 Apache Web 服务器(命令如下):</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt install apache2</span></code>
</li>
</ol>
<p>
        检查 Apache Web 服务器是否已经运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">systemctl</span><span class="pln"> status apache2</span></code>
</li>
</ol>
<p>
        输出结果大概是这样的:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">apache2</span><span class="pun">.</span><span class="pln">service </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Apache</span><span class="pln"> HTTP </span><span class="typ">Server</span></code>
</li>
        <li class="L1">
                <code><span class="typ">Loaded</span><span class="pun">:</span><span class="pln"> loaded </span><span class="pun">(</span><span class="str">/lib/</span><span class="kwd">systemd</span><span class="pun">/</span><span class="pln">system</span><span class="pun">/</span><span class="pln">apache2</span><span class="pun">.</span><span class="pln">service</span><span class="pun">;</span><span class="pln"> enabled</span><span class="pun">;</span><span class="pln"> vendor preset</span><span class="pun">:</span><span class="pln"> en</span></code>
</li>
        <li class="L2">
                <code><span class="typ">Drop</span><span class="pun">-</span><span class="typ">In</span><span class="pun">:</span><span class="pln"> </span><span class="str">/lib/</span><span class="kwd">systemd</span><span class="pun">/</span><span class="pln">system</span><span class="pun">/</span><span class="pln">apache2</span><span class="pun">.</span><span class="pln">service</span><span class="pun">.</span><span class="pln">d</span></code>
</li>
        <li class="L3">
                <code><span class="pun">└─</span><span class="pln">apache2</span><span class="pun">-</span><span class="kwd">systemd</span><span class="pun">.</span><span class="pln">conf</span></code>
</li>
        <li class="L4">
                <code><span class="typ">Active</span><span class="pun">:</span><span class="pln"> active </span><span class="pun">(</span><span class="pln">running</span><span class="pun">)</span><span class="pln"> since </span><span class="typ">Tue</span><span class="pln"> </span><span class="lit">2019</span><span class="pun">-</span><span class="lit">02</span><span class="pun">-</span><span class="lit">05</span><span class="pln"> </span><span class="lit">10</span><span class="pun">:</span><span class="lit">48</span><span class="pun">:</span><span class="lit">03</span><span class="pln"> UTC</span><span class="pun">;</span><span class="pln"> </span><span class="lit">1min</span><span class="pln"> </span><span class="lit">5s</span><span class="pln"> ago</span></code>
</li>
        <li class="L5">
                <code><span class="typ">Main</span><span class="pln"> PID</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2025</span><span class="pln"> </span><span class="pun">(</span><span class="pln">apache2</span><span class="pun">)</span></code>
</li>
        <li class="L6">
                <code><span class="typ">Tasks</span><span class="pun">:</span><span class="pln"> </span><span class="lit">55</span><span class="pln"> </span><span class="pun">(</span><span class="pln">limit</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2320</span><span class="pun">)</span></code>
</li>
        <li class="L7">
                <code><span class="typ">CGroup</span><span class="pun">:</span><span class="pln"> </span><span class="str">/system.slice/</span><span class="pln">apache2</span><span class="pun">.</span><span class="pln">service</span></code>
</li>
        <li class="L8">
                <code><span class="pun">├─</span><span class="lit">2025</span><span class="pln"> </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">sbin</span><span class="pun">/</span><span class="pln">apache2 </span><span class="pun">-</span><span class="pln">k start</span></code>
</li>
        <li class="L9">
                <code><span class="pun">├─</span><span class="lit">2027</span><span class="pln"> </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">sbin</span><span class="pun">/</span><span class="pln">apache2 </span><span class="pun">-</span><span class="pln">k start</span></code>
</li>
        <li class="L0">
                <code><span class="pun">└─</span><span class="lit">2028</span><span class="pln"> </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">sbin</span><span class="pun">/</span><span class="pln">apache2 </span><span class="pun">-</span><span class="pln">k start</span></code>
</li>
        <li class="L1">
                 </li>
        <li class="L2">
                <code><span class="typ">Feb</span><span class="pln"> </span><span class="lit">05</span><span class="pln"> </span><span class="lit">10</span><span class="pun">:</span><span class="lit">48</span><span class="pun">:</span><span class="lit">02</span><span class="pln"> ubuntuserver </span><span class="kwd">systemd</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]:</span><span class="pln"> </span><span class="typ">Starting</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Apache</span><span class="pln"> HTTP </span><span class="typ">Server</span><span class="pun">...</span></code>
</li>
        <li class="L3">
                <code><span class="typ">Feb</span><span class="pln"> </span><span class="lit">05</span><span class="pln"> </span><span class="lit">10</span><span class="pun">:</span><span class="lit">48</span><span class="pun">:</span><span class="lit">03</span><span class="pln"> ubuntuserver apachectl</span><span class="pun">[</span><span class="lit">2003</span><span class="pun">]:</span><span class="pln"> AH00558</span><span class="pun">:</span><span class="pln"> apache2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Could</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> reliably</span></code>
</li>
        <li class="L4">
                <code><span class="typ">Feb</span><span class="pln"> </span><span class="lit">05</span><span class="pln"> </span><span class="lit">10</span><span class="pun">:</span><span class="lit">48</span><span class="pun">:</span><span class="lit">03</span><span class="pln"> ubuntuserver </span><span class="kwd">systemd</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]:</span><span class="pln"> </span><span class="typ">Started</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="typ">Apache</span><span class="pln"> HTTP </span><span class="typ">Server</span><span class="pun">.</span></code>
</li>
</ol>
<p>
        祝贺你! Apache 服务已经启动并运行了!!</p>
<h4 class="mume-header" id="11-%E8%B0%83%E6%95%B4%E9%98%B2%E7%81%AB%E5%A2%99%E5%85%81%E8%AE%B8-apache-web-%E6%9C%8D%E5%8A%A1%E5%99%A8">
        1.1 调整防火墙允许 Apache Web 服务器</h4>
<p>
        默认情况下,如果你已在 Ubuntu 中启用 UFW 防火墙,则无法从远程系统访问 Apache Web 服务器。 必须按照以下步骤开启 <code>http</code> 和 <code>https</code> 端口。</p>
<p>
        首先,使用以下命令列出 Ubuntu 系统上可用的应用程序配置文件:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> ufw app </span><span class="kwd">list</span></code>
</li>
</ol>
<p>
        输出结果:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">Available</span><span class="pln"> applications</span><span class="pun">:</span></code>
</li>
        <li class="L1">
                <code><span class="typ">Apache</span></code>
</li>
        <li class="L2">
                <code><span class="typ">Apache</span><span class="pln"> </span><span class="typ">Full</span></code>
</li>
        <li class="L3">
                <code><span class="typ">Apache</span><span class="pln"> </span><span class="typ">Secure</span></code>
</li>
        <li class="L4">
                <code><span class="typ">OpenSSH</span></code>
</li>
</ol>
<p>
        如你所见,Apache 和 OpenSSH 应用程序已安装 UFW 配置文件。你可以使用 <code>ufw app info "Profile Name"</code> 命令列出有关每个配置文件及其包含的规则的信息。</p>
<p>
        让我们研究一下 “Apache Full” 配置文件。 为此,请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> ufw app </span><span class="kwd">info</span><span class="pln"> </span><span class="str">"Apache Full"</span></code>
</li>
</ol>
<p>
        输出结果:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">Profile</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Apache</span><span class="pln"> </span><span class="typ">Full</span></code>
</li>
        <li class="L1">
                <code><span class="typ">Title</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Web</span><span class="pln"> </span><span class="typ">Server</span><span class="pln"> </span><span class="pun">(</span><span class="pln">HTTP</span><span class="pun">,</span><span class="pln">HTTPS</span><span class="pun">)</span></code>
</li>
        <li class="L2">
                <code><span class="typ">Description</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Apache</span><span class="pln"> v2 </span><span class="kwd">is</span><span class="pln"> the </span><span class="kwd">next</span><span class="pln"> generation of the omnipresent </span><span class="typ">Apache</span><span class="pln"> web</span></code>
</li>
        <li class="L3">
                <code><span class="pln">server</span><span class="pun">.</span></code>
</li>
        <li class="L4">
                 </li>
        <li class="L5">
                <code><span class="typ">Ports</span><span class="pun">:</span></code>
</li>
        <li class="L6">
                <code><span class="lit">80</span><span class="pun">,</span><span class="lit">443</span><span class="pun">/</span><span class="pln">tcp</span></code>
</li>
</ol>
<p>
        如你所见,“Apache Full” 配置文件包含了启用经由端口 <strong>80</strong> 和 <strong>443</strong> 的传输规则:</p>
<p>
        现在,运行以下命令配置允许 HTTP 和 HTTPS 传入通信:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> ufw allow </span><span class="kwd">in</span><span class="pln"> </span><span class="str">"Apache Full"</span></code>
</li>
        <li class="L1">
                <code><span class="typ">Rules</span><span class="pln"> updated</span></code>
</li>
        <li class="L2">
                <code><span class="typ">Rules</span><span class="pln"> updated </span><span class="pun">(</span><span class="pln">v6</span><span class="pun">)</span></code>
</li>
</ol>
<p>
        如果你不想允许 HTTP 通信,而只允许 HTTP(80) 通信,请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> ufw app </span><span class="kwd">info</span><span class="pln"> </span><span class="str">"Apache"</span></code>
</li>
</ol>
<h4 class="mume-header" id="12-%E6%B5%8B%E8%AF%95-apache-web-%E6%9C%8D%E5%8A%A1%E5%99%A8">
        1.2 测试 Apache Web 服务器</h4>
<p>
        现在,打开 Web 浏览器并导航到 http://localhost/ 或 http://IP-Address/ 来访问 Apache 测试页。</p>
<p class="article_img">
         </p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" alt="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" src="https://zhuji.jb51.net/uploads/img/202305/62531b2b53f3c69ac56e87b9813ce5cf.jpg"></p>
<p>
        如果看到上面类似的显示内容,那就成功了。 Apache 服务器正在工作!</p>
<h3 class="mume-header" id="2-%E5%AE%89%E8%A3%85-mysql">
        2. 安装 MySQL</h3>
<p>
         </p>
<p>
        在 Ubuntu 安装 MySQL 请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt install mysql</span><span class="pun">-</span><span class="pln">server</span></code>
</li>
</ol>
<p>
        使用以下命令验证 MySQL 服务是否正在运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">systemctl</span><span class="pln"> status mysql</span></code>
</li>
</ol>
<p>
        输出结果:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">mysql</span><span class="pun">.</span><span class="pln">service </span><span class="pun">-</span><span class="pln"> </span><span class="typ">MySQL</span><span class="pln"> </span><span class="typ">Community</span><span class="pln"> </span><span class="typ">Server</span></code>
</li>
        <li class="L1">
                <code><span class="typ">Loaded</span><span class="pun">:</span><span class="pln"> loaded </span><span class="pun">(</span><span class="str">/lib/</span><span class="kwd">systemd</span><span class="pun">/</span><span class="pln">system</span><span class="pun">/</span><span class="pln">mysql</span><span class="pun">.</span><span class="pln">service</span><span class="pun">;</span><span class="pln"> enabled</span><span class="pun">;</span><span class="pln"> vendor preset</span><span class="pun">:</span><span class="pln"> enab</span></code>
</li>
        <li class="L2">
                <code><span class="typ">Active</span><span class="pun">:</span><span class="pln"> active </span><span class="pun">(</span><span class="pln">running</span><span class="pun">)</span><span class="pln"> since </span><span class="typ">Tue</span><span class="pln"> </span><span class="lit">2019</span><span class="pun">-</span><span class="lit">02</span><span class="pun">-</span><span class="lit">05</span><span class="pln"> </span><span class="lit">11</span><span class="pun">:</span><span class="lit">07</span><span class="pun">:</span><span class="lit">50</span><span class="pln"> UTC</span><span class="pun">;</span><span class="pln"> </span><span class="lit">17s</span><span class="pln"> ago</span></code>
</li>
        <li class="L3">
                <code><span class="typ">Main</span><span class="pln"> PID</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3423</span><span class="pln"> </span><span class="pun">(</span><span class="pln">mysqld</span><span class="pun">)</span></code>
</li>
        <li class="L4">
                <code><span class="typ">Tasks</span><span class="pun">:</span><span class="pln"> </span><span class="lit">27</span><span class="pln"> </span><span class="pun">(</span><span class="pln">limit</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2320</span><span class="pun">)</span></code>
</li>
        <li class="L5">
                <code><span class="typ">CGroup</span><span class="pun">:</span><span class="pln"> </span><span class="str">/system.slice/</span><span class="pln">mysql</span><span class="pun">.</span><span class="pln">service</span></code>
</li>
        <li class="L6">
                <code><span class="pun">└─</span><span class="lit">3423</span><span class="pln"> </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">sbin</span><span class="pun">/</span><span class="pln">mysqld </span><span class="pun">--</span><span class="pln">daemonize </span><span class="pun">--</span><span class="pln">pid</span><span class="pun">-</span><span class="kwd">file</span><span class="pun">=</span><span class="str">/run/</span><span class="pln">mysqld</span><span class="pun">/</span><span class="pln">mysqld</span><span class="pun">.</span><span class="pln">pid</span></code>
</li>
        <li class="L7">
                 </li>
        <li class="L8">
                <code><span class="typ">Feb</span><span class="pln"> </span><span class="lit">05</span><span class="pln"> </span><span class="lit">11</span><span class="pun">:</span><span class="lit">07</span><span class="pun">:</span><span class="lit">49</span><span class="pln"> ubuntuserver </span><span class="kwd">systemd</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]:</span><span class="pln"> </span><span class="typ">Starting</span><span class="pln"> </span><span class="typ">MySQL</span><span class="pln"> </span><span class="typ">Community</span><span class="pln"> </span><span class="typ">Server</span><span class="pun">...</span></code>
</li>
        <li class="L9">
                <code><span class="typ">Feb</span><span class="pln"> </span><span class="lit">05</span><span class="pln"> </span><span class="lit">11</span><span class="pun">:</span><span class="lit">07</span><span class="pun">:</span><span class="lit">50</span><span class="pln"> ubuntuserver </span><span class="kwd">systemd</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]:</span><span class="pln"> </span><span class="typ">Started</span><span class="pln"> </span><span class="typ">MySQL</span><span class="pln"> </span><span class="typ">Community</span><span class="pln"> </span><span class="typ">Server</span><span class="pun">.</span></code>
</li>
</ol>
<p>
        MySQL 正在运行!</p>
<h4 class="mume-header" id="21-%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%94%A8%E6%88%B7root%E5%AF%86%E7%A0%81">
        2.1 配置数据库管理用户(root)密码</h4>
<p>
        默认情况下,MySQL root 用户密码为空。你需要通过运行以下脚本使你的 MySQL 服务器安全:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> mysql_secure_installation</span></code>
</li>
</ol>
<p>
        系统将询问你是否要安装 “VALIDATE PASSWORD plugin(密码验证插件)”。该插件允许用户为数据库配置强密码凭据。如果启用,它将自动检查密码的强度并强制用户设置足够安全的密码。<strong>禁用此插件是安全的</strong>。但是,必须为数据库使用唯一的强密码凭据。如果不想启用此插件,只需按任意键即可跳过密码验证部分,然后继续其余步骤。</p>
<p>
        如果回答是 <code>y</code>,则会要求你选择密码验证级别。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">Securing</span><span class="pln"> the </span><span class="typ">MySQL</span><span class="pln"> server deployment</span><span class="pun">.</span></code>
</li>
        <li class="L1">
                 </li>
        <li class="L2">
                <code><span class="typ">Connecting</span><span class="pln"> to </span><span class="typ">MySQL</span><span class="pln"> </span><span class="kwd">using</span><span class="pln"> a blank password</span><span class="pun">.</span></code>
</li>
        <li class="L3">
                 </li>
        <li class="L4">
                <code><span class="pln">VALIDATE PASSWORD PLUGIN can be used to </span><span class="kwd">test</span><span class="pln"> passwords</span></code>
</li>
        <li class="L5">
                <code><span class="kwd">and</span><span class="pln"> improve security</span><span class="pun">.</span><span class="pln"> </span><span class="typ">It</span><span class="pln"> checks the strength of password</span></code>
</li>
        <li class="L6">
                <code><span class="kwd">and</span><span class="pln"> allows the </span><span class="kwd">users</span><span class="pln"> to </span><span class="kwd">set</span><span class="pln"> only those passwords which are</span></code>
</li>
        <li class="L7">
                <code><span class="pln">secure enough</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Would</span><span class="pln"> you like to setup VALIDATE PASSWORD plugin</span><span class="pun">?</span></code>
</li>
        <li class="L8">
                 </li>
        <li class="L9">
                <code><span class="typ">Press</span><span class="pln"> y</span><span class="pun">|</span><span class="pln">Y </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Yes</span><span class="pun">,</span><span class="pln"> any other key </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> y</span></code>
</li>
</ol>
<p>
        可用的密码验证有 “low(低)”、 “medium(中)” 和 “strong(强)”。只需输入适当的数字(0 表示低,1 表示中,2 表示强密码)并按回车键。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">There</span><span class="pln"> are three levels of password validation policy</span><span class="pun">:</span></code>
</li>
        <li class="L1">
                 </li>
        <li class="L2">
                <code><span class="pln">LOW </span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">8</span></code>
</li>
        <li class="L3">
                <code><span class="pln">MEDIUM </span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">8</span><span class="pun">,</span><span class="pln"> numeric</span><span class="pun">,</span><span class="pln"> mixed </span><span class="kwd">case</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> special characters</span></code>
</li>
        <li class="L4">
                <code><span class="pln">STRONG </span><span class="typ">Length</span><span class="pln"> </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">8</span><span class="pun">,</span><span class="pln"> numeric</span><span class="pun">,</span><span class="pln"> mixed </span><span class="kwd">case</span><span class="pun">,</span><span class="pln"> special characters </span><span class="kwd">and</span><span class="pln"> dictionary </span><span class="kwd">file</span></code>
</li>
        <li class="L5">
                 </li>
        <li class="L6">
                <code><span class="typ">Please</span><span class="pln"> enter </span><span class="lit">0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> LOW</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> MEDIUM </span><span class="kwd">and</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> STRONG</span><span class="pun">:</span></code>
</li>
</ol>
<p>
        现在,输入 MySQL root 用户的密码。请注意,必须根据上一步中选择的密码策略,为 MySQL root 用户使用密码。如果你未启用该插件,则只需使用你选择的任意强度且唯一的密码即可。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">Please</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> the password </span><span class="kwd">for</span><span class="pln"> root here</span><span class="pun">.</span></code>
</li>
        <li class="L1">
                 </li>
        <li class="L2">
                <code><span class="typ">New</span><span class="pln"> password</span><span class="pun">:</span></code>
</li>
        <li class="L3">
                 </li>
        <li class="L4">
                <code><span class="typ">Re</span><span class="pun">-</span><span class="pln">enter </span><span class="kwd">new</span><span class="pln"> password</span><span class="pun">:</span></code>
</li>
        <li class="L5">
                 </li>
        <li class="L6">
                <code><span class="typ">Estimated</span><span class="pln"> strength of the password</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span></code>
</li>
        <li class="L7">
                <code><span class="typ">Do</span><span class="pln"> you wish to </span><span class="kwd">continue</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> the password provided</span><span class="pun">?(</span><span class="typ">Press</span><span class="pln"> y</span><span class="pun">|</span><span class="pln">Y </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Yes</span><span class="pun">,</span><span class="pln"> any other key </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">No</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> y</span></code>
</li>
</ol>
<p>
        两次输入密码后,你将看到密码强度(在此示例情况下为 50)。如果你确定可以,请按 <code>y</code> 继续提供的密码。如果对密码长度不满意,请按其他任意键并设置一个强密码。我现在的密码可以,所以我选择了<code>y</code>。</p>
<p>
        对于其余的问题,只需键入 <code>y</code> 并按回车键。这将删除匿名用户、禁止 root 用户远程登录并删除 <code>test</code>(测试)数据库。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="typ">Remove</span><span class="pln"> anonymous </span><span class="kwd">users</span><span class="pun">?</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Press</span><span class="pln"> y</span><span class="pun">|</span><span class="pln">Y </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Yes</span><span class="pun">,</span><span class="pln"> any other key </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">No</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> y</span></code>
</li>
        <li class="L1">
                <code><span class="typ">Success</span><span class="pun">.</span></code>
</li>
        <li class="L2">
                 </li>
        <li class="L3">
                <code><span class="typ">Normally</span><span class="pun">,</span><span class="pln"> root should only be allowed to connect </span><span class="kwd">from</span></code>
</li>
        <li class="L4">
                <code><span class="str">'localhost'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> ensures that someone cannot guess at</span></code>
</li>
        <li class="L5">
                <code><span class="pln">the root password </span><span class="kwd">from</span><span class="pln"> the network</span><span class="pun">.</span></code>
</li>
        <li class="L6">
                 </li>
        <li class="L7">
                <code><span class="typ">Disallow</span><span class="pln"> root </span><span class="kwd">login</span><span class="pln"> remotely</span><span class="pun">?</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Press</span><span class="pln"> y</span><span class="pun">|</span><span class="pln">Y </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Yes</span><span class="pun">,</span><span class="pln"> any other key </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">No</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> y</span></code>
</li>
        <li class="L8">
                <code><span class="typ">Success</span><span class="pun">.</span></code>
</li>
        <li class="L9">
                 </li>
        <li class="L0">
                <code><span class="typ">By</span><span class="pln"> </span><span class="kwd">default</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MySQL</span><span class="pln"> comes </span><span class="kwd">with</span><span class="pln"> a database named </span><span class="str">'test'</span><span class="pln"> that</span></code>
</li>
        <li class="L1">
                <code><span class="pln">anyone can access</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> </span><span class="kwd">is</span><span class="pln"> also intended only </span><span class="kwd">for</span><span class="pln"> testing</span><span class="pun">,</span></code>
</li>
        <li class="L2">
                <code><span class="kwd">and</span><span class="pln"> should be removed before moving into a production</span></code>
</li>
        <li class="L3">
                <code><span class="pln">environment</span><span class="pun">.</span></code>
</li>
        <li class="L4">
                 </li>
        <li class="L5">
                <code><span class="typ">Remove</span><span class="pln"> </span><span class="kwd">test</span><span class="pln"> database </span><span class="kwd">and</span><span class="pln"> access to it</span><span class="pun">?</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Press</span><span class="pln"> y</span><span class="pun">|</span><span class="pln">Y </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Yes</span><span class="pun">,</span><span class="pln"> any other key </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">No</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> y</span></code>
</li>
        <li class="L6">
                <code><span class="pun">-</span><span class="pln"> </span><span class="typ">Dropping</span><span class="pln"> </span><span class="kwd">test</span><span class="pln"> database</span><span class="pun">...</span></code>
</li>
        <li class="L7">
                <code><span class="typ">Success</span><span class="pun">.</span></code>
</li>
        <li class="L8">
                 </li>
        <li class="L9">
                <code><span class="pun">-</span><span class="pln"> </span><span class="typ">Removing</span><span class="pln"> privileges on </span><span class="kwd">test</span><span class="pln"> database</span><span class="pun">...</span></code>
</li>
        <li class="L0">
                <code><span class="typ">Success</span><span class="pun">.</span></code>
</li>
        <li class="L1">
                 </li>
        <li class="L2">
                <code><span class="typ">Reloading</span><span class="pln"> the privilege tables will </span><span class="kwd">ensure</span><span class="pln"> that all changes</span></code>
</li>
        <li class="L3">
                <code><span class="pln">made so far will take effect immediately</span><span class="pun">.</span></code>
</li>
        <li class="L4">
                 </li>
        <li class="L5">
                <code><span class="typ">Reload</span><span class="pln"> privilege tables now</span><span class="pun">?</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Press</span><span class="pln"> y</span><span class="pun">|</span><span class="pln">Y </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Yes</span><span class="pun">,</span><span class="pln"> any other key </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">No</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> y</span></code>
</li>
        <li class="L6">
                <code><span class="typ">Success</span><span class="pun">.</span></code>
</li>
        <li class="L7">
                 </li>
        <li class="L8">
                <code><span class="typ">All</span><span class="pln"> </span><span class="kwd">done</span><span class="pun">!</span></code>
</li>
</ol>
<p>
        以上就是为 MySQL root 用户设置密码。</p>
<h4 class="mume-header" id="22-%E6%9B%B4%E6%94%B9-mysql-%E8%B6%85%E7%BA%A7%E7%94%A8%E6%88%B7%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%96%B9%E6%B3%95">
        2.2 更改 MySQL 超级用户的身份验证方法</h4>
<p>
        默认情况下,Ubuntu 系统的 MySQL root 用户为 MySQL 5.7 版本及更新的版本使用插件 <code>auth_socket</code> 设置身份验证。尽管它增强了安全性,但是当你使用任何外部程序(例如 phpMyAdmin)访问数据库服务器时,也会变得更困难。要解决此问题,你需要将身份验证方法从 <code>auth_socket</code> 更改为 <code>mysql_native_password</code>。为此,请使用以下命令登录到你的 MySQL 提示符下:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> mysql</span></code>
</li>
</ol>
<p>
        在 MySQL 提示符下运行以下命令,找到所有 MySQL 当前用户帐户的身份验证方法:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">SELECT user</span><span class="pun">,</span><span class="pln">authentication_string</span><span class="pun">,</span><span class="pln">plugin</span><span class="pun">,</span><span class="pln">host FROM mysql</span><span class="pun">.</span><span class="pln">user</span><span class="pun">;</span></code>
</li>
</ol>
<p>
        输出结果:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pun">+------------------|-------------------------------------------|-----------------------|-----------+</span></code>
</li>
        <li class="L1">
                <code><span class="pun">|</span><span class="pln"> user </span><span class="pun">|</span><span class="pln"> authentication_string </span><span class="pun">|</span><span class="pln"> plugin </span><span class="pun">|</span><span class="pln"> host </span><span class="pun">|</span></code>
</li>
        <li class="L2">
                <code><span class="pun">+------------------|-------------------------------------------|-----------------------|-----------+</span></code>
</li>
        <li class="L3">
                <code><span class="pun">|</span><span class="pln"> root </span><span class="pun">|</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> auth_socket </span><span class="pun">|</span><span class="pln"> localhost </span><span class="pun">|</span></code>
</li>
        <li class="L4">
                <code><span class="pun">|</span><span class="pln"> mysql</span><span class="pun">.</span><span class="pln">session </span><span class="pun">|</span><span class="pln"> </span><span class="pun">*</span><span class="pln">THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE </span><span class="pun">|</span><span class="pln"> mysql_native_password </span><span class="pun">|</span><span class="pln"> localhost </span><span class="pun">|</span></code>
</li>
        <li class="L5">
                <code><span class="pun">|</span><span class="pln"> mysql</span><span class="pun">.</span><span class="pln">sys </span><span class="pun">|</span><span class="pln"> </span><span class="pun">*</span><span class="pln">THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE </span><span class="pun">|</span><span class="pln"> mysql_native_password </span><span class="pun">|</span><span class="pln"> localhost </span><span class="pun">|</span></code>
</li>
        <li class="L6">
                <code><span class="pun">|</span><span class="pln"> debian</span><span class="pun">-</span><span class="pln">sys</span><span class="pun">-</span><span class="pln">maint </span><span class="pun">|</span><span class="pln"> </span><span class="pun">*</span><span class="pln">F126737722832701DD3979741508F05FA71E5BA0 </span><span class="pun">|</span><span class="pln"> mysql_native_password </span><span class="pun">|</span><span class="pln"> localhost </span><span class="pun">|</span></code>
</li>
        <li class="L7">
                <code><span class="pun">+------------------|-------------------------------------------|-----------------------|-----------+</span></code>
</li>
        <li class="L8">
                <code><span class="lit">4</span><span class="pln"> rows </span><span class="kwd">in</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">(</span><span class="lit">0.00</span><span class="pln"> sec</span><span class="pun">)</span></code>
</li>
</ol>
<p class="article_img">
         </p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" alt="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/009aa588ecafcedab1e67ea35f78f327.jpg" width="auto"></p>
<p>
        如你所见,Mysql root 用户使用 <code>auth_socket</code> 插件进行身份验证。</p>
<p>
        要将此身份验证更改为 <code>mysql_native_password</code> 方法,请在 MySQL 提示符下运行以下命令。 别忘了用你选择的强大唯一的密码替换 <code>password</code>。 如果已启用 VALIDATION 插件,请确保已根据当前策略要求使用了强密码。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">ALTER USER </span><span class="str">'root'</span><span class="pun">@</span><span class="str">'localhost'</span><span class="pln"> IDENTIFIED WITH mysql_native_password BY </span><span class="str">'password'</span><span class="pun">;</span></code>
</li>
</ol>
<p>
        使用以下命令更新数据库:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">FLUSH PRIVILEGES</span><span class="pun">;</span></code>
</li>
</ol>
<p>
        使用命令再次检查身份验证方法是否已更改:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">SELECT user</span><span class="pun">,</span><span class="pln">authentication_string</span><span class="pun">,</span><span class="pln">plugin</span><span class="pun">,</span><span class="pln">host FROM mysql</span><span class="pun">.</span><span class="pln">user</span><span class="pun">;</span></code>
</li>
</ol>
<p>
        输出结果:</p>
<p class="article_img">
         </p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" alt="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/f626e2cfd6c51a1e0ca2b77af9b47ebc.jpg" width="auto"></p>
<p>
        好!MySQL root 用户就可以使用密码进行身份验证来访问 <code>mysql shell</code>。</p>
<p>
        从 MySQL 提示符下退出:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="kwd">exit</span></code>
</li>
</ol>
<h3 class="mume-header" id="3-%E5%AE%89%E8%A3%85-php">
        3. 安装 PHP</h3>
<p>
         </p>
<p>
        安装 PHP 请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt install php libapache2</span><span class="pun">-</span><span class="pln">mod</span><span class="pun">-</span><span class="pln">php php</span><span class="pun">-</span><span class="pln">mysql</span></code>
</li>
</ol>
<p>
        安装 PHP 后,在 Apache 文档根目录中创建 <code>info.php</code> 文件。通常,在大多数基于 Debian 的 Linux 发行版中,Apache 文档根目录为 <code>/var/www/html/</code> 或 <code>/var/www/</code>。Ubuntu 18.04 LTS 系统下,文档根目录是 <code>/var/www/html/</code>。</p>
<p>
        在 Apache 根目录中创建 <code>info.php</code> 文件:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">vi</span><span class="pln"> </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">www</span><span class="pun">/</span><span class="pln">html</span><span class="pun">/</span><span class="kwd">info</span><span class="pun">.</span><span class="pln">php</span></code>
</li>
</ol>
<p>
        在此文件中编辑如下内容:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pun">&lt;?</span><span class="pln">php</span></code>
</li>
        <li class="L1">
                <code><span class="pln">phpinfo</span><span class="pun">();</span></code>
</li>
        <li class="L2">
                <code><span class="pun">?&gt;</span></code>
</li>
</ol>
<p>
        然后按下 <code>ESC</code> 键并且输入 <code>:wq</code> 保存并退出此文件。重新启动 Apache 服务使更改生效。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">systemctl</span><span class="pln"> restart apache2</span></code>
</li>
</ol>
<h4 class="mume-header" id="31-%E6%B5%8B%E8%AF%95-php">
        3.1 测试 PHP</h4>
<p>
        打开 Web 浏览器,然后导航到 URL http://IP地址/info.php。</p>
<p>
        你就将看到 PHP 测试页面。</p>
<p class="article_img">
         </p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" alt="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/558b645461c48c976bf496967d688328.jpg" width="auto"></p>
<p>
        通常,当用户向 Web 服务器发出请求时,Apache 首先会在文档根目录中查找名为 <code>index.html</code> 的文件。如果你想将 Apache 更改为 <code>php</code> 文件提供服务而不是其他文件,请将 <code>dir.conf</code> 配置文件中的 <code>index.php</code> 移至第一个位置,如下所示:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">vi</span><span class="pln"> </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">apache2</span><span class="pun">/</span><span class="pln">mods</span><span class="pun">-</span><span class="pln">enabled</span><span class="pun">/</span><span class="kwd">dir</span><span class="pun">.</span><span class="pln">conf</span></code>
</li>
</ol>
<p>
        上面的配置文件(<code>dir.conf</code>) 内容如下:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="tag">&lt;IfModule</span><span class="pln"> </span><span class="atn">mod_dir</span><span class="pln">.</span><span class="atn">c</span><span class="tag">&gt;</span></code>
</li>
        <li class="L1">
                <code><span class="pln">DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm</span></code>
</li>
        <li class="L2">
                <code><span class="tag">&lt;/IfModule&gt;</span></code>
</li>
        <li class="L3">
                 </li>
        <li class="L4">
                <code><span class="pln"># vim: syntax=apache ts=4 sw=4 sts=4 sr noet</span></code>
</li>
</ol>
<p>
        将 <code>index.php</code> 移动到最前面。更改后,<code>dir.conf</code> 文件内容看起来如下所示。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="tag">&lt;IfModule</span><span class="pln"> </span><span class="atn">mod_dir</span><span class="pln">.</span><span class="atn">c</span><span class="tag">&gt;</span></code>
</li>
        <li class="L1">
                <code><span class="pln">DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm</span></code>
</li>
        <li class="L2">
                <code><span class="tag">&lt;/IfModule&gt;</span></code>
</li>
        <li class="L3">
                 </li>
        <li class="L4">
                <code><span class="pln"># vim: syntax=apache ts=4 sw=4 sts=4 sr noet</span></code>
</li>
</ol>
<p>
        然后按下 <code>ESC</code> 键并且输入 <code>:wq</code> 保存并关闭此文件。重新启动 Apache 服务使更改生效。</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">systemctl</span><span class="pln"> restart apache2</span></code>
</li>
</ol>
<h4 class="mume-header" id="32-%E5%AE%89%E8%A3%85-php-%E6%A8%A1%E5%9D%97">
        3.2 安装 PHP 模块</h4>
<p>
        为了增加 PHP 的功能,可以安装一些其他的 PHP 模块。</p>
<p>
        要列出可用的 PHP 模块,请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt</span><span class="pun">-</span><span class="pln">cache search php</span><span class="pun">-</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="kwd">less</span></code>
</li>
</ol>
<p>
        输出结果:</p>
<p class="article_img">
         </p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" alt="在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件" src="https://zhuji.jb51.net/uploads/img/202305/4ed39611fa72d891401bee136c6a8ace.jpg"></p>
<p>
        使用方向键浏览结果。要退出,请输入 <code>q</code> 并按下回车键。</p>
<p>
        要查找任意 <code>php</code> 模块的详细信息,例如 <code>php-gd</code>,请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt</span><span class="pun">-</span><span class="pln">cache show php</span><span class="pun">-</span><span class="pln">gd</span></code>
</li>
</ol>
<p>
        安装 PHP 模块请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> apt install php</span><span class="pun">-</span><span class="pln">gd</span></code>
</li>
</ol>
<p>
        安装所有的模块(虽然没有必要),请运行:</p>
<ol class="linenums">
<li class="L0">
                <code><span class="pln">$ </span><span class="kwd">sudo</span><span class="pln"> </span><span class="kwd">apt-get</span><span class="pln"> install php</span><span class="pun">*</span></code>
</li>
</ol>
<p>
        安装任何 <code>php</code> 模块后,请不要忘记重新启动 Apache 服务。要检查模块是否已加载,请在浏览器中打开 <code>info.php</code> 文件并检查是否存在。</p>
<p>
        接下来,你可能需要安装数据库管理工具,以通过 Web 浏览器轻松管理数据库。如果是这样,请按照以下链接中的说明安装 <code>phpMyAdmin</code>。</p>
<p>
        祝贺你!我们已经在 Ubuntu 服务器中成功配置了 LAMP 套件。</p>
<p>
        原文地址:https://linux.cn/article-13041-1.html</p>
頁: [1]
查看完整版本: 在 Ubuntu 中安装 Apache、MySQL、PHP(LAMP)套件