侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Ubuntu上安装Nginx服务器程序及简单的环境配置小结

linux  /  管理员 发布于 5年前   243

Ubuntu 从官方源安装 Nginx

cd ~ wget http://nginx.org/keys/nginx_signing.key sudo apt-key add nginx_signing.key sudo nano /etc/apt/sources.list   # 添加以下两句 deb http://nginx.org/packages/ubuntu/ precise nginx deb-src http://nginx.org/packages/ubuntu/ precise nginx sudo apt-get update sudo apt-get install nginx 

Ubuntu 从PPA源安装 Nginx :

sudo add-apt-repository ppa:nginx/stable sudo apt-get update sudo apt-get install nginx 

Ubuntu 从常规源安装 Nginx :

sudo apt-get install nginx 

编译安装Nginx

wget http://nginx.org/packages/mainline/ubuntu/pool/nginx/n/nginx/nginx_1.5.7-1~precise_i386.deb wget http://nginx.org/download/nginx-1.5.7.tar.gztar xzf nginx-1.5.7.tar.gzcd nginx-1.5.7

(注意:Nginx1.5.7是Mainline版而非Stable版)

为了方便开发和管理,我在根目录下新建了一个png目录,并且目录所有者设置为当前用户,nginx就编译在/png/nginx/1.5.7下面:

sudo mkdir /pngsudo chown eechen:eechen /png

运行用户我定义为png:png,所以我需要新建这样一个用户:

sudo addgroup png --systemsudo adduser png --system --disabled-login --ingroup png --no-create-home --home /nonexistent --gecos "png user" --shell /bin/false

(新建用户的命令可以参考官方Deb包里的预安装脚本DEBIAN/preinst)

编译参数参考了Nginx官方提供的Deb包(nginx -V可见).

./configure \
--prefix=/png/nginx/1.5.7 \--sbin-path=/png/nginx/1.5.7/sbin/nginx \--conf-path=/png/nginx/1.5.7/conf/nginx.conf \--error-log-path=/png/nginx/1.5.7/var/log/error.log \--http-log-path=/png/nginx/1.5.7/var/log/access.log \--pid-path=/png/nginx/1.5.7/var/run/nginx.pid \--lock-path=/png/nginx/1.5.7/var/run/nginx.lock \--http-client-body-temp-path=/png/nginx/1.5.7/var/cache/client_temp \--http-proxy-temp-path=/png/nginx/1.5.7/var/cache/proxy_temp \--http-fastcgi-temp-path=/png/nginx/1.5.7/var/cache/fastcgi_temp \--http-uwsgi-temp-path=/png/nginx/1.5.7/var/cache/uwsgi_temp \--http-scgi-temp-path=/png/nginx/1.5.7/var/cache/scgi_temp \--user=png \--group=png \--with-http_ssl_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-mail \--with-mail_ssl_module \--with-file-aio \--with-ipv6

注意:这一步按错误提示安装依赖的包,这时就是apt要发威的时候了,比如我的系统安装了这些包:

sudo apt-get -y install \
build-essential \autoconf \libtool \libxml2 \libxml2-dev \openssl \libcurl4-openssl-dev \libbz2-1.0 \libbz2-dev \libjpeg-dev \libpng12-dev \libfreetype6 \libfreetype6-dev \libldap-2.4-2 \libldap2-dev \libmcrypt4 \libmcrypt-dev \libmysqlclient-dev \libxslt1.1 \libxslt1-dev \libxt-dev \libpcre3-dev

安装好这些包后,下次编译新版Nginx就不用再装了,而且基本也满足编译PHP时configure的需求.
好了,configure成功后就可以编译安装了:

time make && make install

time主要用来查看本次编译耗时.
编译好后可以看看这个家伙的个头:

du -sh /png/nginx/1.5.7/sbin/nginx 
5.5M /png/nginx/1.5.7/sbin/nginx 

环境简单配置总结
减小Nginx编译后的文件大小:
编辑源文件 nginx-1.5.7/auto/cc/gcc 去除Debug信息(注释掉即可):

# debug # CFLAGS="$CFLAGS -g" 

这样编译后的主程序大小则为700多K,和Nginx官方提供的Deb包程序大小相近.
另外configure时去掉一些不需要的模块,编译后的可执行文件会更小.
当然,我需要一个服务脚本用来管理Nginx,这时同样可以借助官方Deb包里提供的服务脚本etc/init.d/nginx.
我把它放到/png/nginx/1.5.7/nginx,对开头定义的几个值(13到19行)进行稍加修改:

PATH=/sbin:/usr/sbin:/bin:/usr/binDESC=nginxNAME=nginxCONFFILE=/etc/nginx/nginx.confDAEMON=/usr/sbin/nginxPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAME改为PATH=/sbin:/usr/sbin:/bin:/usr/binDESC=nginxNAME=nginxCONFFILE=/png/nginx/1.5.7/conf/nginx.confDAEMON=/png/nginx/1.5.7/sbin/nginxPIDFILE=/png/nginx/1.5.7/var/run/$NAME.pidSCRIPTNAME=/png/nginx/1.5.7/$NAME

启动前先创建一个cache目录,否则会提示出错:

mkdir /png/nginx/1.5.7/var/cache

启动Nginx:

sudo /png/nginx/1.5.7/nginx start

测试页面:

curl -I `hostname`

看一下端口:

sudo netstat -antp|grep nginx

查看一下它占用的内存:
htop按F4过滤nginx

用top同样能看到类似内容:

top -b -n1|head -n7 && top -b -n1|grep nginx 

主要看RES这个值,常驻内存(resident),不包括SWAP空间的物理内存, 单位为KB,%MEM就是以RES为参照对象.
可以看到Nginx两个进程占用的物理内存加起来不到2M,内存占用非常小.
另外top里的RES这个值对应ps aux里的RSS这个值:

ps aux|head -n1 && ps aux|grep nginx 

还有我们可以看到Nginx的工人进程只有一个线程:

cat /proc/25047/status|grep Threads 
Threads: 1 

其中25047是Nginx工人进程PID号.
把Nginx做成系统服务,开机自启动:

sudo ln -s /png/nginx/1.5.7/nginx /etc/init.d/png-nginxsudo update-rc.d png-nginx defaults #开机自启动 sudo update-rc.d -f png-nginx remove # 以后不想开机自启动可以这样禁止sudo service png-nginx reload #这样就可以用service来管理Nginx服务了,比如重载配置

最后,Nginx的主配置文件位于/png/nginx/1.5.7/conf/nginx.conf,自己按需配置.


  • 上一条:
    Ubuntu 12.04解决重启后resolv.conf清空的问题
    下一条:
    Ubuntu下图形化LAMP环境配置教程(linux)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在Linux系统中使用Iptables实现流量转发功能流程步骤(0个评论)
    • vim学习笔记-入门级需要了解的一些快捷键(0个评论)
    • 在centos7系统中实现分区并格式化挂载一块硬盘到/data目录流程步骤(0个评论)
    • 在Linux系统种查看某一个进程所占用的内存命令(0个评论)
    • Linux中grep命令中的10种高级用法浅析(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2017-07
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-03
    • 2022-04
    • 2022-08
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-06
    • 2023-07
    • 2023-10
    • 2023-12
    • 2024-01
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客