很多開發人員僅僅只會碼代碼,如果讓開發人員部署一些深入點的東西,或者做負載均衡等,很多開發人員估計就懵逼了,作為一個專業的開發還需要懂一些基本的運維知識;雖然說在互聯網行業中,中小企業都有一個牛逼的運維工程師,基本上也沒有什么開發人員的事情,所以很多開發人員僅僅知道nginx這個事情,但是不會用,下面我來講解下Nginx 服務的基本知識.
Nginx 基本概念
這里就不詳細說了,[請參考]
Docker 安裝部署Nginx
第一步先拉取Nginx最新版本鏡像
使用docker pull xxx 指令
docker pull nginx:latest
或者
docker pull nginx:指定版本號
第二步 可以先查看下本地鏡像
docker images 指令
docker images
//結果輸出如下
[root@10-10-165-57 logs]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 568c4670fa80 3 weeks ago 109 MB
| 第三步 創建運行容器
這里我直接映射80端口,還沒有映射任務文件的情況
docker run -d -p 80:80 --name nginx docker.io/nginx
好了,這時候nginx 服務已經運行起來了,可以通過docker ps查看運行中的容器
[root@10-10-165-57 logs]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
34ae8c48da89 docker.io/nginx "nginx -g 'daemon ..." 25 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp nginx
以上已經運行了一個命名為nginx 的容器,現在可以訪問了
假設我的http://117.50.60.123/ 以及解析到我這台linux服務器中,則可以直接訪問http://117.50.60.123/ 得到界面如下
好了現在nginx 已經部署完成
Docker Nginx 目前掛載映射
上面部署好Nginx后,還不夠,我們還需要做負載均衡以及代理轉發等相關配置,這個配置文件我們可以直接進入容器中配置,也可以把容器中的文件掛載映射到宿主機上,以方便進行配置
| 第一步,我們先進入容器中查看下nginx的目錄結構
[root@10-10-165-57 logs]# docker exec -it nginx /bin/bash
//輸入命令后進入容器的狀態
root@34ae8c48da89:/#
| 第二步,進入容器的nginx目錄中,並且查看目錄結構
//進入容器中的/etc/nginx 目錄中
root@34ae8c48da89:/etc/nginx#
// 查看 /etc/nginx 中的文件結構
root@34ae8c48da89:/etc/nginx# ls -a
. .. conf.d mime.types nginx.conf
root@34ae8c48da89:/etc/nginx#
| nginx 目錄解析
|- conf.d //nginx 配置文件 包含default.conf 的默認配置文件
|- mime.types //nginx代理的請求頭文件
|- nginx.conf //nginx 代理的入口配置文件,配置反向代理及負載均衡從這個文件開始
了解了nginx的配置目錄結構后,我們nginx的運行過程中有很多的訪問日志,這個日志文件記錄在哪里呢?我們可以先查看下nginx.conf 配置
//查看配置文件的指令 cat nginx.conf
root@34ae8c48da89:/etc/nginx# cat nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
root@34ae8c48da89:/etc/nginx#
從上面的配置文件中可以看到nginx 的日志文件在默認在/var/log/nginx的目錄中;現在我們以及搞清楚了兩個目錄文件/etc/nginx 和/var/log/nginx目錄結構,那我們需要把這兩個目錄文件掛載到宿主機下面,方便我們日后的配置及日志的查看工作
| 第三步,推出nginx 容器中
// exit 退出容器的命令
root@34ae8c48da89:/# exit
exit
[root@10-10-165-57 logs]#
| 第四部,創建宿主機的掛載目錄
創建nginx的目錄
[root@10-10-165-57 /]# mkdir /home/root/nginx
nginx目錄中創建日志文件目錄
[root@10-10-165-57 /]# mkdir /home/root/nginx/logs
| 第五步,創建容器掛載
docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx
運行上面的掛載創建容器后會提示不能創建,主要由於之前我們創建了一個nginx的容器,占用了80端口導致,我們需要停止並且刪除之前創建的nginx容器
停止和刪除如下
docker stop nginx //停止運行的nginx容器
docker rm nginx //刪除nginx容器
//再創建新的nginx容器並且掛載到宿主機文件目錄中
docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx
好了以上就把容器中的相關配置目錄和日志目錄掛載到宿主機文件目錄中了,掛載好后我們可以進入宿主機目錄創建我們自己的反響代理配置了,后面就不再描述,具體的反向代理及負載均衡相關配置詳解下回再詳細講解