文档章节

基于Docker环境中源码部署容器Nginx

Andy-xu
 Andy-xu
发布于 2015/08/16 18:03
字数 1318
阅读 2773
收藏 36


docker容器中源码安装nginx:

[root@465d13a11ffa  ~]# mkdir /Nginx-1.8/
[root@465d13a11ffa  Nginx-1.8]# ls
nginx-1.8.0  nginx-1.8.0.tar.gz

[root@465d13a11ffa nginx-1.8.0]# ./configure --prefix=/export/server/nginx  --with-http_ssl_module --with-http_stub_status_module
checking for OS
 + Linux 2.6.32-504.el6.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
checking for gcc -pipe switch ... found
。。。。。。。
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using builtin md5 code
  + sha1 library is not found
  + using zlib library: /Nginx-1.8/nginx-1.8.0/auto/lib/zlib

  nginx path prefix: "/export/server/nginx"
  nginx binary file: "/export/server/nginx/sbin/nginx"
  nginx configuration prefix: "/export/server/nginx/conf"
  nginx configuration file: "/export/server/nginx/conf/nginx.conf"
  nginx pid file: "/export/server/nginx/logs/nginx.pid"
  nginx error log file: "/export/server/nginx/logs/error.log"
  nginx http access log file: "/export/server/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
配置完成!

