LNMP
lnmp 是一个常见的web开发的环境,尤其对于 phper 来说,基本是必须要使用的一套环境。但是在 Linux 下的安装和配置并不是那么容易,所以近些年涌现了不少的一键安装方案,比如 lnmp、宝塔等。基本满足了日常的使用,但是如果不自己动手打通每个软件直接的配置与关联,我们就无法深入的去理解各个软件之间是如何协作的。而且往往集成环境的各种细节也不太清楚,如果想要扩展或是有出现错误,有时也很难短时间的解决。所以独立安装会让我们更清晰的了解整个的流程,对于错误也更好的去分析是那个环节出现了问题。
Linux
本文基于 deepin 环境,所以不需要再安装配置 linux 环境。
Nginx
仓库中的 nginx 就可以使用,一般 nginx 不需要安装太新的版本。
如果安装过可以不用安装,或者卸载重新安装
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">sudo apt remove nginx --purge # </code></pre></td></tr></tbody></table>安装
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">sudo apt install nginx nginx -v <span class="c1"># 验证是否安装成功</span> service nginx status <span class="c1"># 查看 nginx 的运行状态 stop停止 restart重启</span> </code></pre></td></tr></tbody></table>PHP
仓库中的 php 是 7.3版本,直接安装仓库中的 php7.3-fpm
同样,安装过想要重新安装可以先卸载
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">sudo apt remove php7.3-fpm --purge </code></pre></td></tr></tbody></table>安装
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span><span class="lnt">4 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">sudo apt install php7.3-fpm <span class="c1"># 安装扩展,有时运行项目提示没有扩展,需要使用下面命令安装</span> sudo apt install php7.3-xml php7.3-curl php7.3-mbstring php7.3-xml <span class="c1"># 如果还需要扩展可以使用 sudo apt install php7.3- 加Tab键自动提示所有的扩展,然后选择需要的扩展进行安装</span> </code></pre></td></tr></tbody></table>如果仓库中没有需要的版本
- 首先更新下仓库
- 添加存储仓库
现在仓库中搜索就可以找到 7.2 7.3 版本的 php
MYSQL
deepin 环境中看到社区很多反映的就是 mysql 的安装问题,要不然是版本太低,要不然是配置失败
其实这些软件,在官网都会有每个发行版,每个架构的安装和使用方法,只要耐心查看,安装和使用是没有问题的。
这里我们使用的是 deepin 所以选择 mysql apt repository 进入
这里可以点击下载,使用 No thinks 那个选项下载,下载 mysql 的官方源 deb 包,也可以复制链接 使用 wget 下载
安装
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt"> 1 </span><span class="lnt"> 2 </span><span class="lnt"> 3 </span><span class="lnt"> 4 </span><span class="lnt"> 5 </span><span class="lnt"> 6 </span><span class="lnt"> 7 </span><span class="lnt"> 8 </span><span class="lnt"> 9 </span><span class="lnt">10 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb <span class="c1"># 就会进入安装源的过程</span> <span class="c1"># 选择 mysql-server</span> <span class="c1"># 版本 根据自己需要进行选择</span> <span class="c1"># 最后选择 ok</span>sudo apt update <span class="c1"># 更新 安装源成功就会看到有 mysql 的源输出</span> sudo apt install mysql-server <span class="c1"># 安装 mysql 服务</span> <span class="c1"># 输入 y</span> <span class="c1"># 会弹框提示输入密码,输入两次即可</span> <span class="c1"># 会让认证插件, 一般选择第二个,第一个可能兼容性不好。</span> </code></pre></td></tr></tbody></table>

验证
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span><span class="lnt">3 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">mysql -uroot -p <span class="c1"># 输入密码</span> <span class="c1"># 成功进入mysql终端</span> </code></pre></td></tr></tbody></table>
composer安装
安装完如果有问题,记得加入执行权限
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">sudo chmod a+x /usr/bin/composer </code></pre></td></tr></tbody></table>配置阿里云镜像源
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">composer config -g repo.packagist composer mirrors.aliyun.com/composer/ </code></pre></td></tr></tbody></table>配置 nginx 与 php
新增 nginx 配置文件,默认配置文件在 /etc/nginx/nginx.config
可以看到默认配置文件的引入文件内容
<table class="lntable"><tbody><tr><td class="lntd"><pre class="chroma"><code><span class="lnt">1 </span><span class="lnt">2 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">include /etc/nginx/conf.d/*.conf<span class="p">;</span> include /etc/nginx/sites-enabled/*<span class="p">;</span> </code></pre></td></tr></tbody></table>所以我们不需要更改默认的配置,只需要在者两个目录下新建配置文件就可以被加载进来,推荐将文件新建到 /etc/nginx/sites-enabled/ ,可以看到有个默认的 default 文件,为了避免冲突,可以将这个文件的内容全部注释,或者将文件移动到其他不会加载的位置。推荐将文件名设置为 项目名,后缀为 .conf 即可。比如新建 caoayu.xyz.conf 内容如下
1add_header X-Frame-Options <span class="s2">"SAMEORIGIN"</span><span class="p">;</span> 2add_header X-XSS-Protection <span class="s2">"1; mode=block"</span><span class="p">;</span> 3add_header X-Content-Type-Options <span class="s2">"nosniff"</span><span class="p">;</span> 4 5index index.html index.htm index.php<span class="p">;</span> 6 7charset utf-8<span class="p">;</span> 8 9location / <span class="o">{</span> 10 try_files <span class="nv">$uri</span> <span class="nv">$uri</span>/ /index.php?<span class="nv">$query_string</span><span class="p">;</span> 11<span class="o">}</span> 12 13<span class="nv">location</span> <span class="o">=</span> /favicon.ico <span class="o">{</span> access_log off<span class="p">;</span> log_not_found off<span class="p">;</span> <span class="o">}</span> 14<span class="nv">location</span> <span class="o">=</span> /robots.txt <span class="o">{</span> access_log off<span class="p">;</span> log_not_found off<span class="p">;</span> <span class="o">}</span> 15 16error_page <span class="m">404</span> /index.php<span class="p">;</span> 17 18location ~ <span class="se">\.</span>php$ <span class="o">{</span> 19 fastcgi_split_path_info ^<span class="o">(</span>.+<span class="se">\.</span>php<span class="o">)(</span>/.+<span class="o">)</span>$<span class="p">;</span> 20 fastcgi_pass unix:/run/php/php7.3-fpm.sock<span class="p">;</span> <span class="c1"># fpm的sock地址</span> 21 fastcgi_index index.php<span class="p">;</span> 22 include fastcgi_params<span class="p">;</span> 23<span class="o">}</span> 24 25location ~ /<span class="se">\.</span><span class="o">(</span>?!well-known<span class="o">)</span>.* <span class="o">{</span> 26 deny all<span class="p">;</span> 27<span class="o">}</span>
<span class="o">}</span> </code></pre></td></tr></tbody></table>
关于 php-fpm 的地址,也就是 fastcgi_pass 那一项的值,我们找到 php-fmp 的配置文件,在 /etc/php/7.3/fpm/php-fpm.conf ,可以看到 sock 的地址
所以配置为 fastcgi_pass unix:/run/php/php7.3-fpm.sock
关于 nginx 与 php 的配置可参考 laravel官方文档
本文转自 https://www.caoayu.xyz/post/deepin-lnmp/,如有侵权,请联系删除。
