[精讚] [會員登入]
86

[Redhat Linux9] 安裝docker+ docker compose+ apache+ maraidb+ phpmyadmin+ php7

Rocky Linux(Centos9) 下安裝docker及docker compose

分享此文連結 //n.sfs.tw/16374

分享連結 [Redhat Linux9] 安裝docker+ docker compose+ apache+ maraidb+ phpmyadmin+ php7@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2024-06-07 01:37:58 最後編修
2024-03-15 11:54:10 By 張○○
 

自動目錄

這次的任務是在Red Hat Enterprise Linux release 9.3 (Plow) 裡安裝docker加上以下套件,而不使用redhat原生的podman。

REDHAT9的諸多分枝版本都大同小異。

安裝 Docker及 docker compose

OS

Linux 5.14.0-362.24.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Feb 15 07:18:13 EST 2024 x86_64 x86_64 x86_64 GNU/Linux
Red Hat Enterprise Linux release 9.3 (Plow)
 

安裝

 # dnf install -y yum-utils
 # dnf config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
 # dnf install docker-ce docker-ce-cli

查看版本

 # docker compose version
Docker Compose version v2.24.7

開機啟動

# systemctl enable --now docker

 

docker compose file

建立 docker-compose.yml

version: '3.8'

services:
  apache:
    image: php:7.4-apache
    container_name: apache
    restart: always
    ports:
      - 80:80
    volumes:
      - ../public_html:/var/www/html/

  db:
    image: mariadb:10.11
    restart: always
    container_name: mysql
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD="yourpassword"

上面建立兩個容器,分別是apache和db,其中apache這個容器還包含了php7.4,版本以去dockerhub尋找適合的版本。

例如php,到dockerhub 搜尋php,點車Tags的頁籤,下面會出現很多頁

你可以在 Filter Tags中輸入想要篩檢的關鍵字,例如這次我想用7.x版的php,因此輸入7.進行篩選。

這次使用7.4-apache的版本,只要把tag的標題打入即可。

設定完畢後重新啟動docker compose,在 docker-compose.yml 所在的位置執行:

# docker compose up -d

這個動作會在目錄下建立volume中設定的目錄 public_html/

再把你的php程式寫在這即可。

以上的ports設置中,80:80 代表 <os對外的埠號>:<container服務的ports號>

ports:
      - 80:80

如果不開放給os以外,只給container之間或os對container連線的話,只需要寫一個即可,例如

ports:
      - 3306

加入設定檔及SSL

上面的apache中的設定檔是在container中,可以將他指定到外部並進行設置,因此在volume中加入下面三行

      - ./conf/000-default.conf:/etc/apache2/sites-available/000-default.conf
      - ./conf/apache2.conf:/etc/apache2/apache2.conf
      - ./conf/php.ini:/usr/local/etc/php/php.ini

這時 apache服務的設定看起來是這樣的

  apache:
    image: php:7.4-apache
    container_name: apache
    restart: always
    ports:
      - 80:80
    volumes:
      - ../public_html:/var/www/html/
      - ./conf/000-default.conf:/etc/apache2/sites-available/000-default.conf
      - ./conf/apache2.conf:/etc/apache2/apache2.conf
      - ./conf/php.ini:/usr/local/etc/php/php.ini

分別把三個檔案移到os來,但是原始的設定檔去哪取得?

可以在container執行後,將他拷背出來。

在 docker-compose.yml 所在的位置執行:

# mkdir conf

# docker cp apache:/etc/apache2/sites-available/000-default.conf conf/

# docker cp apache:/etc/apache2/apache2.conf conf/

# docker cp apache:/usr/local/etc/php/php.ini conf/

然後重新啟動docker compose

# docker compose down

# docker compose up -d

如果需要ssl的話,加入3個volume:

- ./conf/default-ssl.conf:/etc/apache2/sites-enabled/default-ssl.conf  <== 網站有ssl時的設定檔
- ./conf/fullchain.crt:/etc/ssl/certs/server.crt  <==  ssl公鑰
- ./conf/priv.key:/etc/ssl/private/private.key  <== ssl私鑰

