又是8个月没有更新博客了,之前一直想更但是偷懒拖到现在,搞得都快忘记当时的那些代码了。看来什么事都需要坚持,不然真的无法养成习惯。
3月底的时候,看着用了快5年的树莓派3B+,想着4B已经出了1年多了,就想换掉。之前一直想换来着,奈何3B+一直这么坚挺,而且年初受全球芯片短缺的影响,树莓派4B,4G版本闲鱼二手价都涨到了六七百,对比刚出来的时候的全新300多,现在的价格简直离谱。所以一直拖着没换,后面看到树莓派计算卡CM4+蓝牙+WIFI+4G RAM 有优惠只要525,我就有点心动了。因为CM4和4B的CPU是一模一样的,又可以自己选配蓝牙,WIFI以及emmc闪存, 只需要再买个扩展底板就可以变成4B了,这么算下来貌似更划算,并且CM4超级小,也想换个花样玩玩,加个底板自己组装感觉更有乐趣。于是就在淘宝店铺loborobo旗舰店买了CM4104000,这个型号的第二个数字1代表安装了WIFI和蓝牙模块,4代表内存4G,最后一位0代表没有eMMC闪存。之所以没选带闪存的版本是因为闪存的大小是固定的,虽然速度快但是烧录也麻烦,也不能像扩展底板可以随时换不同大小的SD卡。扩展板我在淘宝的杭州隽朋电子花了148+10块运费买的。外壳我在闲鱼上看了好多家,看上了Argon的带m.2固态扩展槽的,但是比较贵而且体积有点大,最后在京东的DeskPi官方旗舰店选了一款可拆卸顶盖的带PWM可调速风扇的黑色外壳,花了49+7块运费。
扩展底板正面:
背面:
CM4装到扩展底板上的完全形态:
DeskPi的这款外壳是三段都可拆卸式的:
外壳到手了:
外壳到手后发现CM4网口旁边的元器件比外壳的留出的空隙高,没办法外壳本来是给4B用的不是给CM4+底板用的,我用剪刀把外壳剪掉了一个小长条,不过这个位置比较好剪,也没有破坏周围的结构,剪完后CM4+底板和外壳完美契合。接下来又在京东丢石头科技买了官方的5V3A电源。内存卡之前都是32G, 虽然官方推荐是32G,但是如果图片都存内存卡的话还是不够用并且会影响博客速度,于是一步到位在1688买了128G的闪迪Extreme Pro U3卡。到手后才发现之前的读卡器都坏了,又在京东入了绿联的USB3.0 SD/TF/CF/MS 同读读卡器。这下配件都齐了,结果又发现电脑和树莓派不在一个局域网,电脑是移动,树莓派是联通。我改了树莓派wpa_supplicant里的wifi信息,让它连上移动的网,但是本地SSH还是连不上。我又用网线直接连移动的路由和树莓派,结果本地SSH还是连不上,我也不是专业的也搞不懂啥原因,没办法,想起之前在网上买过一个TP-LINK的红色的150M的无线网卡,也是为了解决这个问题,结果只找到一个空盒子,东西不知道哪去了,只好又入了一个升级款650M的蓝色L-WDN5200H免驱5G双频无线网卡。这下终于配件全部搞定了,本地SSH也连上了,下面就是开始把以前装到3B+上的博客,aria2 BT下载工具,aria2的Web前端AriaNg以及frp内网穿透再装一遍到CM4上。之前博客用的是LAMP结构,一直想改成LNMP,但是怕比LAMP更复杂就没有尝试,这次趁着换CM4和128G内存卡的时机,下定决心把博客一步到位换成LNMP架构,这样速度会提升很多,也不怕访客在未来增多导致的博客速度骤降的问题。
说干就干,开始安装LNMP。首先CM4换源,更新和升级。之后开始安装Nginx:
sudo apt-get install nginx
输入树莓派本地IP网页显示以下内容说明nginx安装成功:
然后安装php7.4以及相关组件:
sudo apt-get install php7.4
sudo apt-get install php7.4-fpm
FastCGI Process Manager)是基于FastCGI协议的PHP程序运行管理器,可以轻松地处理高并发的PHP请求
sudo apt-get install php7.4-mysql
用于连接与管理MySQL数据库。MySQLi有许多优点,最重要的是它支持预处理语句,安全方便地执行SQL语句,从而可以大大减轻SQL注入攻击的风险。
sudo apt-get install php7.4-common
PHP Common是PHP中应用最广泛的开源类库,它包含了各种用于Web开发的工具和库,可以帮助开发人员快速构建大型Web应用。
在网站根目录建立test.php,检验php是否安装成功
cd /var/www/html/
touch test.php 建立test.php
nano test.php 编辑test.php
输入以下代码:
<?php
phpinfo();
保存并退出,浏览器输入:树莓派本地IP/test.php
显示php安装成功页面:
安装数据库MariaDB:
sudo apt-get install mariadb-server
开启安全设置:
sudo mysql_secure_installation
输入ROOT密码
Change the root password更改root密码,选n,
Remove anonymous users 删除匿名用户,选y,
Disallow root login remotely是否拒绝远程登录数据库, 选拒绝n,
Remove test database and access to it删除测试数据库和接入权限,选y,
Reload privilege tables now重新载入特权表,选y,
然后MariaDB就安全安装了。
sudo mysql -u root -p 进入mariaDB环境,第一次登陆是没有密码的,直接按回车即可
创建用户并赋予权限:
CREATE USER '你的数据库用户名'IDENTIFIED BY '数据库密码';
查看用户对数据库的权限:
SHOW GRANTS FOR 你的数据库用户名;
赋予用户对数据库的权限:
GRANT ALL PRIVILEGES ON *<em>.*</em> to 你的数据库用户名;
重新载入权限:
FLUSH PRIVILEGES;
退出:
EXIT;
数据库和登录账号密码就创建好了。
刚才安装php组件的时候不知道为什么自动安装了apache,我用systemctl status apache2试了下,果然是正在运行的状态。不知道是不是因为php新版本组件默认把apache一起安装了。我本来就是要换成Nginx的,当然不想再装apache,只能彻底删除它了:
sudo apt-get --purge remove apache2 卸载Apache2
sudo apt autoremove 使用autoremove选项摆脱其他依赖项
sudo apt-get purge apache2-bin 卸载Apache2组件
sudo apt autoremove 使用autoremove选项摆脱其他依赖项
sudo find /etc -name ''*apache*'' |xargs rm -rf 查找并删除/etc目录下,包括子目录里所有文件名包含apache的文件
sudo find /etc -name ''*apache2*'' |xargs rm -rf 查找并删除/etc目录下,包括子目录里所有文件名包含apache2的文件
dpkg -l | grep apache2 列出系统中安装的与apache2相关(命名)的软件包,检查有没有彻底删干净
apache2删干净后,终于可以继续设置Nginx了。
sudo nano /etc/nginx/sites-available/default 打开nginx配置文件
找到
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
添加 index.php
找到
# pass PHP scripts to FastCGI server
后面的 location去掉注释,把php7.3-fpm.sock 根据php的版本改成php7.4-fpm.sock
保存,退出
sudo systemctl restart nginx 重启下nginx
开始安装数据库管理工具phpmyadmin:
sudo apt-get install -y phpmyadmin
因为用的web服务器是 Nginx ,所以这里没的选择,直接按“回车”确定。
是否使用dbconfig-common配置phpmyadmin的数据库,选yes :
设置phpmyadmin密码:
赋予安装目录读写权限:
sudo chmod 777 /var/www/html
在默认网站目录下添加 phpMyAdmin 的软链接,否则 phpMyAdmin 无法打开:
sudo ln -s /usr/share/phpmyadmin /var/www/html
浏览器输入:树莓派IP/phpmyadmin, 进入phpmyadmin登录界面:
然后登陆phpmyadmin,新建一个博客数据库命名为wordpress
装完以上软件后, cn.wordpress.org下载最新中文版wordpress, 解压后的wordpress文件夹里的所有文件通过Filezilla软件传入树莓派var/www/html, 浏览器输入:树莓派IP, 进入wordpress欢迎页面,输入刚才新建的数据库名称,数据库账号和密码,点提交,这时可能会出现无法写入wp-config.php, 是因为权限不够,给权限就好了:sudo chmod 777 /var/www/html
提交成功后,再点run the installation,设置博客站点名称,设置博客后台的登录账号和密码,设置管理员邮箱,点install wordpress,显示wordpress has been installed,wordpress就安装成功了。
内网博客就搭好了,提前把域名www.brucelog.club解析到公网IP。
然后给nginx配置ssl证书,因为之前是apache的证书所以不能通用,从腾讯重新申请了nginx的ssl证书,按照腾讯的教程,打开nginx主配置文件:
sudo nano /etc/nginx/nginx.conf
但是并没有找到教程里的选项:
反而是nginx的/etc/nginx/sites-available目录下的default配置文件有教程里的内容:
取消listen 443 ssl default_server前的注释,开启ssl端口
server_name后面写域名www.brucelog.club
ssl_certificate后面写crt证书路径
ssl_certificate_key后面写key文件路径
ssl_protocols和ssl_ciphers前的注释去掉,后面可以添加腾讯教程里推荐的SSL协议和加密套件
ssl_prefer_server_ciphers on前的注释去掉
到此ssl证书就配置好了,把wordpress后台站点url和wordpress url都改成https://www.brucelog.club
下面用frp和公网VPS做内网穿透,让内网博客可以从外部访问:
服务端打开http的80端口和https的443端口:
客户端开启[web01] http 80端口转发以及[web02] https 443端口转发:
重启树莓派,现在在外部网络浏览器输入https://www.brucelog.club,成功显示博客网站,说明443端口转发成功,SSL证书配置成功。
下面配置http强制跳转https,给80端口的server加一个
server_name www.brucelog.club;
return 301 https://$host$request_uri;
结果浏览器输入:http://www.brucelog.club,并没有跳转为https,网页却显示:重定向次数过多无法访问。
查了下原来是server里不能把80端口和443端口写到一起,80端口单独写一个server,然后在80端口的server里添加:
server_name www.brucelog.club;
return 301 https://$host$request_uri;
更改如下:
重启树莓派,这一次外部浏览器输入:http://www.brucelog.club,博客正常显示,并成功跳转到https://www.brucelog.club。
https强制跳转配置完成,内网穿透配置完成,下面就开始写博客了。
写文章的时候发现文章固定链接只能默认不能自定义,查了下原来是没有设置伪静态规则。打开nginx的default配置文件(网上说是nginx.conf,事实证明该文件并没有server模块),在 server { } 大括号里面添加如下代码:
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
注意如果server 里面已存在 location / { } 就直接在里面添加内容即可不然nginx 启动会报错,我看了下server里本来就有location,所以直接在大括号里添加代码就好:
重启树莓派,然后再次登录博客后台写文章,这次成功自定义文章固定链接。然后我又在上传图片的时候发现文件大小只能小于2M,查了下如果在Nginx上运行WordPress网站,则需要同时修改php.ini和nginx.conf文件。
sudo nano /etc/nginx/nginx.conf 编辑nginx主配置文件,可以在http {...}块,server {...}块或location {...}块中添加:
client_max_body_size 64M;
在http块中进行添加会影响此服务器上托管的所有网站/应用,在server块中定义它只会影响此服务器托管的特定站点/应用程序,在location块定义则仅影响指定的目录(如文件,上传目录)。nginx.conf里只有http模块,我就添加在了http模块里:
然后打开php.ini文件,找到upload_max_filesize = 2M,改为64M:
再找到post_max_size = 16M,改为64M:
重启树莓派,登录博客后台写文章,上传大于2M的图片果然成功了。然后我又想把博客的自带主题换掉,从本地安装主题的时候,显示无法上传主题。网上查了下,需要编辑wp-config.php,添加以下代码:
define(“FS_METHOD”,”direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);
如下:
重启树莓派,主题成功上传,但是安装时要求添加ftp服务器,查了下,只需给予wordpress博客安装目录权限就好了:
sudo chmod 777 /var/www/html
sudo chmod 777 /var/www/html/wp-content
sudo chmod 777 /var/www/html/wp-content/themes
然后重启树莓派,新主题被成功安装。
至此,树莓派3B+上的东西终于全部转移CM4上,并且博客由LAMP架构成功替换为了能处理更高并发和响应速度更快的LNMP架构,完美收工!
PS: 这篇本该4月份就更新的文章硬是拖到11月底才更,并且断断续续的写了两个周末,好多东西都要看着历史代码和收藏的教程边回忆思考边写,下次一定要改掉拖更的毛病,当时操作完就记录下来,省得隔得久了都忘了——写于2023年12月3日23:42
文章评论