🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余8个优惠名额) →

博客

《LEMP》PHP 网站的运行环境

LEMP 指的是用  PHP 语言编写的网站应用的运行环境。L 表示 Linux,是一种服务器操作系统。E 表示 Nginx, 是一种 Web 服务器,简称 E,是因为它的读音是 Engine X。M 表示 MySQL 或 MariaDB,是一款数据库管理系统。P 表示 PHP,这里指的是 PHP 语言的解释器。

Linux

Linux 是一种操作系统,因为它更安全,更可靠,所以你的网站要运行在安装了 Linux 操作系统的服务器上。它有很多发行版,你可以随便选择一个,比如 CentOS 或 Ubuntu。我们有本手册介绍了 CentOS 这种 Linux 操作系统。宁皓网的服务器用的就是 CentOS 这种操作系统。

Nginx

Nginx 是一种 Web 服务器,你在服务器上安装了这种 Web 服务器软件以后,你的服务器就可以对外提供 Web 服务了。也就是用户可以访问你的服务器,去请求一些资源。如果是静态资源,比如图像,css,js 文件,Nginx 会直接返回给用户,如果用户请求的是 PHP,Nginx 会把请求交给 PHP 处理,处理之后的结果会再交给 Nginx,然后 Nginx 会把最终的结果交给当初发出请求的用户。

MySQL / MariaDB

MySQL 是一种数据库管理系统,它有个社区版叫 MariaDB,你可以任意选择其中的一个。网站上的很多内容要存储在数据库里,比如用户资料,文章,评论等等。程序语言(比如:PHP)通过接口可以把数据放到数据库系统里,也可以从数据库系统里提取数据。

PHP

PHP 在这里指的是 PHP  语言的解释器。在用 PHP 语言写的网站的运行环境里,只有 PHP 解释器懂 PHP 语言。所以 Nginx 遇到对 PHP 文件的请求,就会把请求交给 PHP 解释器。这个解释器与 Nginx 之间需要一个中间人相互沟通,这个中间人叫 PHP-FPM。

在线阅读

https://lemp.ninghao.net/

Drupal 8:本地开发调试

在本地开发 Drupal 8 网站,你需要做点特别的设置,比如不让 Drupal 合并网站使用的 CSS 与 JS  文件,禁用掉 Drupal 的缓存等等。不然你修改了某个地方想看到修改之后的结果,每次都得先去重建一下 Drupal 的缓存。

本地配置文件

为本地开发环境准备一个特别的配置文件,这个配置文件只在本地开发环境上存在,也就是你不需要把这个配置文件放到项目仓库里做版本控制。在这个本地配置文件里,去做一些特别的配置,这样这些配置就只会存在于本地开发环境上。

Drupal 默认的配置文件叫 settings.php,它会在网站目录的下面,比如 sites/default/settings.php,打开这个配置文件,然后查看下面这段代码:

# if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
#   include $app_root . '/' . $site_path . '/settings.local.php';
# }

去掉代码前面的注释符号,让它生效:

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

意思就是,如果网站目录下面的存在 settings.local.php 文件,就把它载入进来。这个文件 Drupal 已经准备好了一个参考示例,位置是在 sites/example.settings.local.php,复制一份这个文件,把它放在 sites/default/settings.local.php

Drupal 8:在 Docker 环境里运行

今天的任务是在本地创建一个可以运行在 Docker 上的 Drupal 8 项目。运行环境我已经做好了,用的就是 nest ,这个项目 Compose 了一个一般的 PHP 网站的运行环境,包含 NGINX,PHP,MariaDB,PHPMyAdmin 这些服务。Drupal 8 应该现在推荐用 PHP 的包管理工具 Composer 创建,安装 Drupal 可以用 Drupal Console 或 Drush。现在先介绍一下过程。

运行环境

先把我做的 nest 克隆到本地,放在 ninghao 这个目录的下面。如果你想更折腾一下,可以把 nest 仓库 fork 到自己的 github 帐号下面,然后克隆自己的 nest 远程,这样你可以修改项目,并且如果你觉得自己的修改对别人有帮助,可以对我的 nest 提交 pull request 。

