正好手边 有一部几年前的手机,oppo n1 mini,平常它也没有事情干,看着它每天闲着躺尸,觉得它的人生太悲催了,不能这么懒啊,还不如装个linux做成服务器玩一下。大学的时候其实也用过安卓手机建站,准备还是尝试之前的方式。

准备

  1. 已经root的安卓手机一台
  2. busybox
  3. linux deploy
  4. SSH客户端(xshell等,安卓手机juicessh也是可以的)
  5. Sakura Frp
  6. 一颗爱折腾的心

安装linux环境

Linux我最熟悉的也就是Ubuntu了,所以就它了。

安装busybox

在安装之前需要先安装busybox框架,关于它的介绍网上一堆,这里就直接开始安装,如果你的手机是安卓5以下的,建议安装一个手机乐园客户端,在里面直接搜索busybox,没有前缀和后缀的那个就是,安装最新的版本就可以了。

安装之后点击install,给root权限。

部署linux

打开linux deploy点击右下角设置

容器类型:chroot

发行版:Ubuntu

架构:(用默认的就好)

发行版版本:xenial

源地址:由于官网太慢我们换成清华大学的开源镜像

1
https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ # 清华大学开源镜像

安装类型:目录(选文件的话是img文件,之后服务器文件修改需要用sftp或ssh操作,选目录的话文件可以直接本地操作)

安装路径:默认路径为${ENV_DIR}/rootfs/linux,即安装在/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux目录下(选文件的话是储存在/Linux.img中)

用户名:(自己设置,之后作为Linux 的登录账户)

用户密码:(自己设置,之后作为Linux 的登录密码)

特权用户:root

DNS:自动(有特殊需求自己设置)

本地化:POSIX(有特殊需求自己设置)

初始化:不启用(有特殊需求自己设置)

挂载:不启用(有特殊需求自己设置)

SSH:启用

SSH设置:默认(有特殊需求自己设置)

声音服务:不启用(有特殊需求自己设置)

图形界面:不启用(有特殊需求自己设置)

[album type=”photos”]

[/album]

到此配置完毕,返回Linux deploy主界面 点击右上角选择安装=>OK。

终端输出 ‘>>>deploy’ 时,表示安装已开始。

根据网络速度,下载时间可能需要十分钟左右。

终端输出 ‘<<<deploy’ 时,表示安装已结束。

安装完成后可以按下方启动键启动。

[album type=”photos”]

[/album]

至此,完成系统部署。

安装WEB服务环境

安装宝塔面版

首先我尝试了使用对小白极其友好的宝塔面版。

因为是32位的安卓系统,所以只能安装宝塔5.9

1
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh

如果无法安装,显示wget之类的错误,需要先安装wget

1
sudo apt-get install wget

然后再安装宝塔,等待安装完毕。

然后安装LNMP环境

然后我就发现宝塔面版可以正常启动,但是却无法安装任何的环境,然后我就决定直接手动编译安装lnmp环境。

换源

由于使用的是Ubuntu1604,且系统是基于arm架构的,国内的源很慢所以先换成清华大学镜像

安装nginx

首先来到官网下载:http://nginx.org/en/download.html

可以直接使用wget下载或者使用ftp传过去

1
wget http://nginx.org/download/nginx-1.16.1.tar.gz

配置依赖

安装gcc g++的依赖库

1
2
sudo apt-get install build-essential
sudo apt-get install libtool

安装pcre依赖库(http://www.pcre.org/)

1
2
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev

安装zlib依赖库(http://www.zlib.net

1
sudo apt-get install zlib1g-dev

安装SSL依赖库(16.04默认已经安装了)

1
sudo apt-get install openssl

编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#在shell里面通过命令解压
tar -xzvf nginx-1.16.1.tar.gz
#进入解压目录:
cd nginx-1.13.6
#配置:
./configure --prefix=/usr/local/nginx
#编译:
make
#安装:
sudo make install
#启动:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
#查看进程:
ps -ef | grep nginx

启动报错

nginx 启动报错 nginx: [emerg] getgrnam(“root”) failed

解决方式:打开/usr/local/nginx/conf/nginx.conf添加user root root;

如果你可以使用vim的话,建议直接vim,我安装不了vim,所以使用ftp修改之后传回。

重新启动

1
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

没有消息则是说明没有问题,然后查看进程

1
ps -ef | grep nginx

配置软链接

1
sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

现在就可以不用路径直接输入nginx启动。

配置开机启动

这部分参考:

https://www.cnblogs.com/EasonJim/p/7806879.html

https://www.cnblogs.com/piscesLoveCc/p/5794926.html

我就不再写了。

检查配置文件是是否错误

启动nginx

1
2
cd /usr/local/nginx/sbin/nginx
./sbin/nginx

然后在浏览器访问手机的ip地址:192.168.31.151(这个取决于你的手机,建议设置一个静态ip)

出现以下解密则是启动成功。

常用命令

启动 Nginx
1
/usr/local/nginx/sbin/nginx` `./sbin/nginx
停止 Nginx
1
./sbin/nginx -s stop` `./sbin/nginx -s quit
-s都是采用向 Nginx 发送信号的方式。
Nginx重新加载配置
1
./sbin/nginx -s reload
指定配置文件
1
./sbin/nginx -c /usr/local/nginx/conf/nginx.conf

-c表示configuration,指定配置文件

查看 Nginx 版本
有两种可以查看 Nginx 的版本信息的参数。第一种如下:
1
./sbin/nginx -v` `nginx: nginx version: nginx/1.0.0
另一种显示的是详细的版本信息:
1
[email protected]:/usr/local/nginx$ ./sbin/nginx -V``nginx: nginx version: nginx/1.0.0``nginx: built ``by` `gcc 4.3.3 (Ubuntu 4.3.3-5ubuntu4)``nginx: TLS SNI support enabled``nginx: configure arguments: --with-http_ssl_module --with-openssl=/home/luming/openssl-1.0.0d/
检查配置文件是否正确
1
[email protected]:/usr/local/nginx$ ./sbin/nginx -t``nginx: [alert] could not open error log file: open() ``"/usr/local/nginx/logs/error.log"` `failed (13: Permission denied)``nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax ``is` `ok``2012/01/09 16:45:09 [emerg] 23898#0: open() ``"/usr/local/nginx/logs/nginx.pid"` `failed (13: Permission denied)``nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
如果出现如上的提示信息,表示没有访问错误日志文件和进程,可以sudo(super user do)一下:
1
[email protected]:/usr/local/nginx$ sudo ./sbin/nginx -t``nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax ``is` `ok``nginx: configuration file /usr/local/nginx/conf/nginx.conf test ``is` `successful
如果显示如上,则表示配置文件正确。否则,会有相关提示。
显示帮助信息
1
[email protected]:/user/local/nginx$ ./sbin/nginx -h

或者:

1
[email protected]:/user/local/nginx$ ./sbin/nginx -?

Sakura Frp 内网穿透

打开官网,使用邮箱注册登录。

https://www.natfrp.com/

创建隧道

使用方式参考https://moe.do/archives/sakurafrp_help.html#%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AE%BE%E7%BD%AE(Linux)

开启穿透

启动命令

1
./frpc_linux_arm -t 访问密钥 -s 服务器ID

我测试的时候显示连接超时,服务有点崩了,所以就先放一个连接,万一启动成功了呢!

http://and.wgb.ink

花生壳内网穿透

虽然花生壳流量少又贵,但是无奈只能尝试一下它喽!

下载客户端

因为架构是armhf,所以直接到官网下载树莓派的包

https://hsk.oray.com/download/

安装

1
dpkg -i  phddns_3.0.4_systemd.deb

等待安装完成,然后配置就可以了!

话说我这个是在抽风嘛?

最后

其实还可以使用sunny-ngork来穿透,不过今天就先不折腾了,明天继续把内网穿透的事情给搞定。

如果你也在折腾,那么也许不会出现我这里的错误。