目錄
?一、實驗
1.環境
2.OpenEuler 部署 docker-compose
3.docker-compose 部署 LNMP
二、問題
1.ntpdate未找到命令
2.timedatectl 如何設置時區與時間同步
3.php網頁顯示時區不對
?
?
?一、實驗
1.環境
(1)主機
表1? 主機
系統 | 架構 | 版本 | IP | 備注 |
Linux | openEuler | 22.03 LTS SP2 | 192.168.204.144(動態) 192.168.204.141(靜態) 192.168.204.142(靜態) | ? |
? | docker | 25.0.3 | ? | ? |
? | docker-compose | 2.24.6 | ? | ? |
(2)查看系統版本
[root@localhost ~]# cat /etc/os-release
(3) 查看網絡ip
[root@localhost ~]# ip addr
(4) 查看docker版本
[root@localhost ~]# docker --version
(5)查看docker進程
[root@localhost ~]# docker ps
(6)查看端口
80 、3306、9000端口被docker容器占用
[root@localhost ~]# netstat -antlp
[root@localhost ~]# netstat -antlp |grep docker-proxy
(7)刪除所有容器
[root@localhost ~]# docker rm -f $(docker ps -aq)
再次查看
[root@localhost ~]# docker ps
?
2.OpenEuler 部署 docker-compose
(1) 官網
Releases · docker/compose · GitHub
(2)下載
wget https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64
(3) 移動賦權
[root@localhost ~]# sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@localhost ~]# sudo chmod +x /usr/bin/docker-compose
(4)查看版本
[root@localhost ~]# docker-compose version
?
3.docker-compose 部署 LNMP
(1)查看docker鏡像
[root@localhost ~]# docker images
(2)創建掛載目錄
[root@localhost ~]# mkdir -p /docker/mysql/db /docker/www /docker/nginx/conf.d[root@localhost ~]# cd /docker/ ; ls
(3)編輯配置文件
[root@localhost docker]# vim /docker/docker-compose.yml
version: "3.9"
services:mysql:restart: alwaysimage: mysql:8.0.35container_name: mysqlcommand:--default-authentication-plugin=mysql_native_password--default-time-zone=+08:00environment:TZ: PRCMYSQL_ROOT_PASSWORD: Root_321ports:- "3306:3306"volumes:- /docker/mysql/db:/var/lib/mysqlphp-fpm:restart: alwaysimage: bitnami/php-fpmcontainer_name: php-fpmenvironment:- TZ=Asia/Shanghaivolumes:- /docker/www:/usr/share/nginx/htmldepends_on:- mysqlnginx:image: nginx:latestrestart: alwayscontainer_name: nginxenvironment:- TZ=Asia/Shanghaiports:- 80:80- 443:443volumes:- /docker/nginx/conf.d/:/etc/nginx/conf.d- /docker/www:/usr/share/nginx/htmldepends_on:- php-fpm
~
(3)查看目錄
[root@localhost docker]# ls
docker-compose.yml mysql nginx www
(4)添加nginx配置文件
[root@localhost docker]# cd nginx/conf.d/
[root@localhost conf.d]# ls
[root@localhost conf.d]# vim default.conf
server{listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm index.php;}location ~ \.php$ {root /usr/share/nginx/html;fastcgi_pass php-fpm:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param SCRIPT_NAME $fastcgi_script_name;include fastcgi_params;}}
(5)查看目錄
[root@localhost docker]# tree /docker
[root@localhost docker]# tree /docker -s
(6)運行
-d 在后臺運行容器,沒有提示信息
[root@localhost docker]# docker-compose up -d
(7)查看進程
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0194b5301702 nginx:latest "/docker-entrypoint.…" 47 seconds ago Up 45 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
388b48d024e3 bitnami/php-fpm "php-fpm -F --pid /o…" 47 seconds ago Up 46 seconds 9000/tcp php-fpm
3250c88c5e04 mysql:8.0.35 "docker-entrypoint.s…" 47 seconds ago Up 46 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
(8)訪問
http://192.168.204.141
目前為空
(9)創建index.php
[root@localhost docker]# cd www/
[root@localhost www]# ls
[root@localhost www]# vim index.php
<?php
phpinfo();
(10)再次訪問
http://192.168.204.141
(11)創建數據庫連接db.php
[root@localhost www]# sudo vim /docker/www/db.php
<?php
date_default_timezone_set("PRC");
#輸出php版本號
echo PHP_VERSION;
printf("<br>");
echo date('Y-m-d H:i:s');
printf("<br>");
/*循環格式化輸出*/
for ($i = 1; $i <= 5; $i++) {printf("<h3>%03d</h3>", $i);
}
//---pdo 連接數據庫
$dsn = 'mysql:host=mysql;dbname=mysql';
$username = 'root';
$password = 'Root_321';
try {$db = new PDO($dsn, $username, $password);// 設置錯誤模式為異常$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);echo "成功連接到數據庫";
} catch (PDOException $e) {echo "連接數據庫失敗: " . $e->getMessage();
} catch (Exception $e) {echo "系統未知異常:" . $e->getMessage();
}
$st = $db->query("show databases");
while ($row = $st->fetch(3)) {echo $row[0] . '<br>';
}
(12) 訪問
http://192.168.204.141/db.php
(13)刪除項目
[root@localhost docker]# docker-compose rm -f -s
(14)查看進程
目前為空
[root@localhost docker]# docker ps
?
二、問題
1.ntpdate未找到命令
(1)報錯
-bash: ntpdate:未找到命令
(2)原因分析
未安裝ntp
(3)解決方法
[root@localhost www]# dnf install ntp -y
成功:
[root@localhost www]# ntpdate cn.pool.ntp.org
?
2.timedatectl 如何設置時區與時間同步
(1)設置時區
#設置時區
[root@localhost www]# timedatectl set-timezone Asia/Shanghai#查看
[root@localhost www]# timedatectl
(2)設置時間同步
#開啟同步
[root@localhost www]# timedatectl set-ntp true#關閉同步
[root@localhost www]# timedatectl set-ntp false#查看
[root@localhost www]# timedatectl
?
3.php網頁顯示時區不對
(1)報錯
(2)原因分析
php文件未設置時區
(3)解決方法
修改db.php文件
添加如需代碼:
date_default_timezone_set("PRC");
成功:
?