lnmp环境搭建
程序员文章站
2022-04-25 15:45:56
本节为 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 | ├── 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/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 \ --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 \ 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 服务器配置 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; } }
-
重启容器
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
- 在