本節為 Docker下 Nginx,Mysql,Php 環境搭建 版本:mysql:5.6,nginx,php:5.6 fpm 只適合 "Docker環境" 。本例以Ubuntu16.04 x64下的Docker環境為例 所有文件組織在 目錄下 最終目錄結構 下是臨時文件,上傳的文件映射到該目錄 下 ...
本節為 Docker下 Nginx,Mysql,Php 環境搭建
版本:mysql:5.6,nginx,php:5.6-fpm
只適合Docker環境。本例以Ubuntu16.04-x64下的Docker環境為例
所有文件組織在
/www/
目錄下
最終目錄結構
www/
|
|── tmp
|
|
|── cert
|
|
├── conf
│ ├── mysql
│ ├── nginx
│ │ └── nginx.conf
│ └── php5.6
│ ├── docker-php-ext-mysql.ini
│ ├── docker-php-ext-mysqli.ini
│ └── docker-php-ext-pdo_mysql.ini
├── logs
│ ├── mysql
│ └── nginx
│ ├── access.log
│ └── error.log
├── mysql
└── sites
├── athome
│ └── index.php
└── test
└── info.php
/www/tmp/*
下是臨時文件,上傳的文件映射到該目錄/www/cert/*
下是證書文件/www/conf/*
下是各自的配置文件/www/logs/*
下是各自的日誌/www/mysql/*
下是mysql資料庫的數據(持久化)/www/sites/*
下是各網站內容/www/sites/athome/*
主功能變數名稱對應的網站,其他為子功能變數名稱
首先創建目錄
/www/
sudo mkdir /www/
[dzlua@ubuntu:~]$ sudo mkdir /www/
[dzlua@ubuntu:~]$ cd /www/
[dzlua@ubuntu:/www]$
Mysql
拉取鏡像
docker pull mysql:5.6
運行容器
docker run -d -p 3306:3306 \
--name mysql \
--restart always \
-v /www/conf/mysql:/etc/mysql/config.d \
-v /www/logs/mysql:/logs \
-v /www/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
其中
MYSQL_ROOT_PASSWORD
為root初始化密碼
Php
拉取鏡像
docker pull php:5.6-fpm
運行容器
docker run -d -p 9000:9000 \
--name php5.6-fpm \
--restart always \
-v /www/conf/php5.6:/usr/local/etc/php/conf.d \
-v /www/sites:/www \
-v /www/tmp:/tmp \
php:5.6-fpm
配置
更改許可權
進入容器
docker exec -it php5.6-fpm /bin/bash
[dzlua@ubuntu:/www]$ docker exec -it php5.6-fpm /bin/bash root@07eefd2ced20:/var/www/html#
更改目錄歸屬
chown -R www-data:www-data /www/ chown -R www-data:www-data /tmp/
root@07eefd2ced20:/var/www/html# chown -R www-data:www-data /www/ root@07eefd2ced20:/var/www/html# root@07eefd2ced20:/var/www/html# chown -R www-data:www-data /tmp/ root@07eefd2ced20:/var/www/html#
更改目錄許可權
chmod -R 755 /www/ chmod -R 0777 /tmp/
root@07eefd2ced20:/var/www/html# chmod -R 755 /www/ root@07eefd2ced20:/var/www/html# root@07eefd2ced20:/var/www/html# chmod -R 0777 /tmp/ root@07eefd2ced20:/var/www/html#
安裝擴展
進入容器
docker exec -it php5.6-fpm /bin/bash
[dzlua@ubuntu:/www]$ docker exec -it php5.6-fpm /bin/bash root@07eefd2ced20:/var/www/html#
安裝擴展
docker-php-ext-install pdo pdo_mysql mysqli mysql
root@07eefd2ced20:/var/www/html# docker-php-ext-install pdo pdo_mysql mysqli mysql root@07eefd2ced20:/var/www/html#
設置
進入設置
cd /www/conf/php5.6
新建 docker-php.ini,輸入
date.timezone = "Asia/Shanghai"
,輸入ESC:qEnter
退出vi docker-php.ini
操作過程(設置時區為中國北京):
[dzlua@ubuntu:/www]$ cd /www/conf/php5.6 [dzlua@ubuntu:/www/conf/php5.6]$ ls docker-php-ext-mysqli.ini docker-php-ext-pdo_mysql.ini docker-php-ext-mysql.ini [dzlua@ubuntu:/www/conf/php5.6]$ vi docker-php.ini date.timezone = "Asia/Shanghai" [dzlua@ubuntu:/www/conf/php5.6]$ ls docker-php-ext-mysqli.ini docker-php-ext-pdo_mysql.ini docker-php-ext-mysql.ini docker-php.ini [dzlua@ubuntu:/www/conf/php5.6]$ cat docker-php.ini date.timezone = "Asia/Shanghai" [dzlua@ubuntu:/www/conf/php5.6]$
重啟容器
docker restart php5.6-fpm
[dzlua@ubuntu:/www]$ docker restart php5.6-fpm
[dzlua@ubuntu:/www]$
Nginx
拉取鏡像
docker pull nginx
運行容器
docker run -d -p 80:80 -p 443:443 \
--name nginx \
--restart always \
-v /www/conf/nginx:/etc/nginx/conf.d \
-v /www/logs/nginx:/var/log/nginx \
-v /www/sites:/usr/share/nginx/html \
-v /www/cert:/etc/nginx/cert \
nginx
配置
- nginx config
- 假設主功能變數名稱為dzlua.top,www.dzlua.top
www.dzlua.top
跳轉到dzlua.top
,對應目錄為/www/sites/athome
*.dzlua.top
對應為/www/sites/*
fastcgi_pass
對應的IP為內網IP(非127.0.0.1,nginx訪問php使用的IP)
編輯
/www/conf/nginx/nginx.conf
# dzlua.top 伺服器配置 http server { listen *:80; listen [::]:80; server_name www.dzlua.top; return 301 $scheme://dzlua.top$request_uri; } server { listen *:80; listen [::]:80; server_name dzlua.top; #綁定功能變數名稱 index index.htm index.html index.php; #預設文件 root /usr/share/nginx/html/athome; #網站根目錄 location / { index index.html index.htm index.php; autoindex off; } location ~ \.php(.*)$ { root /www/athome; fastcgi_pass 172.17.21.249:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } } server { listen *:80; listen [::]:80; server_name ~^(.+)?.dzlua.top$; #綁定功能變數名稱 set $site $1; index index.htm index.html index.php; #預設文件 root /usr/share/nginx/html/$site; #網站根目錄 location / { index index.html index.htm index.php; autoindex off; } location ~ \.php(.*)$ { root /www/$site; fastcgi_pass 172.17.21.249:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
# dzlua.top 伺服器配置 https, /www/sites/www/目錄為athome網站 server { listen *:80; listen [::]:80; server_name www.dzlua.top dzlua.top; return 301 https://www.dzlua.top$request_uri; } server { listen 443 ssl; server_name ~^(.+)?.dzlua.top$; #綁定功能變數名稱 set $site $1; ssl on; ssl_certificate cert/dzlua.top.pem; ssl_certificate_key cert/dzlua.top.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; index index.htm index.html index.php; #預設文件 root /usr/share/nginx/html/$site; #網站根目錄 location / { index index.html index.htm index.php; autoindex off; } location ~ \.php(.*)$ { root /www/$site; fastcgi_pass 172.17.21.249:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
重啟容器
docker restart nginx
[dzlua@ubuntu:/www]$ docker restart nginx [dzlua@ubuntu:/www]$
創建網站
所有網站都放在
/www/sites/
目錄下
創建測試網站
在
/www/sites
下創建test
,並創建info.php
文件[dzlua@ubuntu:/www/sites/test]$ cat info.php <?phpphpinfo();?> [dzlua@ubuntu:/www/sites/test]$
訪問網站
http://dzlua.top/test/info.php
,能顯示php信息說明OK
創建主站
- 在
/www/sites
下創建athome
文件夾 - 把 網站源碼 上傳到
/www/sites/athome
目錄 - 把
/www/sites/athome
許可權更改為chown -R www-data:www-data /www/sites/athome
- 訪問地址為:
http://dzlua.top
- 在
創建子功能變數名稱下其他網站,假設子功能變數名稱為
bbs
- 在
/www/sites
下創建bbs
文件夾 - 把 網站源碼 上傳到
/www/sites/bbs
目錄 - 把
/www/sites/bbs
許可權更改為chown -R www-data:www-data /www/sites/bbs
- 訪問地址為:
http://bbs.dzlua.top
- 在