下面我们直接克隆 ninghao 的 nest:

git clone https://github.com/ninghao/nest.git ninghao

用 Docker 搭建本地开发环境

使用 Docker 可以在本地为网站搭建一个开发环境,在本地开发时,通常我们会把网站的代码共享到容器里,这样可以直接编辑网站代码,然后立即看到运行结果。在生产环境下,我们需要把网站的代码 Build 到镜像里。在本地使用 Docker,需要用到 Docker for Windows 或 Docker for Mac 。它提供了很好的本地体验,但最大的问题是共享数据卷的性能非常差。注意这并不是 Docker 本身的问题。你在生产环境上用的 Docker 的共享数据卷不会有任何性能问题。

下面先介绍下原因,然后介绍一下我的解决方案。Docker for Windows 以下简称为 DFW,Docker for Mac 以下简称为 DFM。

原因

首先要知道 Docker 引擎只能在 Linux 核心的系统上运行,Windows 与 macOS 系统上是不能直接运行 Docker 引擎的。最开始的解决方案是在本地创建虚拟机,也就是 Docker Machine 提供的功能。创建一台 Linux 系统的虚拟机,并且上面已经安装好了 Docker 。 后来 Docker 公司为了让 Docker 在我们平时工作的电脑上有很好的本地化体验,推出了我们现在用的 Docker for Windows 与 Docker for Mac。

《CentOS》一种 Linux 服务器操作系统

你的网站最终是要运行在安装了 Linux 操作系统的服务器上,所以如果你打算运营一个网站,一定要了解一下 Linux 操作系统。Linux 的种类有挺多,这些不同类型的 Linux 被称为是 Linux 的发行版,其中 CentOS 就是一种常用的 Linux 服务器操作系统。

作为开发者与网站运营者,理解与掌握 Linux 操作系统是必备技能。我们可以先从 CentOS 开始,不同类型的 Linux 的操作会存在不同,但大部分东西也都是通用的。所以学会了其中的一种 Linux,再去使用其它类型的 Linux 也会很容易了。因为原理是一样的,只不是使用的工具的名字与方法可能会存在差异。

在线阅读

https://centos.ninghao.net/

连接小商业与自由职业者的 Lorem 融了 $110万

关于自由职业的商业我都比较感兴趣,我自认为也是自由职业生态里的一小部分。最近看到了 Lorem 融到了 $110万 种子资金。它提供的是把需要技术支持的小商业与自由职业者连接到了一块儿的服务。小商业需要技术支持,比如修复网站的 Bug,定制个小功能,集成个什么服务之类的。而自由职业需要通过出售自己的技术与时间得到相应的报酬。

Lorem 的模式当然是急切被需要的,我自己有亲身经历。前阵子,一位朋友找到我,说他收到阿里云通知,要升级一批老服务器,升级以后服务器会有变动,一是 IP 地址变了,二是磁盘挂载点变了。这让我朋友非常头痛,他是做动画的,团队里也没人懂技术。所以付费在网上找了些人帮忙,但他们也都不知道怎么操作。后来他找到我,聊天加解决问题也不过花了二十来分钟。

文档:学习路径

新创建了一个文档站点,添加了学习路径相关的文档。这个路径可以让您起步,成为一名 Web 开发者。我最擅长的就是让你起步,让你明白一个从来都没听过的东西是什么,基本怎么用。就像学开车,只有学会起步,你才能会开车。至于以后你是想开车拉着女朋友兜兜风,还是要自驾去西藏,还是想成为一名赛车手,这完全是你自己可以控制的了。但这些都是只有在你学会起步以后才有可能实现的事情。

路径有时会遇到分支,你可以选择其中的某个分支,这决定了你后面要走的路。比如学到后端语言,宁皓网为你准备了两个分支,PHP 与 Ruby,如果选择 PHP ,后面你可以选择用 Drupal,WordPress 或 Laravel 为基础去开发需要的 Web 应用。选择 Ruby 的话,后面需要用到 Rails 框架作为你的主要工具。

抽象

