[精讚] [會員登入]
36

[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

你可能感興趣的文章

[Centos7] 安裝 semanage (selinux工具程式) 安裝selinux的工具程式 semanage

[Linux] 怎麼修改終端機console下ls的顏色? 在linux下的ls使用--color的參數時,雖然目錄有上色,但是顏色是深藍色很難辨識,要怎麼修改呢?

[APACHE] PHP<5.5及 PHP>=5.5 安裝APC php5.5版後的apc只能手動安裝,此文包含php<5.5及php>=5.5兩種安裝方法

[Centos7] 使用網路安裝 Centos7 使用網路來安裝Centos7,雖然這不是什麼新鮮事,但可以省你的磁碟空間或光碟片

[Centos7] selinux 修改網頁連線的埠號 想把網頁改到非標準的80埠,在selinux上要如何修改?

[Centos6] php5.3升級為php5.6 Centos6 + php5.6 升級

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

SELinux 常用指令和檔案 在Redhat系列中,Centos5以後加入了selinux,他並沒有這麼可怕,不必每次看到Selinux ,就想把他

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

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

[CodeIgniter 3] 資料庫的使用方法整理2/2 CI3 承襲 CI2,有很多的builder class可以用,依各人的使用習慣,有人喜歡一堆sql字串,有人喜歡用helper

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式