使用Laradock进行PHP7.4+Apache2.4+MariaDB10.3+phpMyAdmin环境配置的步骤如下:
在使用Laradock进行环境搭建时,默认的服务器是nginx。由于生产环境需要使用Apache和MariaDB10.3,我们需要修改laradock的配置。
重要的事项
-
Git 2.35.1
- Git 2.35.1
-
- Docker version 20.10.13
-
- docker-compose version 1.29.2, build 5becea4c
- Laradock v12.1
容器的构造
-
Apache2.4
- Apache2.4
-
- MariaDB10.3
-
- PHP7.4
- phpMyAdmin
目录结构
laradock-Apache ... プロジェクトルート
┗ laradock ... Laradock
┗ laravel ... Laravel app project
┗ public ... 公開ディレクトリ(Document Root)
Laradock的安装设置转到项目根目录
$ mkdir laradock-Apach
$ cd ~/laradock-Apache/
laradock-Apache ... プロジェクトルート
┗ laradock ... Laradock
┗ laravel ... Laravel app project
┗ public ... 公開ディレクトリ(Document Root)
$ mkdir laradock-Apach
$ cd ~/laradock-Apache/
克隆Laradock
$ git clone https://github.com/laradock/laradock.git
前往Laradock
$ cd ~/laradock-Apach/laradock
创建.env文件
$ vi cp .env.example .env
编辑.env文件
$ vim .env
---
### PHP Version ###########################################
- PHP_VERSION=7.3
+ PHP_VERSION=7.4
### MARIADB ###############################################
- MARIADB_VERSION=latest
+ MARIADB_VERSION=10.3
- MARIADB_DATABASE=default
+ MARIADB_DATABASE=laradock
### WORKSPACE #############################################
- WORKSPACE_INSTALL_MYSQL_CLIENT=false
+ WORKSPACE_INSTALL_MYSQL_CLIENT=true
### PHP MY ADMIN ##########################################
- PMA_DB_ENGINE=mysql
+ PMA_DB_ENGINE=mariadb
### APACHE ################################################
- APACHE_DOCUMENT_ROOT=/var/www/
+ APACHE_DOCUMENT_ROOT=/var/www/laravel/public/
---
更改Apache配置将 Apache 的默认配置文件 default.apache.conf 进行备份。
$ cp apache2/sites/default.apache.conf apache2/sites/default.apache.conf.example
$ mv apache2/sites/default.apache.conf.example apache2/sites/default.apache.conf
$ cp apache2/sites/default.apache.conf apache2/sites/default.apache.conf.example
$ mv apache2/sites/default.apache.conf.example apache2/sites/default.apache.conf
编辑Apache的虚拟主机配置文件
$ vim apache2/sites/default.apache.conf
<VirtualHost *:80>
ServerName laradock.test
- DocumentRoot /var/www/
+ DocumentRoot /var/www/laravel/public/
Options Indexes FollowSymLinks
- <Directory "/var/www/">
+ <Directory "/var/www/laravel/public/">
AllowOverride All
<IfVersion < 2.4>
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
修改MariaDB的设置将Mariadb服务器的字符集更改为utf8mb4。
$ cd ~/laradock-Apach/laradock/mariadb
$ cp my.cnf my.cnf.example
$ vi my.cnf
+ [mariadb]
+ character-set-server = utf8mb4
+ [client-mariadb]
+ default-character-set = utf8mb4
启动laradock容器启动
$ docker-compose up -d workspace apache2 mariadb phpmyadmin
创建Laravel项目.
$ docker-compose exec workspace bash
root@509785bbe57:/var/www$
root@509785bbe57:/var/www$ composer create-project "laravel/laravel=8.*" laravel --prefer-dist
root@509785bbe57:/var/www$ cd laravel
root@509785bbe57:/var/www/laravel$ chmod -R 777 storage/
修改Laravel的环境配置更新Laravel项目中生成的.env文件。
root@509785bbe57:/var/www$ cd laravel/
root@509785bbe57:/var/www/laravel$ vi .env
$ cd ~/laradock-Apach/laradock/mariadb
$ cp my.cnf my.cnf.example
$ vi my.cnf
+ [mariadb]
+ character-set-server = utf8mb4
+ [client-mariadb]
+ default-character-set = utf8mb4
$ docker-compose up -d workspace apache2 mariadb phpmyadmin
创建Laravel项目.
$ docker-compose exec workspace bash
root@509785bbe57:/var/www$
root@509785bbe57:/var/www$ composer create-project "laravel/laravel=8.*" laravel --prefer-dist
root@509785bbe57:/var/www$ cd laravel
root@509785bbe57:/var/www/laravel$ chmod -R 777 storage/
修改Laravel的环境配置更新Laravel项目中生成的.env文件。
root@509785bbe57:/var/www$ cd laravel/
root@509785bbe57:/var/www/laravel$ vi .env
$ docker-compose exec workspace bash
root@509785bbe57:/var/www$
root@509785bbe57:/var/www$ composer create-project "laravel/laravel=8.*" laravel --prefer-dist
root@509785bbe57:/var/www$ cd laravel
root@509785bbe57:/var/www/laravel$ chmod -R 777 storage/
root@509785bbe57:/var/www$ cd laravel/
root@509785bbe57:/var/www/laravel$ vi .env
以下是对/var/www/laravel/.env的本地中文释义(只提供一种选项):
/var/www/laravel/.env 可以解释为「位于/var/www/laravel/路径下的.env文件」。
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=laradock
DB_USERNAME=default
DB_PASSWORD=secret
root@509785bbe57:/var/www/laravel$ exit
确认行动只要所有的容器都是“up”的状态,就可以了。
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_apache2_1 /opt/docker/bin/entrypoint ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mariadb_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp, 0.0.0.0:9003->9003/tcp
laradock_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:8081->80/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp, 0.0.0.0:4200->4200/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_apache2_1 /opt/docker/bin/entrypoint ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mariadb_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp, 0.0.0.0:9003->9003/tcp
laradock_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:8081->80/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp, 0.0.0.0:4200->4200/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
只要访问 http://localhost 并成功显示 Laravel 的首页画面即可。

只要能使用 .env 文件中设置的 mariadb 用户名和密码成功登录即可。

执行迁移确认迁移操作能够顺利完成。
root@509785bbe57:/var/www/laravel$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (22.06ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (21.03ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (25.08ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (32.52ms)
MySQL客户端我会在MySQL客户端上确认能否登录。
root@509785bbe57:/var/www$ mysql -h mariadb -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 202
Server version: 5.5.5-10.3.34-MariaDB-1:10.3.34+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
root@509785bbe57:/var/www/laravel$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (22.06ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (21.03ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (25.08ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (32.52ms)
root@509785bbe57:/var/www$ mysql -h mariadb -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 202
Server version: 5.5.5-10.3.34-MariaDB-1:10.3.34+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
现在,你已经准备好开始Laravel的开发了。
附加信息:Laradock(docker) 的操作
登录到Docker的工作空间
$ docker-compose up -d workspace apache2 mariadb phpmyadmin
$ docker-compose up -d workspace apache2 mariadb phpmyadmin
停止 Docker 容器
$ docker-compose down
停止Docker容器,刪除映像。
$ docker-compose down --rmi all
停止 Docker 容器,刪除容量
$ docker-compose down -v
如果更改了Docker的配置文件(例如apache),
$ docker-compose up -d --build workspace apache2 mariadb phpmyadmin
or
$ docker-compose build apache2 など