上一步完成了必要的软件安装,接下来需要在 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 命令。

然后使用 apt-get install libtool 命令安装 libtool。

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


这篇文章中尽量使用 root 用户,避免权限不足。


Step 1:选定安装目录

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

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


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

解压安装包:

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/srcwget 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/srcwget 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/srcwget 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 后的结果。

/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。可以根据自己的需求更改站点的目录路径。
完成后如下所示:

修改完成后检查配置文件 nginx.conf 的正确性:

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

据评论: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 安装配置成功。

更改网址为 192.168.1.115/status 即可查看 nginx 状态。

Active connections: 1 —— nginx现在的连接数

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

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

至此,nginx 在 Linux 上的配置已经完成,但是现在只能通过局域网内的电脑对网站进行访问,最后一个教程将完成内网穿透,使得外网可以通过域名访问内网网站。

传送门:教程 | 用安卓手机搭建 web 服务器(三)—— 内网穿透

reference:
https://www.cnblogs.com/wyd168/p/6636529.html
https://www.cnblogs.com/taiyonghai/p/6728707.html
http://www.runoob.com/linux/nginx-install-setup.html

教程 | 用安卓手机搭建 web 服务器(二)—— Nginx 安装配置相关推荐

  1. 教程 | 用安卓手机搭建 web 服务器(一)—— 应用安装配置

    [2019.2.23 更新]:更新 BusyBox,Linux Deploy 软件 之前无意间看到了一篇<在安卓上部署服务器>的文章,正好最近换了新手机,正好最近在学 Python 和 H ...

  2. 教程 | 用安卓手机搭建 web 服务器(三)—— 内网穿透

    用手机完成服务器搭建后一般会放在寝室或者家里,这时使用的是内网,没有公网的固定 IP,没法进行域名解析,这时候就需要内网穿透了. 内网穿透的解决方案有花生壳.frp.魔法隧道.ngrok 等,我选择的 ...

  3. 如何利用安卓手机搭建WEB服务器

    利用安卓手机搭建WEB服务器 背景介绍 Android是一种基于Linux的自由及开放源代码的操作系统 所以是用安卓来搭建服务器是完全可行的.接下来将教大家如何利用AndroPHP和Feel FTP( ...

  4. 安卓搭建虚拟服务器,安卓手机搭建云服务器

    安卓手机搭建云服务器 内容精选 换一换 本文介绍使用云手机服务时需要了解的基本概念.云手机是一台包含原生安卓操作系统,具有虚拟手机功能的云服务器,简单来说,云手机=云服务器+Android OS.您可 ...

  5. 安卓Termux搭建web服务器【公网远程手机Android服务器】

    文章目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 转载自cpolar极点云的文章:[手机建站]Termux+Cpolar内网穿透,搭 ...

  6. 文件web服务器搭建,Web服务器的构建和配置

    利用windows server2003中iis构建web服务器的几种方法.下面是学习啦小编跟大家分享的是Web 服务器的构建和配置,欢迎大家来阅读学习. Web 服务器的构建和配置 工具/原料 wi ...

  7. 基于KSWEB服务器与NAT123端口映射技术-----利用闲置安卓手机搭建网站服务器

    想必各位小伙伴现在在家都闲得无聊,吃饭睡觉,就没事干了,闲来无事,我就想起了我上初中开始,一直有一个网站梦,就是想有一天,搭建一个个人的专属网站!嘻嘻嘻,所以一直就坚持钻研计算机,悲哀的是家里穷没有钱 ...

  8. 安卓系统PHP MYSQL服务器,安卓手机搭建网站服务器【Php+Mysql+Lighttpd】

    早段时间看见过一篇文章介绍安卓手机能充当网站服务器使用: 正好这几天比较闲,决定来测试一下,看看是否真的行得通,稳定性能如何! 架设到手机上面以后测试编辑网站会比较方便,走到哪服务器就跟到哪里: 我手 ...

  9. 手机上能搭建mysql服务器_安卓手机搭建网站服务器【Php+Mysql+Lighttpd】 – 楚盟博客...

    早段时间看见过一篇文章介绍安卓手机能充当网站服务器使用: 正好这几天比较闲,决定来测试一下,看看是否真的行得通,稳定性能如何! 架设到手机上面以后测试编辑网站会比较方便,走到哪服务器就跟到哪里: 我手 ...

最新文章

  1. androidinclude作用
  2. 一、【绪论】数据结构的基本概念
  3. binarytreenode”使用 类 模板 需要 模板 参数列表_c++1117 模板核心知识(一)—— 函数模板...
  4. 使用mysqlimport导入包含主键自增长属性的表
  5. 浅谈Tomcat的启动流程(源码级别)
  6. 关卡二:Flex伸缩布局
  7. 虚拟机调整C盘分区大小的取巧方法
  8. facade 门面模式和mediator 调停者
  9. 关于hadoop运行成功但是无法链接web页面
  10. linux任务调度框架,任务调度框架Hangfire 简介
  11. 我的世界基岩版python插件编写教程(pyr教程)
  12. 你知道云渲染和自己渲染有什么区别吗?
  13. Bootstrap框架个人总结
  14. oracle10G 数据泵技术
  15. 打破应试教育,犯错亦是成长
  16. 9天拿下CVPR竞赛冠军!家里的狗狗都改了作息时间...
  17. 狗狗拉稀黑色的怎么办
  18. 树莓派修改多网卡的连接
  19. Go 语言编程 — GPM 与 CSP 高并发模型
  20. scp修改服务器文件名称,scp删除服务器文件命令

热门文章

  1. C语言程序设计教程(第三版)李凤霞 第一章课后习题答案
  2. faiss通用向量搜索服务玩转腾讯880万词向量
  3. HUAWEI交换机的Hybrid接口(混杂模式)详解与实验配置演示
  4. 点击按钮1 打开/关闭按钮2
  5. OpenCV/C++ 图片锐化
  6. Android广播(Broadcast)
  7. Python爬虫 --爬取京东酒店旅行信息
  8. idea 解决java文件导入java 文件灰色右下角橙色java图标显示
  9. 动图演示:彻底理解红黑树?
  10. HTTP,TCP,UDP,Socket,WebSocket