越飞 發表於 2023-10-17 00:00:00

CentOS 7.x下的LEMP环境搭建详细教程

<p>
        最近由于项目需求,将服务器从centos6升级到centos7,对应的php版本也升级到php5.6。我们熟悉的有lemp环境一键安装包,但是本文我们将单独安装各个组件模块,并搭建一个完整的php运行平台。</p>
<p>
        我们常说的lnmp环境是指linux/nginx/mysql/php组合,而lemp是什么呢?其实nginx的发音是engine-x = e,lemp包是由linux、nginx、mariadb/mysql和php组成的,那么看来lemp和lnmp是一样的,而现在业内习惯性的称作lemp。mariadb是一款社区支持驱动的mysql数据库的分支,其功能更多性能更佳,所以我们在centos7下安装mariadb。centos7我已经安装好了,现在只需安装nginx,mariadb和php。</p>
<p>
        <span><strong>1、安装nginx</strong></span></p>
<p>
        我们从nginx官方的rpm源来安装一个预构建的稳定版本的nginx包。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_621360">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">rpm --</code><code class="bash functions">import</code> <code class="bash plain">http:</code><code class="bash plain">//nginx</code><code class="bash plain">.org</code><code class="bash plain">/keys/nginx_signing</code><code class="bash plain">.key </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">rpm -ivh http:</code><code class="bash plain">//nginx</code><code class="bash plain">.org</code><code class="bash plain">/packages/centos/7/noarch/rpms/nginx-release-centos-7-0</code><code class="bash plain">.el7.ngx.noarch.rpm </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">nginx</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        这样,nginx就安装上了,安装完成后,nginx不会自动启动。现在需要做的是让nginx自动启动,另外还要做些配置让其可以随着操作系统启动而启动。我们也需要在防火墙里打开tcp/80端口,以使得可以远程访问nginx的web服务。所有这些操作、设置都只需要输入如下命令就可实现。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_500014">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl start nginx </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl </code><code class="bash functions">enable</code> <code class="bash plain">nginx </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">firewall-cmd --zone=public --add-port=80</code><code class="bash plain">/tcp</code> <code class="bash plain">--permanent </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">firewall-cmd --reload</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        nginx已经启动了,现在来测试nginx。nginx在centos7下的默认文档要目录是/usr/share/nginx/html。默认的 index.html 文件一定已经在这目录下了。让我们检测下是否可以访问到这个测试 web 页,输入 http://nginx的ip地址/访问。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="CentOS 7.x下的LEMP环境搭建详细教程" alt="CentOS 7.x下的LEMP环境搭建详细教程" src="https://zhuji.jb51.net/uploads/img/202305/fb84513a0175ed87eeb5bbddf00576d4.jpg"></p>
<p>
        <span><strong>2、安装mariadb/mysql</strong></span></p>
<p>
        centos/rhel 7使用了mariadb替代了默认的 mysql。作为mysql的简单替代品,mariadb保证了与mysql的api和命令行用法方面最大的兼容性。下面是关于怎么在 centos7上安装和配置maradb/mysql的操作示例。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_461400">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">mariadb-server </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl start mariadb </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl </code><code class="bash functions">enable</code> <code class="bash plain">mariadb</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        在成功启动mariadb/mysql服务后,还要进行数据库的安全配置,如设置(非空)的root密码、删除匿名用户、锁定远程访问。执行如下代码:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_584922">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">mysql_secure_installation</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        根据提示设置root密码,以及删除匿名用户等操作。</p>
<p>
        <span><strong>3、安装php</strong></span></p>
<p>
        php是lemp包中一个重要的组件,它负责把存储在mariadb/mysql服务器的数据取出生成动态内容。为了lemp 需要,您至少需要安装上php-fpm和php-mysql两个模块。php-fpm(fastcgi 进程管理器)实现的是nginx服务器和生成动态内容的php应用程序的访问接口。php-mysql模块使php程序能访问 mariadb/mysql数据库。</p>
<p>
        首先检查当前安装的php包。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_288612">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">yum list installed | </code><code class="bash functions">grep</code> <code class="bash plain">php</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        如果有安装的php包,先删除他们。</p>
