Deepin LNMP环境搭建

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

仓库中的 php7.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>

如果仓库中没有需要的版本

  1. 首先更新下仓库
<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">sudo apt update sudo apt upgrade </code></pre></td></tr></tbody></table>
  1. 添加存储仓库
<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 software-properties-common add-apt-repository ppa:ondrej/php sudo apt update </code></pre></td></tr></tbody></table>

现在仓库中搜索就可以找到 7.2 7.3 版本的 php

<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 install php7.2 <span class="c1"># 安装同版本的模块使用 sudo apt install php7.2- tab键自动补全,根据提示安装扩展</span> </code></pre></td></tr></tbody></table>

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></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">wget https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb </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><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>

配置 nginxphp

新增 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 内容如下

<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><span class="lnt">11 </span><span class="lnt">12 </span><span class="lnt">13 </span><span class="lnt">14 </span><span class="lnt">15 </span><span class="lnt">16 </span><span class="lnt">17 </span><span class="lnt">18 </span><span class="lnt">19 </span><span class="lnt">20 </span><span class="lnt">21 </span><span class="lnt">22 </span><span class="lnt">23 </span><span class="lnt">24 </span><span class="lnt">25 </span><span class="lnt">26 </span><span class="lnt">27 </span><span class="lnt">28 </span><span class="lnt">29 </span><span class="lnt">30 </span><span class="lnt">31 </span><span class="lnt">32 </span><span class="lnt">33 </span></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash">server <span class="o">{</span> listen 80<span class="p">;</span> server_name example.com<span class="p">;</span> root /example.com/public<span class="p">;</span>
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 的地址

<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></code></pre></td><td class="lntd"><pre class="chroma"><code class="language-bash" data-lang="bash"><span class="o">[</span>global<span class="o">]</span> <span class="p">;</span> Pid file <span class="p">;</span> Note: the default prefix is /var <span class="p">;</span> Default Value: none <span class="nv">pid</span> <span class="o">=</span> /run/php/php7.3-fpm.pid </code></pre></td></tr></tbody></table>

所以配置为 fastcgi_pass unix:/run/php/php7.3-fpm.sock

关于 nginxphp 的配置可参考 laravel官方文档

本文转自 https://www.caoayu.xyz/post/deepin-lnmp/,如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )