手机变便携服务器并且实现公网访问
荔枝的君子 发布于 阅读:95
安装并打开Termux (建议从Google Play获取)
安装tmoe
curl -LO https://gitee.com/mo2/linux/raw/2/2.awk && awk -f 2.awk
手机如果root了果断选chroot容器,否则使用proot (我这里使用chroot,不确定proot能不能跑)
选择arm64发行版列表
选择Debian
选择最新版13
启动容器
不需要sudo用户也不需要zsh,一路选否
进入了容器环境
我们更新一下并且安装下wget
apt update && apt upgrade -y && apt install wget
开始编译NGINX
下载NGINX源码
wget https://nginx.org/download/nginx-1.29.3.tar.gz
解压并进入
tar -zxvf nginx-1.29.3.tar.gz && cd nginx-1.29.3
安装必要依赖
apt install build-essential zlib1g-dev openssl libssl-dev libbrotli-dev git
由于Debian源缺少Aarch64的pcre3,我们自行下载pcre源码并解压
wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz && tar -zxvf pcre-8.45.tar.gz
我们可能需要brotli这种更好的压缩算法,让我们来配置ngx_brotli
mkdir -p modules
git clone https://github.com/google/ngx_brotli.git modules/ngx_brotli
cd modules/ngx_brotli
git submodule update --init
cd ../..
好了,我们可以开始编译NGINX了
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=www-data \
--group=www-data \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_v3_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_degradation_module \
--with-file-aio \
--with-threads \
--with-compat \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_ssl_preread_module \
--with-http_slice_module \
--add-dynamic-module=./modules/ngx_brotli \
--with-pcre=./pcre-8.45
编译并安装
make -j$(nproc) && make install
接下来就是搞大家伙了,MySQL
安装依赖
apt install cmake libncurses-dev libaio-dev libtirpc-dev bison flex
下载源码并解压并进入源码目录
这里我选的是9.5.0创新版,喜欢稳定的可以安装8.4.7TLS
wget https://dev.mysql.com/get/mysql-9.5.0.tar.gz && tar -zxvf mysql-9.5.0.tar.gz && cd mysql-9.5.0
创建用户和组,创建必要文件夹,设置权限
groupadd -r mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /var/lib/mysql /var/run/mysqld /var/log/mysql
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld /var/log/mysql
chmod 750 /var/lib/mysql /var/log/mysql
开始cmake
mkdir build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_FLAGS="-O2 -march=native -mtune=native" \
-DCMAKE_CXX_FLAGS="-O2 -march=native -mtune=native" \
-DWITH_UNIT_TESTS=OFF \
-DWITH_SYSTEMD=OFF \
-DWITH_NUMA=OFF \
-DWITH_DEBUG=OFF \
-DINSTALL_MYSQLTESTDIR=OFF \
-DINSTALL_DOCREADMEDIR=OFF \
-DINSTALL_DOCS=OFF \
-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
-DPID_FILE_DIR=/var/run/mysqld \
-DMYSQL_DATADIR=/var/lib/mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DMYSQL_USER=mysql \
-DCMAKE_BUILD_TYPE=Release
编译并安装
make -j$(nproc) && make install
初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql
记住你的初始密码,否则后果很严重
编辑配置文件
vim /etc/my.cnf
把下面的内容填入
[mysqld]
basedir=/usr/local/mysql
datadir=/var/lib/mysql
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysql/error.log
port=3306
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
接下来安装PHP
我们需要安装两个版本
所以先安装PHP8.5
下载源码包
wget https://www.php.net/distributions/php-8.5.0.tar.gz && tar -zxvf php-8.5.0.tar.gz && cd php-8.5.0
安装依赖
apt install libcurl4-openssl-dev libjpeg-dev libpng-dev libwebp-dev libxslt1-dev unzip libfreetype-dev libonig-dev libsqlite3-dev libxml2-dev libzip-dev zip libicu-dev
老样子
./configure \
--prefix=/usr/local/php85 \
--with-config-file-path=/usr/local/php85/etc \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-zlib \
--with-curl \
--with-gd \
--with-webp \
--with-freetype \
--with-jpeg \
--with-xsl \
--with-zip \
--enable-bcmath \
--enable-intl \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm
编译并安装
make -j$(nproc) && make install
初始化配置文件改为使用unix套接字
cp /usr/local/php85/etc/php-fpm.conf.default /usr/local/php85/etc/php-fpm.conf
cp /usr/local/php85/etc/php-fpm.d/www.conf.default /usr/local/php85/etc/php-fpm.d/www.conf
vi /usr/local/php85/etc/php-fpm.d/www.conf
把
listen = 127.0.0.1:9000
改为
listen = /var/run/php85-fpm.sock
取消
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660
的注释(删除前面的;)
PHP8.5安装完成了
接下来安装PHP7.4
下载源码包并解压进入
wget https://www.php.net/distributions/php-7.4.33.tar.gz && tar -zxvf php-7.4.33.tar.gz && cd php-7.4.33
这里有个坑,系统的openssl是3.x版本
PHP7.4需要1.1.1,这里我们需要安装openssl1.1.1
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz && tar -zxvf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w
./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w/ssl -Wl,-rpath,/usr/local/openssl-1.1.1w/lib
make -j$(nproc) && make install
使用新安装的openssl进行编译
./configure \
--prefix=/usr/local/php74 \
--with-config-file-path=/usr/local/php74/etc \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl=/usr/local/openssl-1.1.1w \
--with-zlib \
--with-curl \
--with-gd \
--with-webp \
--with-freetype \
--with-jpeg \
--with-xsl \
--with-zip \
--enable-bcmath \
--enable-intl \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm
编译并安装
make -j$(nproc) && make install
如果php7安装不上就
make clean
make distclean
export CFLAGS="-I/usr/local/openssl-1.1.1w/include"
export LDFLAGS="-L/usr/local/openssl-1.1.1w/lib"
export CXXFLAGS="-std=c++17"
再重新尝试编译
如果还出现openssl版本问题就
mv /usr/include/openssl /usr/include/openssl.bak
再清理再编译
编译好了别忘了替换回来
更改unix套接字过程几乎一致
cp /usr/local/php74/etc/php-fpm.conf.default /usr/local/php74/etc/php-fpm.conf
cp /usr/local/php74/etc/php-fpm.d/www.conf.default /usr/local/php74/etc/php-fpm.d/www.conf
vi /usr/local/php74/etc/php-fpm.d/www.conf
依旧listen = /var/run/php74-fpm.sock
然后删了三行注释
这里不过多讲
现在需要在终端输入exit
输入tmoe
chroot/proot容器
找已安装容器列表
环境变量与启动项管理
Entrypoint(入口点)
填入
/usr/local/mysql/bin/mysqld_safe --user=mysql &
nginx
/usr/local/php85/sbin/php-fpm
/usr/local/php74/sbin/php-fpm
启动容器
如果PHP74的php-fpm启动报错缺少openssl库就
ln -sf /usr/local/openssl-1.1.1w/lib/libcrypto.so.1.1 /usr/lib/aarch64-linux-gnu/libcrypto.so.1.1
ln -sf /usr/local/openssl-1.1.1w/lib/libssl.so.1.1 /usr/lib/aarch64-linux-gnu/libssl.so.1.1
开始配置phpMyAdmin
mkdir /www-data && cd /www-data
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip
unzip phpMyAdmin-5.2.3-all-languages.zip
chown -R www-data:www-data /www-data
mkdir /etc/nginx/conf.d
vi /etc/nginx/nginx.conf
顶部添加
user www-data;
在http块添加
include /etc/nginx/conf.d/*.conf;
然后再
vi /etc/nginx/conf.d/phpMyAdmin.conf
把下面内容插入到
server {
listen 33888;
root /www-data/phpMyAdmin-5.2.3-all-languages;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php85-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
完成后可以重载NGINXnginx -s reload
推荐进行
cd /www-data/phpMyAdmin-5.2.3-all-languages/
cp config.sample.inc.php config.inc.php
vi config.inc.php
把$cfg['blowfish_secret'] = '';后面分号随意32位字符
如果phpMyAdmin无法工作,如
mysqli::real_connect(): (HY000/2002): No such file or directory
那就
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
至此,访问127.0.0.1:33888即可游玩phpMyAdmin
登录cloudflare
选择Zero Trust
网络>连接器>创建隧道>cloudflared
命名随意
# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared
sudo cloudflared service install xxxxx #这部分命令cloudflare官网有
这样环境已经完整了