Files
Colinx-Blog/content/posts/Colin's Blog 1.0 构建心得.md
2022-05-05 20:36:09 +08:00

121 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Colin's Blog 1.0 构建心得
date: 2019-04-08
lastmod: 2020-04-29
description: 经过两三天的折腾,从 Linux 结构及指令,到 LNMP 框架搭建,再到数据库的配置,最后端口转发 + 内网穿透,博客终于成功上线!在此将部署过程及踩过的坑记录下来,一方面是纪念,另一方面希望能够后来人提供一点帮助。
categories:
- 技术
tags:
- Blog
- 网站
---
经过两三天的折腾,从 Linux 结构及指令,到 LNMP 框架搭建,再到数据库的配置,最后端口转发 + 内网穿透,博客终于成功上线!在此将部署过程及踩过的坑记录下来,一方面是纪念,另一方面希望能够后来人提供一点帮助。
从想法到实现
------
第一代博客采用树莓派 3B + 构建。当初作为寒假的练手项目,入手了树莓派 3B + 以及智能小车所需的配件。由于时间没有规划好最后在寒假前匆匆完成了小车硬件的组装智能控制部分wifi 遥控、红外循迹等)没能够完成。开学只带了树莓派的板子。闲置良久,想利用起来,刚好又有搭建大学生竞赛信息服务网站及公众号的想法,就开始着手构建基于树莓派的服务器,先从 Wordpress 搭建博客开始。
LNMP+Wordpress 框架搭建
-------------------
> L=Linux
> N=Nginx
> M=MySQL
> P=PHP
LNMP 架构是广泛使用的服务器架构。与此类似的还有 LAMPA=Apache。Nginx 与 Apache 作为目前市场上高度流行的两种服务器程序,网络上已经有非常多的相关的文档和教程。
关于 Nginx 与 Apache 的选择,这里只简单做个介绍:
**Nginx**:资源占用低,性能好,配置简洁,功能有限。
**Apache**:相对 Nginx 占用资源要多一点,不过插件和文档更丰富,设置某些功能的时候会方便一点。
具体两者的区别和测试可自行百度。刚开始考虑到树莓派的配置以及访问量,我选择使用 Nginx。具体部署过程此处不再赘述。
设置好 Nginx开始配置 MySQL 和 PHP。安装 php 的时候开始遇到了一些小波折:网络上大部分教程都是基于 php5.0,安装包的时候都是类似于
```
sudo apt-get install php5-fpm
```
这样的,但在实际安装过程中会报错,说找不到这个名字的包。这个还算好解决,又搜索了几个教程,发现最新的版本为 php7.0,根据新版本 php 的教程按部就班做就基本 OK 了。
WordPress 部署比较简单,但是对于新手而言,需要熟悉 Linux 基本指令cd 目录切换wget 文件下载tar\zip 解压等。但是相对于有很多依赖项的或者配置繁琐的程序Wordpress 安装其实已经算很简单了。
### 第一个大坑MySQL
安装 MySQL 一马平川,配置数据库,创建账户的时候也没有任何问题。然而第二次开始使用时,却发现刚刚设置的账户登不上去了?!! 翻来覆去又重装了几遍 MySQL排除了账户密码错误、屏蔽了远程连接等可能性。最后一直停留在报错说登陆失败。无论是测试用户还是 root有密码还是无密码统统失败。Wordpress 里面连接数据库也一直失败
这时怀疑不是数据库的问题,开始怀疑是 Nginx 或者 php。简单看了一下 Nginx 竟然无法启动?根据报错查了下日志发现与 php 的什么 fpm 和 fastcgi 通信有问题,又百度来百度去,改了下配置文件,把 fastcgi 通信的问题解决了。重启 nginx 服务又发现 80 端口被占用,又是一通百度。。。网上的解决方案无非两种:一种是 nginx 服务已经启动,直接另外用命令启动 nginx 服务必然会导致上述的问题。另外一种就是其他程序占用 80 端口,找到进程 kill 掉即可。然而我的问题并不是上面两种,无限郁闷 ing。。。
但是测试网页的时候却发现网页可以正常显示??? 又细查了一遍发现不知道什么时候又装了 Apache。。。又比 Nginx 先启动,自然会占用做网络服务器会用到的 80 端口。突然想起来安装 MYSQL 的时候好像弹出了个窗口。。。一阵哭笑不得。
然而经过一晚上折腾MySQL 这个问题依然没有解决。迫不得已,决定第二天尝试 SQlite。
### 第二个大坑PDO Driver
在决定弃用 MySQL 后,毅然卸载了 MySQL 并删除了残留,全新安装 SQLite。这里简单介绍一下两者的区别
> MySQL功能强效率高支持多用户安全性好但是占用资源较多
> SQLite精简版的 SQL没有多用户概念文件方式存储方便迁移占用资源少运行快。
满怀期待装好了 Sqlite配置好了数据库以及 Wordpress 配置文件 wp-config.php没想到进去 Wordpress 报错。
```
PHP PDO Extension is missing
```
百度了下,说是 php 对 sqlite 的支持没有打开。需要到 php.ini 把对应属于 sqlite 的扩展启用,把被注释的部分提出来。
一顿操作过后,进 Wordpress又报
```
PHP PDO Extension is not loaded
```
又是一顿猛肝,身心俱疲(无限查百度,查必应,查 StackOverflow查官方文档。一开始是看到有人说 php 扩展的目录默认是被注释的,看了下的却如此,就把改掉了。没想还是出错
```
;extension path= ../
```
当时的代码大致如此。改了之后还是没效果,又继续查。查到晚上两点困了累了,遂罢。
第二天起床继续肝。早上起来和熬夜的效果就是不一样没两下就突然想起来被我解除注释的php 扩展路径的那一行,它代表的是配置文件所在目录的父文件夹。但是他那个父文件夹底下根本就!!没有!!扩展名为 so 的扩展库文件!!!
所以!是扩展目录问题了。
但是他的扩展目录又到底在哪儿呢?百度的结果是说不同机子不一样。采用源代码编译安装的时候可以指定路径,但是我是用 apt 安装的。接下来是疯狂的找 php 扩展所在目录了。把百度的几个目录找了一遍,,又在其他地方又 php 字样的目录找了一遍,可算给我找到了。回去把 php.ini 一改,重启。哈!终于成了!
###
第三个大坑:外网访问
博客能够在内网正常访问了,折腾了两天总算有了成果。但是作为一个服务器只能在内网访问就没多大意思了。最终要做成的网站是要给人看的嘛。于是开始找树莓派外网访问的方案。大概有四种:
> 1. 使用路由器做端口转发 + 花生壳做动态域名解析。但是我手头用的不是路由器,是手机热点。放弃。
> 2. 树莓派安装花生壳 + 花生壳内网穿透服务。内网穿透付费且评价不是很好,放弃。
> 3. 使用 frp 内网穿透。但是需要有另外一台有公网 IP 的 VPS。这还不如直接买一台阿里云的服务器呢。放弃。
> 4. 使用 Ngrok 做内网转发。Ngrok 免费且评价还不错,就决定是你了!
Ngrok 的安装部署不难,简单来说就是注册账号,树莓派上安装 Ngrok然后在树莓派上启动与账号绑定。他会给你分配一个二级域名打开这个域名虽然有点慢因为服务器在美国但是成功地跳转到了我的博客主页
但是接下来的测试中发现,通过那个二级域名会指向我博客的主页,这时候点击页面上的任何连接都会跳转到我的树莓派的内网 IP。很明显网站的博客的页面上的链接都是绝对地址这也是为什么 Wordpress 的设置里面有一项是让你填写自己的网站的域名。这个比较好办用相对路径就可以了。Wordpress 插搜索 Relative URL就可以找到将全站链接转换为相对链接的插件。
考虑到树莓派性能有限,网站在内网访问已经有点慢了,通过外网访问会更慢。于是就对站点进行了一些优化,速度大幅提升,外网访问的速度也可以接受了。具体教程可参见另一篇博文。
大功告成
----
至此FXZs Blog 部署完成,正式上线!
所谓努力与收获成正比自有它的道理非常庆幸也非常感谢自己坚持了下来。在这短短的两三天时间里克服了众多困难拒绝了数次开黑邀请。所幸结果是令人欣慰的特此写下这第一篇博文。_2019 年 4 月 8 日晚于重庆_