博客

《网站》第十一集:产品页上的英雄区

网站》已经更新到了第十一集,完成了首页设计以后,已经开始制作产品页面了。第十一集完成了产品页的英雄区的设计,这部分内容跟之前首页的英雄区相近,不过还是做了一些改进,比如我们用了新的长度单位改进了英雄区的显示比例。现在它不但可以响应窗口宽度,还可以响应窗口的高度。英雄区现上可以显示静态图片,还可以是一小段视频背景,视频的播放会响应滚动行为,滚动到页面一定程度时自动停止或播放视频背景。

《网站》是宁皓网出品的系列课程,订阅以后您就可以在线学习整个系列课程了。

你现在可以考虑成立一家公司

我不是要蛊惑大家盲目地成立公司,不到非得这样做的时候,就别去搞个公司,成立公司肯定会带出很多麻烦事儿,你的成本也会增加。但我又觉得也不应该让公司成为我们的障碍,因为有很多服务都要求我们得是个公司。有了想法,确定了要提供的产品与服务,那应该就要考虑成立一家公司。现在政策也比较好,有很多优惠,鼓励我们去创立公司。

注册

注册成立一家公司,得先去工商局登记。先确定一下公司的名字,工商局要核实你的公司名跟别人的公司名是否有冲突。因为核名用的不是汉字,而是拼音,并且会两个字相叠地去核实,比如公司名是 “王皓和小雪”,核名时会先看 wanghao ,再检查 haohe,然后是 hexiao,最后是 xiaoxue。所以多准备几个名字。

确定了名字肯定会有一大堆表等着你填,还得让你准备一些资料,这些跟着工商局的指示办就行,打谱多跑几趟,这时候情商得高点。现在用的都是多证合一,比如工商营业执照,组织机构代码证,税务登记证,这些东西都在一张纸上,就是你的营业执照。

办营业执照花不了多少钱,几百块应该就够了,包含刻公章,财务章的钱。

面向对象:理解 Services 与 Containers

在技术领域,Services 与 Containers 这两个词经常会出现,它们所指的东西在不同语境下有所不同。我们可以先按字面意义去理解它们,Services 指的是服务,Containers 就是容器的意思。

在面向对象编程(OOP)这个语境下,Services 指的是能提供某种服务的类(Class),就是能干某些事情的类。比如一个类提供了发短信的服务,这个类就是一个 Services 类。

Containers 在这个语境下,指的也是一种特别的类(Class)。这种类里面装的是 Services 对象。这样我们在应用里的某个地方需要某个服务的时候,可以直接到容器那里要,因为服务都在容器那里装着呢。

《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 框架作为你的主要工具。



微信好友

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



微信公众号

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



240746680

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

统计

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

社会化网络

关于

微信订阅号

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