三十而立

2018年1月

通过Vagrant部署开发环境,使用目录共享模式,在本地磁盘进行开发,通过虚拟机环境运行开发的页面。
但如果出现:修改替换了一个css,一张图片,然后刷新浏览器,发现什么都没有变,然后你有非常猛烈、使劲的F5,依旧还是没有改变,是的,你看看编辑器,似乎替换是正常的,在看看VM上的文件,也都是对的,尝试重启nginx依旧没有任何变化,你开始怀疑php5-fpm甚至于毫不相干的memcached和mysql,但都无济于事,也不知道是什么让这些文件被“缓存”了呢。

当你尝试修改一个js,并且用同样的方法更新之后,会遇到类似的问题,是的,就算重启VM上任何服务,甚至重启VM,依旧没有用
,尝试花费很多时间,试验各种各样的方法去解决这个问题,其实对于nginx来说,你只需要修改配置文件(nginx.conf)中的一行重启就能简单的解决这个问题:

sendfile off;  //搜索sendfile

//找到 nginx.conf ,把里面的 “sendfile on” 修改为 “sendfile off”。

当然,如果你使用Apache也可能遇到类似的问题,那么同样也有类似的配置需要修改:

EnableSendfile off

先去安装一个适合在 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 php71u-fpm php71u-cli php71u-xml php71u-gd php71u-mysqlnd php71u-pdo php71u-mcrypt php71u-mbstring php71u-json php71u-opcache -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.0.111;
  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