提前先準備好一個干凈的lnmp環境,一鍵安裝lnmp:https://lnmp.org/auto.html
配置前先安裝好docker
1.安裝
yum包更新到最新:yum update
安裝需要的軟體包:yum install -y yum-utils device-mapper-persistent-data lvm2
2.設定yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安裝docker,出現的提示都輸入Y
yum install -y docker-ce
4.安裝完成輸入docker -v 查看版本
5.配置鏡像加速:vi /etc/docker/daemon.json,可以參考菜鳥教程的docker鏡像加速配置
復制下面內容到daemon.json中
{
“registry-mirrors”: [“https://g5ae7o25.mirror.aliyuncs.com”]
}
保存后依次執行:sudo systemctl daemon-reload 和 sudo systemctl restart docker
完場上述操作后,現在就開始配置
1、創建私有網路:docker network create lnmp
2、安裝Nginx鏡像:docker pull nginx:1.18.0
3、運行Nginx:
#創建并運行容器
docker run --name mynginx -p 8080:80 -v /root/docker/nginx/html:/usr/share/nginx/html -d nginx:1.18.0
#移動到配置目錄
cd /root/docker/nginx
#復制組態檔:cd到/root/docker/nginx 檔案夾下復制nginx組態檔目錄
docker cp mynginx:/etc/nginx/conf.d conf.d
#停止容器
docker stop mynginx
#洗掉容器
docker rm mynginx
#再次運行
docker run --name mynginx -p 8080:80 --network lnmp -v /root/docker/nginx/html:/usr/share/nginx/html -v /root/docker/nginx/conf.d:/etc/nginx/conf.d/ -d nginx:1.18.0
測驗:在Nginx站點根目錄html目錄下創建index.html檔案,并寫入文字:
echo “Nginx Server” >> /root/docker/nginx/html/index.html
瀏覽器訪問主機地址 服務器ip:8080 顯示 Nginx Server,則Nginx安裝成功
4、安裝MySQL鏡像:docker pull mysql:5.7.35
5、創建并運行MySQL容器:
docker run --name mysql5.7 --network lnmp -v /root/docker/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true mysql:5.7.35
6、安裝PHP鏡像:docker pull php:7.4-fpm
7、創建并運行PHP容器:
#運行鏡像
docker run --name php7.4 --network lnmp -d php:7.4-fpm
#創建目錄
mkdir -p /root/docker/php
#移動目錄
cd /root/docker/php/
#復制www.conf
docker cp php7.4:/usr/local/etc/php-fpm.d/www.conf www.conf
#進入容器
docker exec -it php7.4 bash
#移動目錄
cd /usr/src/
#解壓檔案
xz -d php.tar.xz
#解壓檔案
tar -xvf php.tar
#退出鏡像
exit
#復制php.ini,這里根據自己的centos系統本身安裝的PHP版本來定義復制目錄,例如本次操作使用的centos7 PHP版本是7.4.25的
docker cp php7.4:/usr/src/php-7.4.25/php.ini-production php.ini
#停止鏡像
docker stop php7.4
#洗掉鏡像
docker rm php7.4
#再次運行鏡像
docker run --name php7.4 --network lnmp -v /root/docker/nginx/html:/var/www/html -v /root/docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /root/docker/php/php.ini:/usr/local/etc/php/php.ini -d php:7.4-fpm
8、編輯Nginx組態檔 vim /root/docker/nginx/conf.d目錄下面的default.conf檔案:
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html index.htm;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.php index.html index.htm;
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /40x.html {
root /user/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /var/www/html/;
fastcgi_pass php7.4:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
9、重新啟動nginx容器:docker restart mynginx
測驗:創建index.php檔案:vim /root/docker/nginx/html/index.php,輸入:
<?php
phpinfo();
保存后,瀏覽器再次訪問主機地址 服務器ip:8080 顯示php資訊,則PHP安裝成功
docker的nginx負載
實踐操作:安裝以上的操作步驟3、再分別創建mynginx1 和 mynginx2 容器,注意修改步驟中的mynginx命名,以及/root/docker/nginx1和/root/docker/nginx2路徑修改,然后再修改宿主機的nginx配置,我的安裝路徑是:/usr/local/nginx/conf/
http中添加如下:
upstream 192.168.2.195 {
server 127.0.0.1:8081 weight=2;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8080 weight=3;
}
server {
listen 80;
server_name 192.168.2.195;
location /{
proxy_pass http://192.168.2.195;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
再重啟宿主機的nginx,再次瀏覽器訪問服務器ip,不需要埠即可訪問到8080 8081 8082埠
docker + php 環境配置,參考:
https://www.jb51.net/article/218747.htm
https://blog.csdn.net/UserPHP/article/details/100728267
docker + 負載,參考:
https://blog.csdn.net/weixin_41515615/article/details/81351006
https://blog.csdn.net/yinjinshui/article/details/101352012
https://blog.csdn.net/weixin_39902184/article/details/110606615?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350864.html
標籤:其他
