{ Hello Magento 2 }

解决 Magento 2 应用问题,更注重深度挖掘。(ง •̀_•́)ง

0%

Docker 搭建 lamp 环境 (失败)

这又是一次不成功的尝试,10 个月前试过一次,同样由于权限问题止步。此次记录下来备查。 windows 10 系统。官网下载安装包,下一步下一步,安装后重启。确认安装成功后,打开 CMD 。 运行一个 ubuntu 的 container

1
docker run -ti --name lamp ubuntu:16.04 bash

升级系统

1
2
apt-get -y update
apt-get -y upgrade

安装apache2

1
apt-get -y install apache2

查看 apache 版本

1
2
3
apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2017-05-05T16:32:00

启用 Apache rewrite 模块

1
a2enmod rewrite
1
apt-get -y install vim
1
vim /etc/apache2/sites-available/000-default.conf

在文件末尾添加 下面的

1
2
3
<Directory "/var/www/html">
AllowOverride all
</Directory>
1
service apache2 restart

安装 MySQL 5.7

1
apt-get -y install mysql-server-5.7 mysql-client-5.7

输入 root 的密码:root

1
2
3
4
5
service mysql restart
mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

创建数据库 magento 并将所有权限授予 magento 用户 密码 magento

1
2
3
4
5
create database magento;
GRANT ALL ON magento.* TO magento@localhost IDENTIFIED BY 'magento';
exit
mysql -u magento -p
show databases;

安装 php 7

1
2
3
4
5
apt-get -y update
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt-get -y update
apt-get install -y php7.0 libapache2-mod-php7.0 php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-mcrypt php7.0-curl php7.0-intl php7.0-xsl php7.0-mbstring php7.0-zip php7.0-bcmath php7.0-iconv
1
2
3
4
5
6
php -v

PHP 7.0.19-1+deb.sury.org~xenial+1 (cli) (built: May 11 2017 14:06:14) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.19-1+deb.sury.org~xenial+1, Copyright (c) 1999-2017, by Zend Technologies

PHP 的其他设置 有两个 php.ini /etc/php/7.0/apache2/php.ini /etc/php/7.0/cli/php.ini 两个都需要更改并启用 opcache

1
2
3
4
5
6
date.timezone = "Asia/Shanghai"
memory_limit = 1024M
opcache.enable=1
opcache.enable_cli=1
opcache.save_comments = 1
service apache2 restart
1
docker commit -m "This is lamp for magento2" -a "Pisces.ThankIT" lamp wqdocker/lamp:v1

这样我就得到了一个 lamp 的 image 然后我尝试更改挂载上去的目录权限,无效。 以下是失败的部分

1
docker run -tid -p 80:80 --name lampv1 -v g:/dockerwww:/var/www/html  wqdocker/lamp:v1 bash
1
docker run -tid -p 80:80 -p 3306:3306 --name lampv2 -v g:/dockerwww:/var/www/html  wqdocker/lamp:v1 bash

进入容器

1
2
3
docker attach lampv1
service apache2 start
service mysql start
1
2
3
4
5
6
7
8
9
10
11
12
useradd -r -m -s /bin/bash magento
配置用户的密码(magento)
passwd magento
寻找 apache 的 user (www-data)
ps aux grep apache
www-data 的 group 也是www-data
groups www-data
把 magento 用户创建的任何文件都分配给 www-data 组
usermod -g www-data magento
验证下 magento 在 www-data 组
groups magento
chown magento:www-data index.php

无法修改权限,查了一些资料,推测是 docker 在 windows 系统上的 bug 。 在 ubuntu 系统下,权限的映射有点小问题,但是可以解决。