在开始这篇文章之前,我觉得有必要先交代一下笔者所使用的开发环境。电脑是一台 MacBook Pro. 我相信很多从事 PHP 项目开发的小伙伴都有过这样的一些问题,自己电脑上很难配置出于生产环境一样的运行环境。比如,生产环境用的是 Linux 系统,而自己电脑上又是 macOS 系统,而且我发现 macOS 环境下想要安装 PHP 扩展也是一件非常麻烦的事情,这其中当然也有部分原因是得益于咱们特有的局域网环境问题。当然,笔者也不推荐在 macOS 环境下用 Homebrew 安装的 PHP 运行环境。这里推荐大家使用 Docker 环境来运行咱们的 PHP 项目。
使用 Docker 来运行 PHP 项目考虑是有原因的:
- Docker 中咱们可以使用 Linux 的系统,基本上可以跟生产服务器所使用的环境一样了。
- Docker 中可以配置多种环境,无论是老版本的 PHP 5.x 还是最新的 PHP 7.4 都是可以根据需要自行安装的。
- Linux 下 PHP 环境更加简单,社区文档更加丰富,所有操作起来会更加简单,避免踩上很多无用的坑。
1. 说明
本文将讲述创建一个博客网站的过程。
项目名称:blog
测试域名:blog.local
操作系统:Ubuntu 18.04
PHP 版本:PHP 7.2
数据库:MySQL
数据库名称:db_blog
数据库用户名:db_blog
数据库密码:saJXUFS9
2. 构建 Ubuntu-LNMP 镜像
镜像构建文件见: https://github.com/ismdeep/dockerfile/tree/master/ubuntu-lnmp
git clone https://github.com/ismdeep/dockerfile.git
cd dockerfile/ubuntu-lnmp
docker build -t ubuntu-lnmp .
3. 运行 Ubuntu-LNMP 容器
首先创建一个空的文件夹
blog
,本文使用目录为/Users/ismdeep/Data/blog
运行容器:
docker run --name blog \ -v /Users/ismdeep/Data/blog:/var/www/blog \ -p 80:80 \ -p 3306:3306 \ -d ubuntu-lnmp
进入 Docker 容器并初始化项目。
docker exec -it blog bash cd /var/www composer create-project --prefer-dist laravel/laravel blog
配置 Nginx
Nginx 配置目录在
/etc/nginx/sited-enabled
Nginx 配置如下
server { listen 80; root /var/www/blog/public; index index.php; server_name blog.local; location / { try_files $uri $uri/ /index.php?$query_string; } location ~\.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } location ~/\.ht { deny all; } }
配置 MySQL 数据库
为了能够通过 PhpStorm 等开发软件能够连接 MySQL 数据库,我们需要将
/etc/mysql/mysql.conf.d/mysqld.cnf
文件中bind-address = 127.0.0.1
注释起来。并重启数据库。重启方法嘛,直接重启 Docker 不就成了?创建数据库及用户
在 Docker 容器中,运行以下命令,即可进入 MySQL.
mysql -uroot -p
create database db_blog default character set utf8mb4 collate utf8mb4_unicode_ci; CREATE USER 'db_blog'@'%' IDENTIFIED WITH mysql_native_password BY 'saJXUFS9'; grant all privileges on db_blog.* to 'db_blog'@'%'; flush privileges;
将项目使用的 MySQL 配置信息写入项目的
.env
文件中
4. PHP 命令说明
对于项目开发过程中所需要使用的 php artisan
的命令,当然我们需要去 Docker 容器中执行了。
php artisan migrate