开始进行安装编译
[root@465d13a11ffa nginx-1.8.0]# make && make install
make[1]: Leaving directory `/Nginx-1.8/nginx-1.8.0'
make -f objs/Makefile install
make[1]: Entering directory `/Nginx-1.8/nginx-1.8.0'
test -d '/export/server/nginx' || mkdir -p '/export/server/nginx'
test -d '/export/server/nginx/sbin'         || mkdir -p '/export/server/nginx/sbin'
test ! -f '/export/server/nginx/sbin/nginx'         || mv '/export/server/nginx/sbin/nginx'             '/export/server/nginx/sbin/nginx.old'
cp objs/nginx '/export/server/nginx/sbin/nginx'
test -d '/export/server/nginx/conf'         || mkdir -p '/export/server/nginx/conf'
cp conf/koi-win '/export/server/nginx/conf'
cp conf/koi-utf '/export/server/nginx/conf'
cp conf/win-utf '/export/server/nginx/conf'
test -f '/export/server/nginx/conf/mime.types'         || cp conf/mime.types '/export/server/nginx/conf'
cp conf/mime.types '/export/server/nginx/conf/mime.types.default'
test -f '/export/server/nginx/conf/fastcgi_params'         || cp conf/fastcgi_params '/export/server/nginx/conf'
cp conf/fastcgi_params         '/export/server/nginx/conf/fastcgi_params.default'
test -f '/export/server/nginx/conf/fastcgi.conf'         || cp conf/fastcgi.conf '/export/server/nginx/conf'
cp conf/fastcgi.conf '/export/server/nginx/conf/fastcgi.conf.default'
test -f '/export/server/nginx/conf/uwsgi_params'         || cp conf/uwsgi_params '/export/server/nginx/conf'
cp conf/uwsgi_params         '/export/server/nginx/conf/uwsgi_params.default'
test -f '/export/server/nginx/conf/scgi_params'         || cp conf/scgi_params '/export/server/nginx/conf'
cp conf/scgi_params         '/export/server/nginx/conf/scgi_params.default'
test -f '/export/server/nginx/conf/nginx.conf'         || cp conf/nginx.conf '/export/server/nginx/conf/nginx.conf'
cp conf/nginx.conf '/export/server/nginx/conf/nginx.conf.default'
test -d '/export/server/nginx/logs'         || mkdir -p '/export/server/nginx/logs'
test -d '/export/server/nginx/logs' ||         mkdir -p '/export/server/nginx/logs'
test -d '/export/server/nginx/html'         || cp -R html '/export/server/nginx'
test -d '/export/server/nginx/logs' ||         mkdir -p '/export/server/nginx/logs'
make[1]: Leaving directory `/Nginx-1.8/nginx-1.8.0

Nginx源码编译成功!
[root@465d13a11ffa nginx]# pwd
/export/server/nginx

查看nginx的文件目录!

[root@465d13a11ffa nginx]# ls *
conf:
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default

html:
50x.html  index.html

logs:

sbin:
nginx

查看容器cpu信息!
[root@465d13a11ffa conf]# cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 58
model name    : Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
stepping    : 9
microcode    : 25
cpu MHz        : 2600.219
cache size    : 6144 KB
physical id    : 0
siblings    : 1
core id        : 0
cpu cores    : 1
apicid        : 0
initial apicid    : 0
fpu        : yes
fpu_exception    : yes
cpuid level    : 5
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good pni monitor ssse3 lahf_lm
bogomips    : 5200.43
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual


简单配置Nginx访问:
[root@465d13a11ffa nginx-1.8.0]# cd /export/server/nginx
[root@465d13a11ffa nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@465d13a11ffa nginx]# cat /proc/cpuinfo | grep processor        查看container的内核,以便配置nginx
processor    : 0

[root@465d13a11ffa nginx]# vi /export/server/nginx/conf/nginx.conf

user  nginx nginx;
worker_processes  6;
error_log  logs/error.log;
pid        logs/nginx.pid;
events {
        use epoll;
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    server {
     listen       80;
        server_name  localhost;
        location / {
            root   /export/App;
            index  index.html index.htm;
        }
        error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
}

记得,nginx的工作进程是由nginx用户起的,因此需要添加nginx用户的!

配置完成及得检测配置的完整性和正确性!(然后启动# /export/server/nginx/sbin/nginx)
[root@465d13a11ffa nginx]# /export/server/nginx/sbin/nginx -t
nginx: the configuration file /export/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /export/server/nginx/conf/nginx.conf test is successful

[root@465d13a11ffa nginx]# ps -ef | grep nginx
root     11065     1  0 07:17 ?        00:00:00 nginx: master process ./nginx
nginx    11066 11065  0 07:17 ?        00:00:00 nginx: worker process
nginx    11067 11065  0 07:17 ?        00:00:00 nginx: worker process
nginx    11068 11065  0 07:17 ?        00:00:00 nginx: worker process
nginx    11069 11065  0 07:17 ?        00:00:00 nginx: worker process
nginx    11070 11065  0 07:17 ?        00:00:00 nginx: worker process
nginx    11071 11065  0 07:17 ?        00:00:00 nginx: worker process
root     11088     1  0 07:25 ?        00:00:00 grep --color=auto nginx

测试:
在配置文件中,将index.html(主机名/容器ID)文件默认放在/export/App/下(即为默认发布目录,一定注意权限哦)
[root@465d13a11ffa nginx]# curl http://localhost
465d13a11ffa


编写nginx系统启动脚本!

#vim /etc/init.d/nginx
#!/bin/bash
#
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
# Source Function Library
# Nginx Settings
NGINX_SBIN="/export/server/nginx/sbin/nginx"
NGINX_CONF="/export/server/nginx/conf/nginx.conf"
NGINX_PID="/export/server/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() {
        echo -n $"Starting $prog: "
        mkdir -p /dev/shm/nginx_temp
        $NGINX_SBIN -c $NGINX_CONF
        RETVAL=$?
        if [ $RETVAL -eq 0 ];then
                echo "OK!"
                else
                echo "ERROR,please test the $NGINX_CONF"
        fi
}
stop() {
        echo -n $"Stopping $prog: "
        pkill  nginx
        rm -rf /dev/shm/nginx_temp
        RETVAL=$?
        if [ $RETVAL -eq 0 ];then
                echo "OK!"
                else
                echo "ERROR,please test the $NGINX_CONF"
        fi
}

reload(){
        echo -n $"Reloading $prog: "
        $NGINX_SBIN -s reload
        RETVAL=$?
        if [ $RETVAL -eq 0 ];then
                echo "OK!"
                else
                echo "ERROR,please test the $NGINX_CONF"
        fi
}
restart(){
        stop
        start
}
configtest(){
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac
exit $RETVAL


外网测试:
[root@xuxuebiao ~]# curl http://10.0.0.2/index.html
465d13a11ffa

(思考:在Docker管理端可以访问到,怎样设置网络可以在windows主机上进行访问呢!)

我的个人公众号,不定期发技术文章:

 

© 著作权归作者所有

Andy-xu
粉丝 112
博文 95
码字总数 179246
作品 0
大兴
运维
私信 提问
如何基于 Docker 在服务器上部署 Seafile Community 版本

如何基于 Docker 在服务器上部署 Seafile Community 版本 软硬件环境 BCC Ubuntu 16.04 Seafile Community v6.3.4 Docker v18.09.1 什么是 Seafile 安全、可靠、快速的企业云盘 Seafile 是一...

老码
03/23
0
0
tech share - docker 入门

date: 2017-12-19 14:04:30 title: tech share - docker 入门 slide: https://c.daydaygo.top/landslide/TS20171222.html 团队内很多同学对 docker 感兴趣, 于是准备了这期分享, 希望可以帮助......

daydaygo
2017/12/21
0
0
实战docker+jenkins+git+registry构建持续集成环境

 关于jenkins的文章比较多,笔者决定写一篇比较详细的利用容器来构建jenkins+git+registry的文章来和大家共同讨论。文章比较长,需要有点耐心慢慢看完,如果大家在实验的过程中遇到问题,可...

甘兵
2018/10/29
0
0
CentOS7安装Docker,运行Nginx镜像、Centos镜像

1、环境,CentOS7 Minimal 64位,Docker必须要64位的系统 2、通过yum命令直接安装,yum install docker 3、启动Docker,并将其设置为开机启动 (1)启动,systemctl start docker.service (2)开...

GKTest
2015/07/02
0
5
使用docker快速搭建服务器环境

思路 将nginx、mysql、tomcat等环境打包为一个个docker,然后使用docker-compose管理。 服务器内安装docker相关环境,然后直接运行docker-compose配置,即可快速搭建完成服务器环境。 之后可...

萌璐琉璃
2018/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

将博客搬至CSDN

https://blog.csdn.net/qq_38157006

Marhal
12分钟前
1
0
unicode Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的...

泉天下
12分钟前
1
0
uin-app 一、学习理由

选择uni-app 理由 别人的理由 1. 5+ 有HTML5+和Native.js技术,HTML5+包含常用的跨平台的几百个API,能满足常规开发需求,而Native.js把40w原生api映 射成js对象,这样js可以直接调原生。HTM...

轻轻的往前走
14分钟前
1
0
方括号及其在命令行中的不同用法介绍

通配 方括号最简单的用法就是通配。你可能在知道“ Globbing”这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文件: ls *.j...

Linux就该这么学
20分钟前
1
0
vecty 基础

gopherjs 是把 go 编译为 js 的工具。 vecty 是基于 gopherjs 的一种类似 React 的开发框架。 安装 gopherjs 和 vecty go get -u github.com/gopherjs/gopherjsgo get -u github.com/gopher......

electricface
21分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部