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