你想在本地开发 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 环境。
权限
Vagrant 会给我们在虚拟机与本地电脑之间设置一个共享的目录,默认这个目录在本地电脑就是项目的根目录,在虚拟机上这个共享的目录是 /vagrant ,这个目录的拥有者与用户组都会是 vagrant。注意我们不能在虚拟机上修改这个目录的权限,所以,如果你的网站应用放在这个目录的下面或者它下面的某个子目录里面,你需要把运行 PHP-FPM 这个服务的用户修改成 vagrant。
编辑一下 php-fpm 的配置文件:
sudo vi /etc/php-fpm.d/www.conf
搜索一下 user,等号右边的值就是运行 PHP-FPM 这个服务的用户,默认应该是 php-fpm,我们需要把它改成 vagrant :
user = vagrant
保存配置文件,重新启动一下 PHP-FPM:
sudo systemctl restart php-fpm