[闲聊&水教程]一个在CPE上搭建的一个博客-记录一下本站的诞生

博客在这个时代的存在感似乎已经逐渐减少了,现在大多数的人即使选择分享东西也不会选择博客,一般可能会选择发到朋友圈/动态之类的,大概也就只剩我们这些搞技术的还在弄博客(或许只是我接触比较少)?我个人的话在自己的社交圈子内是比较少发东西的,因为我不太喜欢主动发布一些内容推到别人面前展示出来,更希望是发布的内容能被对此感兴趣的人看到,所以博客对于我来说就挺合适。没有选择公共博客(比如说CXDN/博客园)主要是因为这些国内的公共博客要么已经塞满充钱广告,要么就是濒临倒闭,放在那上面还不如在我本地自建放心,这也就是为什么我会选择自建。当然自建也就意味着几乎没有流量,只有SEO能够发现你,不过嘛如果真的想要引流也是有办法的,比如做视频或者其它平台同步发布文章之类。对我来说只要能在SEO被人发现就足够了,如果在这茫茫互联网中通过搜索引擎找到本站何尝不是一种缘分呢。在此前我接触到的很多博客的方式也大都是通过搜索引擎上找东西时遇到的,有些是分享一些技术上的知识,也有是分享自己关于一些游戏的心得,当然也有关于现实社会方面的等等话题。有时候这些博客教程是真的能帮上忙,又或者有些分享的有趣观点能让我深感认同,读完后我就想着自己也能不能尝试一下写写博客发表些自己的观点呢,于是这个站点就这么搭建起来了,搭建完后顺便把搭建的全过程也当作第一篇文章记录一下。

设备选择

在产生了搭博客的想法之后,就要开始选择搭建的设备了。我目前其实在国内的阿里云上也买了一个服务器,69块钱一年,但是搭建HTTP/HTTPS服务还需要备案什么的感觉太麻烦了,主要是之后续费还要转存数据配环境,就没折腾了。后来在朋友的帮助下在他家的NAS上搭建了一个Blog,但是他的服务器老是挂还不修复,服务器不在我这里我也没法帮他修[😡],后面就终止了一段时间。在某天上课胡思乱想的时候就想到我这个CPE也是个安卓机,那我不就可以在上面搭建一个服务器吗,正好这个中兴F50还可以插内存卡拓展+备份,插个SIM卡就是随身携带的服务器,于是就在这个晚上费了几个小时把博客建起来了。

开始建站

好吧,说了这么多前言也可以正式开始进入搭建环节了。

1.要在安卓上搭建一些服务的话用Linux容器还是比较好的选择,后面还可以加其他服务也比较方便。首先要做的就是安装Termux(https://github.com/termux/termux-app),这方面我就不再赘述了,这个网上的教程还是大把的。

2.安装完为了方便我选择用ssh在电脑终端操作。

使用以下命令安装OpenSSH并设置用户密码:

pkg install openssh -y
passwd

以及在中国大陆的话因为众所周知的原因,默认源下载东西的速度实在太慢,如果有需要的话可以通过设置代理解决,我这里使用的是电脑Clash提供的代理,添加完后应该就可以顺利安装OpenSSH了:

export http_proxy="http://{你的IP地址}:{端口}"
export https_proxy="http://{你的IP地址}:{端口}"

export HTTP_PROXY="$http_proxy" 
export HTTPS_PROXY="$https_proxy"
export ALL_PROXY="$ALL_PROXY"

或者换源:

termux-change-repo

3.在电脑端使用ssh连接:

在Termux输入whoami获取用户名,再配上设置的密码连接至8022端口(默认端口是8022)

安装proot-distro并进入ubuntu容器:

pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu

#如果需要绑定termux用户目录到proot环境内以便于传文件的话:
#需要在设置中打开Termux存储权限,并输入:
#termux-setup-storage
#proot-distro login --bind ~:/downloads ubuntu

如果显示root@localhost:~#的话就是成功进入容器了,进入容器后如果下载慢需要设置代理的话按照上面一样的步骤设置就可以。

安装Wordpress

1.安装Apache(用于提供http服务):

apt update -y
apt install apache2 -y
nano /etc/apache2/ports.conf

将 Listen 80 改为 Listen 8000 (因为proot不能够绑定到1024以下的端口)

保存后再运行:

apache2ctl start

此时在浏览器输入 IP:端口 就可以尝试访问了

为了使Wordpress可以正确设置重定向,还需要配置

a2enmod rewrite
nano /etc/apache2/sites-available/000-default.conf

用nano打开后把内容修改为:

<VirtualHost *:8000>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html

 # 让 WordPress 的 .htaccess 能生效
 <Directory /var/www/html>
 Options -Indexes +FollowSymLinks
 AllowOverride All
 Require all granted
 </Directory>

 <Directory /var/www/html/wp-content/uploads>
 <FilesMatch "\.php$">
 Require all denied
 </FilesMatch>
 </Directory>

 <Files wp-config.php>
 Require all denied
 </Files>

 <FilesMatch "(^\.|\.bak$|\.old$|\.swp$|~$)">
 Require all denied
 </FilesMatch>

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

2.安装MariaDB(提供MySql服务)

apt install mariadb-server -y
mysql_install_db --user=mysql --datadir=/var/lib/mysql
mysqld_safe --datadir=/var/lib/mysql &
mysql -u root
#如需要修改用户名密码可在此修改
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppass';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3.安装 PHP(WordPress 需要 PHP 环境)

apt install php php-mysql php-cli php-curl php-gd php-xml php-mbstring php-zip php8.4-imagick php8.4-intl -y
apt install libapache2-mod-php -y

4.安装wordpress

apt install wget
cd /var/www/html
rm index.html
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
cp wp-config-sample.php wp-config.php

编辑Wordpress配置文件

nano wp-config.php

修改为对应的MySql数据库

define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'wppass' );
define( 'DB_HOST', 'localhost' );

