[教程]用安卓手机搭建web服务器(二)

2020/4/6 0:52:00  人气 333    技术分享  
用安卓手机搭建 web 服务器(二)—— Nginx 安装配置:




上一步完成了必要的软件安装,接下来需要在 Linux 系统上安装 nginx。

Nginx(“engine x”)是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能的 Web 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品。

Step 0:安装必要环境

上一篇教程中我们使用 Linux Deploy 安装的是 Ubuntu 系统,Ubuntu 缺省情况下,并没有提供 C/C++ 的编译环境,因此还需要手动安装。

单独安装 gcc 以及 g++ 比较麻烦,为了能够编译 Ubuntu 的内核,Ubuntu 提供了一个 build-essential 软件包,它提供了编译程序必须的软件包。

如果是用普通用户登录的系统,使用 sudo apt-get install build-essential 命令安装软件包。
sudo 命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是由 root 亲自执行。

如果已经切换至 root 用户,则可以直接使用 apt-get install build-essential 命令。

共有 9 个附件


Screenshot_2020-04-06-00-26-30-1852075214_EDIT_1
然后使用 apt-get install libtool 命令安装 libtool。

除此之外,由于我们后面还需要使用 wget 命令获取所需的库,上一篇教程中安装的系统中缺少 wget,所以我们使用 apt-get install wget 命令安装 wget:

Screenshot_2020-04-06-00-26-34-0071885819_EDIT_1
这篇文章中尽量使用 root 用户,避免权限不足。

Step 1:选定安装目录

可以选择任何目录,为了方便,本文选择 /usr/local/src 目录。

使用 cd /usr/local/src 命令切换目录。

Screenshot_2020-04-06-00-26-38-0665583364_EDIT_1
Step 2:安装 PCRE

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 有最新的 PCRE 包,本文选择 pcre-8.42.tar.gz。

下载 PCRE 安装包:

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz

Screenshot_2020-04-06-00-26-41-0458444159_EDIT_1
解压安装包:

tar -zxvf pcre-8.42.tar.gz

进入安装包目录:

cd pcre-8.42

编译安装:

./configure
make
make install


Step 3:安装 zlib

在 http://zlib.net/ 网站中下载最新的 zlib 包,这里选择 zlib-1.2.11.tar.gz,使用下面命令下载编译和安装 zlib 包:

cd /usr/local/src

wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

Step 4:安装 openssl

cd /usr/local/src

wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -zxvf openssl-1.1.0h.tar.gz
cd openssl-1.1.0h
./config
make
make install

openssl 的安装时间比较长。如果安装错误可以试试其他版本的 openssl。

据评论:手机型号一加3T,安装 openssl 出错,解决方法:安装 openssl-fips-2.0.16.tar.gz 版本
Step 5:安装 Nginx

Nginx官网 http://nginx.org/en/download.html 提供了三个类型的版本:
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版

这里我们选择稳定版,下面是安装 Nginx 的步骤:

cd /usr/local/src

wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --with-http_stub_status_module --with-http_ssl_module
make
make install

--with-http_stub_status_module 表示支持 nginx 状态查询。
--with-http_ssl_module 表示开启 HTTP SSL 模块,以支持 HTTPS 请求。

./configure 后的结果。

Screenshot_2020-04-06-00-26-44-0193744884_EDIT_1
/usr/local/nginx 就是 nginx 的安装目录。

安装好之后简单配置一下 nginx,配置文件在系统中的路径是 /usr/local/nginx/conf/nginx.conf。
可以使用 vim 命令进行操作(默认没有安装 vim,需要手动 apt-get 安装),或者直接使用手机上装的 ES 文件浏览器进行修改。

打开 ES 文件浏览器,退回到根目录,配置文件的位置是:
/data/user/0/ru.meefik.linuxdeploy/env/rootfs/linux/usr/local/nginx/conf/nginx.conf
可以看出,ES 文件浏览器路径中 linux 后面的部分就是我们系统的位置。

打开配置文件后,找到 server,每个 server 部分代表一个 web 站点,就是我们需要修改的地方。
listen 是监听端口,默认是 80。
server_name 是外网访问的域名,这里我们修改为 Linux Deploy 上显示的地址,我这里就是 192.168.1.115。
在默认 location 前面添加以下代码,使得可以查看 nginx 状态:

location /status {
stub_status;
}

location 代表一个过滤器,/ 匹配所有请求,我们还可以根据自己的情况定义不同的过滤,比如对静态文件js、css、image 制定专属过滤。
root html 代表站点的根目录,完整地址是 /usr/local/nginx/html,在 ES 文件浏览器中转到这个文件夹后可以看到默认有两个文件,一个是 50x.html,一个是 index.html。可以根据自己的需求更改站点的目录路径。
完成后如下所示:

Screenshot_2020-04-06-00-26-48-1185381106_EDIT_1
修改完成后检查配置文件 nginx.conf 的正确性:

/usr/local/nginx/sbin/nginx -t

Screenshot_2020-04-06-00-26-50-0000807057_EDIT_1
据评论:nginx 检查出现 “nginx: [emerg] getgrnam(“nobody”) failed nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed” 错误,可以参考 新建用户,且不让用户直接登录:
1 添加 nginx 用户组及用户
2 groupadd www
3 useradd -g www -s /usr/sbin/nologin www
不让www用户直接登录 添加一个名为 nobody 的用户后解决
没问题的话就可以启动 nginx 了,nginx 的启动需要有 root 权限:

/usr/local/nginx/sbin/nginx

然后在电脑浏览器中输入 server_name 中配置的地址 192.168.1.115,出现如下页面就说明 nginx 安装配置成功。

Screenshot_2020-04-06-00-26-53-0303332760_EDIT_1
更改网址为 192.168.1.115/status 即可查看 nginx 状态。

Screenshot_2020-04-06-00-26-56-1881792496_EDIT_1
Active connections: 1 —— nginx现在的连接数

server accepts handled requests
12 12 7
—— nginx 握手的次数,处理的次数,请求的次数。一般情况下,前面的两个数应该是相等的,表示没有丢失。

Reading: 0 Writing: 1 Waiting: 0
Reading:在读的连接数
Writing:在写的
Waiting:在等待的,一般是处理长连接的时候才会出现,keeplive

至此,nginx 在 Linux 上的配置已经完成,但是现在只能通过局域网内的电脑对网站进行访问,最后一个教程将完成内网穿透,使得外网可以通过域名访问内网网站。
三头犬(ID1002)加精此帖04-06 01:07   更多

. 这家伙很懒,什么都没留下!

发表回复

   


  通知楼主
暂无回复!