在本地快速用虚拟机搭建一个 LEMP 环境
你想在本地开发 PHP 网站应用,学习 PHP 语言,或者学习使用 SQL 语言操作数据库,你需要准备一个开发环境。请放弃 WAMP,MAMP,XAMPP 或者类似的开发环境,没有任何好处。现在唯一推荐使用 Vagrant + Virtualbox 的方法在本地搭建一个 LEMP 开发环境。
LEMP 是运行 PHP 应用的环境,L 是 Linux ,比如 CentOS,Ubuntu 等等。 E 是 NGINX ,它是一款 Web 服务器。 M 表示 Mariadb 或者 MySQL,是数据服务,P 指的就是 PHP 。
虚拟机
打开命令行工具,创建一个目录,进入到这个目录的下面,然后初始化一下,让这个项目的虚拟机使用一个 CentOS 7 系统的 Box。使用的 Vagrant 还有使用的 Box 我提前已经安装好了。
mkdir ninghao-lemp cd ninghao-lemp vagrant init chef/centos-7.0
编辑一下虚拟机的配置文件,给它设置一个私有的内网 IP, 保存配置文件,再启动一下虚拟机。
vagrant up
然后连接到虚拟机。
vagrant ssh
IUS 仓库
先去安装一个适合在 CentOS 7 上面使用的 ius 仓库,这样我们就可以使用 yum 去安装比较新的软件包了。
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y
NGINX
再去安装一下 NGINX:
sudo yum install nginx -y
启动一下它:
sudo systemctl start nginx
然后让它开机自启动:
sudo systemctl enable nginx
MariaDB
下面再安装一下 MariaDB,我想安装 ius 仓库上的新版的 mariadb ,先删除掉系统自带的 mariadb:
sudo yum remove mariadb-libs -y
再安装一下新的 MariaDB:
sudo yum install mariadb101u-server -y
启动一下它,再让它开机自启动:
sudo systemctl start mariadb sudo systemctl enable mariadb
执行一安全配置:
mysql_secure_installation
回答一些问题,设置一下数据库管理系统的 root 用户的密码。
PHP 7
下面再去安装一下 PHP 还有一些比较常用的扩展:
sudo yum install php70u-fpm php70u-cli php70u-xml php70u-gd php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json -y
启动一下 php-fpm,再让它开机自启动:
sudo systemctl start php-fpm sudo systemctl enable php-fpm
配置
下面去创建一个虚拟主机,让它可以执行 PHP,我们需要创建一个可以执行 PHP 的 NGINX 配置文件。先去创建一个 PHP 文件:
mkdir -p /vagrant/www/default vi /vagrant/www/default/phpinfo.php
在里面添加一个 phpinfo 函数,保存一下文件。
再去创建一个 NGINX 配置文件:
sudo vi /etc/nginx/conf.d/php.basic.conf
添加下面内容:
server { listen 80; server_name 192.168.33.191; root /vagrant/www/default; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } }
保存一下,重新加载一下 NGINX:
sudo systemctl reload nginx
测试
打开浏览器,输入服务器的 IP 地址,后面加上一个 phpinfo.php,在页面上会显示一些跟 php 相关的信息 , 说明我们成功的配置了一个 LEMP 环境。
权限
sudo vi /etc/php-fpm.d/www.conf
user = vagrant
保存配置文件,重新启动一下 PHP-FPM:
sudo systemctl restart php-fpm
评论
皓哥,现在 Atlas 上已经没有 chef 这个账号了好像……改名了还是咋地。推荐一下其他的 box?
8 年 7 个月 以前
我下载下来了,上传到百度云上了:http://yun.baidu.com/share/link?shareid=1270399558&uk=1998298367#path=%2...
8 年 7 个月 以前
改名叫bento,
你可以到这个地址查看。
https://atlas.hashicorp.com/bento/
8 年 6 个月 以前
收到 :)
8 年 6 个月 以前
这个视频在iPad上可以播放啊,这个视频和课程上的新课程录制上有什么不同吗?好久不能在iPad上上课了……期待解决啊
8 年 7 个月 以前
嗯。呵呵。可能因为最近的视频尺寸太大了。
8 年 7 个月 以前
已发布的尺寸太大的视频还会重新修改更新视频文件吗?我每次来这个网站都要点一下新视频看看修复没有哈~
8 年 7 个月 以前
嘿嘿 ~ 我到是在本地更新了这些视频。暂时新发布的视频恢复到原来的 1280 尺寸,以前的大视频我慢慢再更新吧,到时候跟您说一下。
8 年 7 个月 以前
另外发现老师打字超快 :)
8 年 7 个月 以前
快进了吧,哈哈。
8 年 7 个月 以前
有个地方好像错了,sudo yum systemctl start nginx 应该是:sudo systemctl start nginx!:)
8 年 7 个月 以前
嘿嘿,已修正。
8 年 7 个月 以前
我也一直在这里无法开启nginx是什么原因呢?难道是要加!:) ?
8 年 7 个月 以前
皓兄,昨天续费了,但是好像赠送时间没对,麻烦看一下呢。
8 年 7 个月 以前
现在是不是可以了?
8 年 7 个月 以前
非常感谢,嘿嘿。
8 年 7 个月 以前
好了 谢谢
8 年 7 个月 以前
:)
8 年 7 个月 以前
老师,根据这个教程,一步不少的安装,nginx老是安装不上,请问什么原因
8 年 7 个月 以前
执行后 提示
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Cannot open: https://centos7.iuscommunity.org/ius-release.rpm. Skipping.
Error: Nothing to do
8 年 7 个月 以前
网络问题,可能是因为国内网络连接国外的东西会遇到点问题。想想办法 :)
8 年 7 个月 以前
比如用那个 V 什么来 ?
8 年 7 个月 以前
老师 比如我安装ius一直提示
No such command: serch. Please use /usr/bin/yum --help
8 年 7 个月 以前
咦 ~ 这个不应该呀,您在哪里都应该可以执行 yum 命令的。用的是 CentOS 7 吗?
8 年 7 个月 以前
LNMP 这个真的第一次看到 叫 LEMP...
8 年 6 个月 以前
E 取的是 NGINX 的发音(Engine X)
8 年 6 个月 以前
对于一个刚接触的虚拟机和linux环境的新手,跟着步骤走了好多步。最大的困惑。安装软件包时,这些名字和网址怎么来的?例如:sudo yum install mariadb101u-server -y中, mariadb101u-server 的来由。不然只会拷贝复制。谢谢。
8 年 5 个月 以前
一点点经验与多次实践。一开始我也不知道有 mariadb 这个东西,后来搜索知道它跟 mysql 基本上是一个东西,但是社区推荐用 mariadb。centos 自带的仓库里面,软件的版本都比较低,所以需要第三方仓库,比如你需要新版的 php,或者 mariadb,你需要在这些第三方仓库里面找到。通过搜索,我找到了 ius 这个仓库。在安装的时候,你不确定要安装的包的名字,可以使用 yum search 去搜索相关的关键词,然后仓库查看结果,上面有包的名字与介绍,通过这些信息你会知道这个包到底是干什么的。*u 这个只是 ius 仓库为软件包加的一个后缀,为了区分其它仓库提供的同样的软件包。
8 年 5 个月 以前
谢谢指点,稍微清楚一些了。以前只玩windows,换过来很痛苦。
8 年 5 个月 以前
(mariadb)好像是mysql被oracle收购后,原来那帮人搞的吧,centos 7内置mariaDB
8 年 5 个月 以前
终于成功打开phpinfo.php页面。好累啊!:)
再请教个问题,这个文件在我的系统里(不是虚拟机上),怎么直接找到呢?
8 年 5 个月 以前
自己找到了。
8 年 5 个月 以前
请教另一个问题。NGINX 配置文件,可以在本机(非SSH到服务器上)直接打开编辑么?
8 年 5 个月 以前
可以,你可以在虚拟机与主机之间配置一个共享目录,这个目录用来存储 NGINX 的配置文件。
8 年 5 个月 以前
想装一个phpmyadmin, 提示Error: php70u-common conflicts with php-common-5.4.16-36.1.el7_2.1.x86_64
Error: php70u-json conflicts with php-common-5.4.16-36.1.el7_2.1.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
该怎么办呢?请教王老师。
8 年 5 个月 以前
提示 php 的扩展有冲突。不要使用 yum 安装 phpmyadmin,手工下载并安装它吧。
8 年 5 个月 以前
谢谢
8 年 5 个月 以前
config.vm.synced_folder "/localfile", "/vagrant", :mount_options => ["dmode=755","fmode=644"]; 在vagrantfile里面这样写共享目录的设置就能设置vagrant共享目录在centOS虚拟机中的权限;其它类型的linux虚拟机暂时没测试过;
7 年 11 个月 以前
应该没有必要这样做。因为那个共享目录的拥有者是 vagrant 。
7 年 11 个月 以前
可能是我基础不充足,但是默认vagrant目录的目录权限是777,这样的话,phpmyadmin,drupal网站在这个目录,不是也涉及到权限问题吗?那不改权限,是不是会有问题?
7 年 11 个月 以前
权限问题的解决方法有多种。首页你的共享目录的拥有者是 vagrant 这个用户,假设你不能修改这个目录的拥有者,那么,让 php 对这个目录有写入权限,你就需要修改运行 php-fpm 的用户为 vagrant 这个用户。
7 年 11 个月 以前
我先试试修改VAGRANT目录权限的方法会对程序环境造成什么影响吧!您说的方法是可行的,等我用修改权限的方法试过了,如果有问题,我再反馈到这里来!
7 年 11 个月 以前
再有一个问题,使用宁皓网的box,vagrant up后,虚拟机内的系统网络没有私有网络地址,进入到虚拟机后,sudo service network restart;才能让私有网址生效;而且不能在虚拟机使用reboot命令;一旦命令后,共享目录就又没有挂载了;这点实在没有研究透;升级box内的guest additions到与VirtualBox版本匹配也解决不了这个问题;是box的问题,还是vagrant的问题?
7 年 11 个月 以前
嗯,重启你要使用 vagrant 命令:vagrant reload
7 年 11 个月 以前
vagrant reload 以后,进入虚拟机又要sudo service network restart!
7 年 11 个月 以前