修改完后重启Apache2

apache2ctl restart

再次通过浏览器访问就可以进入Wordpress了,按照步骤配置即可。

公网访问

在国内大多数情况下都是没有公网的,需要一个端口转发,在这里我使用Cloudflare Tunnel(https://github.com/cloudflare/cloudflared)来反代到公网。

1.安装Cloudflared

#如果没wget的话
#apt install wget
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64
chmod +x cloudflared-linux-arm64
mv cloudflared-linux-arm64 /usr/local/bin/cloudflared

2.登录cloudflared

cloudflared login

点击链接登录你的cloudflare账号

3.创建一个tunnel

cloudflared tunnel create blog

4.编辑配置文件,将创建完tunnel后的隧道ID和对应文件位置填到下面就行了

nano ~/.cloudflared/config.yaml
tunnel: <你的隧道ID>
credentials-file: <你的隧道ID文件>
ingress:
 - hostname: <输入你的域名>
 service: http://localhost:8000
 - service: http_status:404

5.创建DNS记录

cloudflared tunnel route dns <隧道ID> <域名>

6.运行Cloudflare Tunnel

cloudflared --config ~/.cloudflared/config.yaml tunnel run

7.修改Wordpress在公网下的配置

设置Wordpress的地址:

  • 只需要公网访问
  • 需要内网和公网访问
nano /var/www/html/wp-config.php
if (isset($_SERVER['HTTP_HOST'])) {
 if ($_SERVER['HTTP_HOST'] === '{内网地址}:8000') {
 define('WP_HOME', 'http://{内网地址}:8000');
 define('WP_SITEURL', 'http://{内网地址}:8000');
 } else {
 define('WP_HOME', 'https://{域名}');
 define('WP_SITEURL', 'https://{域名}');
 }
}

添加以下设置:

// 处理主机名
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
 $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
// 根据代理传递的协议信息设置HTTPS标志
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
 $proto = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']);
 if (strpos($proto, 'https') !== false) {
 $_SERVER['HTTPS'] = 'on';
 }
}
// 优先使用 Cloudflare 传递的真实客户端IP
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP)) {
 $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
} 
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
 $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 $clientip = trim($ips[0]);
 if (filter_var($clientip, FILTER_VALIDATE_IP)) {
 $_SERVER['REMOTE_ADDR'] = $clientip;
 }
}

8.此时在公网就可以正常访问了

自动启动

此时一旦退出的话还需要手动重复一遍上面的操作,特别麻烦,所以还需要配置个开机自启。

1.先在容器内创建一个启动Wordpress以及cloudflared的脚本

nano ~/start.sh
nohup cloudflared --config ~/.cloudflared/config.yaml tunnel run > /dev/null 2>&1 &
nohup mysqld_safe --datadir=/var/lib/mysql > /dev/null 2>&1 &
apache2ctl start

此时就可以退出容器了

exit

2.安装Termux:Boot(https://github.com/termux/termux-boot/releases/)

3.进入Termux内编辑自启脚本

mkdir -p ~/.termux/boot
nano ~/.termux/boot/startup.sh

填入以下内容

#!/data/data/com.termux/files/usr/bin/bash
termux-wake-lock
sshd
proot-distro login ubuntu -- bash -lc "bash start.sh; exec bash -l"

4.尝试重启并访问域名,正常情况下博客以及各种服务应该就能自动启动了,至此一个在CPE上搭建的博客站就建成了。

额外配置

1.Cloudflare还可以通过配置Cache rules来缓存页面提高加载速度

2.(在Termux的proot容器内运行Dotnet程序出错可尝试):

export DOTNET_GCHeapHardLimit=1C0000000

3 条评论

正在加载评论...

发表评论

编辑评论