2019独角兽企业重金招聘Python工程师标准>>>
一,在主服务器上操作:安装完成docker;略
二,查看镜像
[root@localhost ~]#docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos/shop2.web.top latest 8fc9b211671a 14 minutes ago 1.835 GB .....
三,运行镜像及在镜像内安装nginx环境
1,docker run -it -p 10888:8888 -p 10222:22 -p 8081:80 --name centos/shop2.web.top
2,如果使用-d后台参数,就使用docker exec -it ..., 进入docker.
#/etc/init.d/php-fpm-54 start #/etc/init.d/sshd start [不能使用winscp,进入了ssh] #/etc/init.d/bt start [启动它,才能访问80]
3,配置宝塔nginx,不要安装mysql。因为mysql经常有数据变动,并且安装docker mysql镜像很麻烦。请在docker外的服务器安装mysql即可。
4,docker内的shop2的配置:
登录到http://103.15.104.*:10888/login 到宝塔内面,或进入容器内docker exec -it [容器id] /bin/bash。进行配置
5,nginx配置文件:
# vi /www/server/nginx/conf/nginx.conf[root@8825f8263497 /]# cat /www/server/nginx/conf/nginx.conf
user www www;
worker_processes auto;
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;events{use epoll;worker_connections 51200;multi_accept on;}http{include mime.types;include proxy.conf;default_type application/octet-stream;server_names_hash_bucket_size 512;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 50m;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 256k;fastcgi_intercept_errors on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;gzip_vary on;gzip_proxied expired no-cache no-store private auth;gzip_disable "MSIE [1-6]\.";limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server_tokens off;access_log off;server{listen 888;server_name www.bt.cn;index index.html index.htm index.php;root /www/server/phpmyadmin;#error_page 404 /404.html;include enable-php.conf;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 12h;}location ~ /\.{deny all;}access_log /www/wwwlogs/access.log;}server{listen 8082; server_name 127.0.0.1; #这个很重要,主要在docker的容器外访问http://172.17.0.4:80可以访问。index index.html index.htm index.php;root /www/wwwroot/shop;#error_page 404 /404.html;location / {if (!-e $request_filename) {rewrite ^(.*)$ /index.php?s=$1 last;break;}}location ~ .php($|/) {set $script $uri;set $path_info "";if ($uri ~ "^(.+.php)(/.+)") {set $script $1;set $path_info $2;}fastcgi_param SCRIPT_FILENAME $document_root$script;fastcgi_param SCRIPT_NAME $script;fastcgi_param PATH_INFO $path_info;try_files $uri =404;fastcgi_pass unix:/tmp/php-cgi-54.sock;fastcgi_index index.php;include fastcgi.conf;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 12h;}location ~ /\.{deny all;}access_log /www/wwwlogs/access.log;}include /www/server/panel/vhost/nginx/*.conf;
}
4,在容器内配置好nginx,然后nginx reload.访问站点
[root@8825f8263497 /]# curl http://127.0.0.1:8082 【结果正确,省。。。】
四 主服务器配置环境及访问站点:
1,#cd /usr/local/tengine2/conf/ 【我使用的是tengine]
2, 将下面的配置加到nginx.conf文件内
server {listen 80;server_name web.top;error_log logs/shop2.web.log;location / { 【关键是这个代理,将请求的web.top:80的协议转到web.top】proxy_buffering off;proxy_pass http://172.17.0.4:8082; 【172.17.0.4 是容器的ip地址】}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
3,重启nginx
#ps -ef | grep nginx root 18687 1 0 Feb21 ? 00:00:00 nginx: master process ./nginx
#kill -9 18687
#./sbin/nginx
说明:如果使用killall nginx ,会将docker容器内的nginx也kill掉。
4,完成。 # curl http://web.top [经测试成功]
备注: 1,查看容器的ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' $(docker ps -a -q) 2,查看容器的name
sudo docker inspect -f='{{.Name}}' $(sudo docker ps -a -q)