基于 Docker-CentOS7.5 安装 Laravel, 完美无坑!

虽然环境搭建的方法文档上都有说明,但是对我等菜逼来说依然遇到了很多坑,我在这里基于 centos7.5 开一条柏油路,希望大家在这条路上可以节省很多时间!

我这里是使用的 docker, 请自行安装 docker !

约定:
在本机上执行的命令使用 > 符号,在容器中执行的命令使用 $ 符号。

获取 centos 镜像(现在默认为 7.5 版本)

> docker pull centos

后台运行 centos 容器,起别名 Laravel, 映射 8000 端口到本机的 8000 端口

> docker run -it -p 127.0.0.1:8000:8000 -d --name Laravel centos

进入 Laravel 容器

> docker exec -it Laravel /bin/bash

解决依赖问题

$ yum install zip unzip openssl openssl-devel gcc vim git wget libxml2-devel autoconf make -y

进入 root 目录

$ cd

下载 php 源码压缩包并解压

$ wget http://cn2.php.net/distributions/php-7.2.7.tar.gz
$ tar -zxvf php-7.2.7.tar.gz

编译并安装 php

$ cd php-7.2.7
$ ./configure --with-zlib
$ make install

安装需要的扩展

$ cd ./ext/mbstring
$ phpize && ./configure && make install
$ cd ../../

$ cd ./ext/openssl
$ mv config0.m4 config.m4
$ phpize && ./configure && make install
$ cd ../../

$ cd ./ext/zip
$ phpize && ./configure && make install
$ cd ../../

配置 php.ini

$ mv php.ini-production /usr/local/lib/php.ini

打开 /usr/local/lib/php.ini
将被注释的 extension=openssl 去掉注释
将被注释的 extension=mbstring 去掉注释
在附近添加 extension=zip

检查扩展是否备齐 (可以忽略此命令)

$ php -m

安装并更新 composer

$ php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ mv composer.phar /usr/local/bin/composer
$ composer self-update

由于 composer 不让在 root 环境中运行所以需要创建个用户,去那个用户中操作!

$ adduser mrz
$ passwd mrz
$ su mrz
$ cd

加速:

$ composer config -g repo.packagist composer https://packagist.phpcomposer.com

创建项目(第一次创建项目需要多等一会)

$ composer create-project --prefer-dist laravel/laravel blog

启动项目服务

$ cd blog
$ php artisan serve --host=0.0.0.0 --port=8000

然后在本地主机打开 http://localhost:8000 可以看到我们 laravel 项目的主页

至此 laravel 安装完毕!


我还想做两件事:

  1. 如果我将容器删除的话,新创建容器后还是需要做上面的这些操作;所以我要在这个阶段构建一个镜像保存下来,下次就不用再安装了,可以拉去镜像直接使用。
  2. 我不想使用 vim 在容器中写代码,要将本地一个目录映射到容器;在容器中操作 (项目代码的提交,拉取,服务的启动等等) 项目,在容器外写代码!

在 docker hub 上注册一个账户

创建一个仓库,命名为 samoyedsun

本地提交容器的操作记录,b4a379d00f82 是你容器的 id

> docker commit -m "a new laravel image" -a "mr_z" b4a379d00f82 samoyedsun/laravel:v1

将镜像推送到 docker hub, 如果未登陆,需要执行 docker login 登陆自己的 docker hub 账户

> docker push samoyedsun/laravel:v1

拉取镜像

> docker pull samoyedsun/laravel:v1

以后台方式运行容器,关闭安全权限,将本地目录 / Users/mrz/laravel 映射到容器中 /home/mrz/laravel

> docker run -it -d -p 8000:8000 -v /Users/mrz/laravel_project:/home/mrz/laravel_project --privileged=true --name Laravel samoyedsun/laravel:v1

进入容器中的 laravel_project 创建自己的 laravel 项目,或者丛 github 上拉取自己的项目。如果是 github 上拉取项目的话需要先看一下从 GitHub 上克隆项目代码后需要做的事情,这样才能顺利再次启动你的服务。

> docker exec -it Laravel /bin/bash
$ su mrz
$ cd /home/mrz/laravel_project
$ composer create-project --prefer-dist laravel/laravel blog

接下来就可以在本机进入 / Users/mrz/laravel_project 编辑自己的项目了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
MR_Z
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7
xianyunyehe

都用 docker 了。直接用个带环境的 不是更方便

6年前 评论
幽弥狂

@xianyunyehe 求推荐啊

帖子很好。蟹蟹

6年前 评论

推荐用 本站镜像

6年前 评论
xianyunyehe

@Chasers9527

docker search laravel 

然后找下。
或者找个 lnmp 也可以的

6年前 评论
幽弥狂

@xianyunyehe 好的。谢谢

6年前 评论

为什么需要 centos 在装 laravel 环境啊? docker 只是用来做服务器环境不行吗?本地编码,装 composer、npm?
这个没大理解

6年前 评论
MR_Z

@xianyunyehe 新手多折腾折腾没坏处,自己从头开始玩遇到问题也知道原因,主要是我喜欢这样。生产环境肯定不会这样玩的啦!:blush:

6年前 评论