抽象,这是我有了女儿以后才注意到的一个词汇。女儿挺早就开始说话了,7个月大小的时候我听到了她第一次叫爸爸。后来开始用一些卡片教她认识一些东西,我记得有张卡片上面画着一着猫,她很早也就认识了卡片上的那只猫。有次我们去商场,女儿指着一件 T 恤上的图案说:“这是小猫咪”。我很吃惊,她是怎么知道的,之前她从来都没看见过类似图案的小猫,而且她的卡片上印的是只真实的小猫照片,但 T 恤上印的是一只线条非常简单的卡通小猫,这跟她之前认识的小猫照片完全不一样。

后来我才知道,这就是人脑的抽象功能。我们不需要看过所有的小猫以后才能判断一个东西是否是一只猫,只要在我们脑子里形成抽象,以后不管你看到的是什么类型的用什么形式表示的小猫,你大概都会知道你面前的东西就是一只猫。回到技术学习这里,我想也是一个不断在脑子里形成各种抽象的过程,我们也不需要学习全部,因为我们自带抽象功能。

在学习技术的时候会遇到一些词汇,开始你会觉得它们对你来说没有意义,除非你从来都没听说过这个词,不然这个词对你来说一定是有意义的,只不过你需要换个语境去理解它,它对你来说才会有意义。因为很多技术类的词都源于生活,或者说它们就是我们平时用的词,但在技术这个语境下,你会认为这个词应该是个专业的计算机词汇。

六一我跟纪委同志吃了次饭

昨天收到微信,silence 说出差到济南,想晚上一起喝点东西聊聊天。我问他在哪里住,他说他在济南纪委大楼,这让我想起《人民的名义》。因为之前在网上聊过几次,有些印象,我们就约在了商场里的某家咖啡馆见面。下午吃过饭,就带着一家子去这家商场里溜达溜达,顺道也给女儿过个节。

游戏室

我跟家人到了商场,小雪准备了之前剩下的游戏币,我们走进一家游戏厅。我自己现在并不是太喜欢玩游戏,不过小时候也经常会站在玩游戏的人的街机旁边,挺眼馋。偶尔会拍对方马屁,“这小子打的真好”。不过当时在东北,这话可能有点挑衅的意思,有一次差点没跟人打起来。我在东北还真没挨过打,个子小,外加装可爱,同学可能把我当小动物看待。我也不是太喜欢冲突导致的肾上腺素飙升的感觉,也可能因为胆儿小,或者说比较理性,我觉得今天我把你打了,明天你把我打了,这太麻烦了。

回到现在,游戏机室里充满了小朋友跟大朋友,小朋友们六一应该是放假,成群结队,时而狂奔,时而装酷。游戏室的角落有台机器,像一个大桌子,一群中年男子围着座,都没有表情,地上堆着一堆烟头。小雪说他们可能在赌,每次来都会看到有这样一帮人在那里坐很久,地方堆着一堆烟头。

《Vagrant》管理虚拟机,后端开发必备

你的网站最终要在 Linux 操作系统的服务器上运行,所以学习后端开发之前,你得先去了解一下这种操作系统。学习 Linux 的最好方法就是在本地创建一台 Linux 系统的虚拟机,然后在上面做些练习。Vagrant 是一个非常好的管理在本地创建的虚拟机的工具,用它你只需要几行命令就能创建各种不同类型的 Linux 虚拟机。

跟着《Vagrant》这本书里的操作你能学会使用这个工具去创建与管理虚拟机。这就是这本书的主要目的,后面会有一本专门介绍 Linux 操作系统的书。在学习 Linux 系统之前,你得先有个学习环境,也就是在本地你能创建,管理与配置一台需要的 Linux 机器。

注意 Vagrant它本身并不是虚拟机软件,它只是一个管理虚拟机的工具,有点像是它提供了一套管理虚拟机的界面或者叫方法。Vagrant 可以管理用 Virtualbox 创建的虚拟机,也可以管理用 VMware 创建的虚拟机。Vagrant 是个命令行工具,几乎所有操作你都要在命令行界面下完成,所以你需要先熟悉一下《CLI》。Vagrantfile 这个是虚拟机的配置文件,在上面你可以描述虚拟机的一些特性,比如 IP 地址,共享目录等等。

在线阅读

https://vagrant.ninghao.net

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点