並把設定檔如前面說明的方式拷背出來

# docker cp apache:/etc/apache2/sites-enabled/default-ssl.conf conf/

公私鑰檔fullchain.crt, priv.key的話就放在指定的目錄中,此例放到 conf 中。

這時 apache服務的設定看起來是這樣的:

  apache:
    image: php:7.4-apache
    container_name: apache
    restart: always
    ports:
      - 80:80
    volumes:
      - ../public_html:/var/www/html/
      - ./conf/000-default.conf:/etc/apache2/sites-available/000-default.conf
      - ./conf/apache2.conf:/etc/apache2/apache2.conf
      - ./conf/php.ini:/usr/local/etc/php/php.ini
      - ./conf/default-ssl.conf:/etc/apache2/sites-enabled/default-ssl.conf
      - ./conf/fullchain.crt:/etc/ssl/certs/server.crt
      - ./conf/priv.key:/etc/ssl/private/private.key

 

安裝phpmyadmin

在docker-compose.yml加下以下內容

  phpmyadmin:
    image: phpmyadmin
    restart: always
    container_name: phpmyadm
    volumes:
      - ./conf/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
      - ./conf/apache2.conf:/etc/apache2/apache2.conf
    environment:
      - PMA_HOST=db
      - UPLOAD_LIMIT=100M
      - MEMORY_LIMIT=256M
      - MAX_EXECUTION_TIME=300

並在apache的設定檔 000-default.conf中加入以下內容

<VirtualHost *:80>
  ServerName yourdomain.exmaple.com
  <Location /phpMyAdm>
     ProxyPass "http://phpmyadmin/"
     ProxyPassReverse "http://phpmyadmin/"
     Order deny,allow
     Deny from All
     Allow from 192.168.1.0/24
     <限定存取的ip範圍>
     AllowMethods GET POST
  </Location>
</VirtualHost>

這樣打入網址yourdomain.exmaple.com就能使用你的phpmyadmin

 

 

結論

使用 docker 來架設伺服器是非常方便的事,只要熟析的話。

 

 

參考資料

[1] http://geekyplatypus.com/dockerise-your-php-application-with-nginx-and-php7-fpm/

[2] https://blogs.slat.org/blog/otakupapa/42

[3] https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#fastcgi-params

[4] https://www.cnblogs.com/xiewenming/p/8109292.html

[5] https://www.nginx.com/resources/wiki/start/topics/examples/full/

[6] https://imququ.com/post/my-nginx-conf-for-wpo.html

 

END

你可能感興趣的文章

[CentOS6] 設定 sendmail Centos6上設定sendmail,基本上sendmail會設定多半是為了寄系統信和收垃圾信(喂!!?)

[postfix] open /etc/postfix/main.cf: Permission denied 等錯誤 遇到開啟 /etc/postfix/main.cf: Permission denied 等錯誤解決

Linux ext3 系統下刪除檔案救回全記錄 今天一個不小心,下了 rm 的指令,從此奮戰一個下午,終於把檔案救回來,以下是全記錄...

PHP for sphinx 函式庫安裝 PECL/sphinx PHP>= 5.2.2 已經能原生支援 sphinx,可是預設的沒有裝,我們得自己裝才能用

[Centos8][Rocky9] ffmpeg 安裝及使用,用ffmpef製作gif動畫 用ffmpef製作gif動畫,但是他的功能很強大,可以用指令來執行

[Centos7] 安裝phpMyAdmin Centos 7有新的方式可以安裝phpmyadmin,不必再採用過去的tarball安裝法。

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

UTF-8 BOM (Byte Order Mark) 的問題 在 Michael Kaplan 那看到 Every character has a story #4: U+feff

[Windows7] 移除IE10及移除IE11 Windows7 不得已的情況要移除IE11或IE10怎麼做?

NETCRAFT發現你的網站及作業系統 NETCRAFT可以發現你的網站及作業系統

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

對物品的感情 這個議題很奇怪,可是大部分的人都會有,物品是死的,壞了就淘汰,出新的就被替換。為何會有情感?