<p>
        给yum安装添加源包。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_312761">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">rpm -uvh https:</code><code class="bash plain">//mirror</code><code class="bash plain">.webtatic.com</code><code class="bash plain">/yum/el7/epel-release</code><code class="bash plain">.rpm </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">rpm -uvh https:</code><code class="bash plain">//mirror</code><code class="bash plain">.webtatic.com</code><code class="bash plain">/yum/el7/webtatic-release</code><code class="bash plain">.rpm</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        运行yum install。</p>
<p>
        使用yum命令来定制php引擎,安装一些php扩展模块包。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_162348">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        然后安装php fpm。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_335281">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">php56w-fpm</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        最后,启动 php-fpm</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_82725">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl start php-fpm </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl </code><code class="bash functions">enable</code> <code class="bash plain">php-fpm</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        4、配置lemp,让nginx支持php</p>
<p>
        首先,禁用随php包安装的httpd服务。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_400255">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl disable httpd</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        接下来,配置nginx虚拟主机,使得nginx可以通过php-fpm来处理php的任务。用文本编辑器打开/etc/nginx/conf.d/default.conf,然后按如下所示修改。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_199492">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                        <div class="line number28 index27 alt1">
                                                                28</div>
                                                        <div class="line number29 index28 alt2">
                                                                29</div>
                                                        <div class="line number30 index29 alt1">
                                                                30</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">server { </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">listen 80; </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">server_name localhost; </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">root </code><code class="bash plain">/usr/share/nginx/html</code><code class="bash plain">; </code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">index index.php index.html index.htm; </code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash comments">#charset koi8-r; </code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash comments">#access_log /var/log/nginx/log/host.access.log main; </code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">location / { </code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">} </code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash comments">#error_page 404 /404.html; </code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash comments"># redirect server error pages to the static page /50x.html </code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash comments"># </code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">error_page 500 502 503 504 </code><code class="bash plain">/50x</code><code class="bash plain">.html; </code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">location = </code><code class="bash plain">/50x</code><code class="bash plain">.html { </code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="bash plain">} </code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash comments"># proxy the php scripts to apache listening on 127.0.0.1:80 </code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="bash comments"># </code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="bash comments">#location ~ \.php$ { </code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="bash comments"># proxy_pass http://127.0.0.1; </code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="bash comments">#} </code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="bash comments"># pass the php scripts to fastcgi server listening on 127.0.0.1:9000 </code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="bash comments"># </code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="bash plain">location ~ \.php$ { </code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                        <code class="bash plain">try_files $uri =404; </code>
</div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="bash plain">fastcgi_pass 127.0.0.1:9000; </code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                        <code class="bash plain">fastcgi_index index.php; </code>
</div>
                                                                <div class="line number27 index26 alt2">
                                                                        <code class="bash plain">fastcgi_param script_filename $document_root$fastcgi_script_name; </code>
</div>
                                                                <div class="line number28 index27 alt1">
                                                                        <code class="bash plain">include fastcgi_params; </code>
</div>
                                                                <div class="line number29 index28 alt2">
                                                                        <code class="bash plain">} </code>
</div>
                                                                <div class="line number30 index29 alt1">
                                                                        <code class="bash plain">}</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        然后,配置php, 修改/etc/php.ini。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_21235">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">cgi.fix_pathinfo=1 </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash functions">date</code><code class="bash plain">.timezone = prc</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        最后,测试nginx是否能处理php页面。在测试之前,请确保重启nginx和php-fpm。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_803839">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl restart nginx </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">$ </code><code class="bash functions">sudo</code> <code class="bash plain">systemctl restart php-fpm</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        创建一个叫名叫test.php的文件,然后写入如下内容,并放入/usr/share/nginx/html/目录。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_180105">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">&lt;?php </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">phpinfo(); </code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">?&gt;</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        打开浏览器,输入 http://nginx的ip地址/test.php 。看到以下界面则lemp安装完成。</p>
<p>
        <img style="max-width:100%!important;height:auto!important;"title="CentOS 7.x下的LEMP环境搭建详细教程" alt="CentOS 7.x下的LEMP环境搭建详细教程" src="https://zhuji.jb51.net/uploads/img/202305/37921a430d330ad8caed9f8454e578c9.jpg"></p>
<p>
        以上所述是小编给大家介绍的centos 7.x下的lemp环境搭建详细教程,希望对大家有所帮助</p>
頁: [1]
查看完整版本: CentOS 7.x下的LEMP环境搭建详细教程