vagrant的学习 之 ThinkPHP5.1


本文根据慕课网的视频教程练习,感谢慕课网!

慕课视频学习地址:https://www.imooc.com/video/14218

慕课的参考文档地址:https://github.com/apanly/mooc/tree/master/va


(1)下载ThinkPHP5.1的框架:

如果使用git克隆框架,需要先安装git:

sudo apt-get install  git

创建web目录:

mkdir /home/www

在www目录:

cd /home/www
sudo git clone https://github.com/top-think/think.git tp5

然后进入自动创建的tp5目录,进行克隆核心代码:

cd tp5
sudo git clone https://github.com/top-think/framework thinkphp

(2)如果web服务器时nginx:

配置nginx:

cd /etc/nginx/conf.d/

创建tp5.conf

server{
server_name study.tp5.com;
root /home/www/tp5/public;
index index.php index.html;
location / {
if ( -f $request_filename){
break;
}
if ( !-e $request_filename){
rewrite ^/(.*)$ /index.php/$ last;
break;
}
} location ~ \.php{
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)(/.+)"){
set $script $;
set $path_info $;
}
include fastcgi_params;
fastcgi_pass 127.0.0.1:;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $script;
try_files $uri = ; }
}

然后重启nginx:

方式一:sudo /etc/init.d/nginx restart

方式二:sudo service nginx restart

如果重启nginx失败,例如:

sudo /etc/init.d/nginx restart

* Restarting nginx nginx               [fail]

解决方法,使用 sudo nginx -t查看错误原因:

nginx: [emerg] unknown directive "if(" in /etc/nginx/conf.d/tp5.conf:
nginx: configuration file /etc/nginx/nginx.conf test failed

可以看出是if(的地方有问题,if和(中间增加空格后错误消失。

* Restarting nginx nginx               [OK]

配置虚拟域名:

sudo vim /etc/hosts
ip地址  study.tp5.com

然后测试:

vagrant@vagrant-ubuntu-trusty:/etc$ curl -I 'study.tp5.com'
HTTP/1.1 Bad Gateway
Server: nginx/1.4. (Ubuntu)
Date: Thu, Aug :: GMT
Content-Type: text/html
Content-Length:
Connection: keep-alive

发现报502错误,查看nginx的错误日志,

打开nginx的配置文件,找到错误日志的文件的位置,然后打开查看具体错误。

cat /etc/nginx/nginx.conf

查找error_log的配置:

error_log /var/log/nginx/error.log;

cat /var/log/nginx/error.log

[error] #: * connect() failed (: Connection refused) while connecting to upstream, 
client: 192.168.8.172, server: study.tp5.com, request: "HEAD / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "study.tp5.com"

连接被拒绝,进入php的配置 :

cd /etc/php5/fpm/pool.d

编辑www.conf:

sudo vim www.conf

找到 listen监听的位置:

listen = /var/run/php5-fpm.sock

sock域方式没有端口方式稳定,修改为端口监听。

listen = 127.0.0.1:

重启fpm:

方式一:sudo service php5-fpm restart

方式二:sudo /etc/init.d/php5-fpm restart

再次访问域名,发现报500错误:

[error] #: * FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected '.', 
expecting '&' or variable (T_VARIABLE) in /home/www/tp5/thinkphp/library/think/Loader.php on line 391" while reading response header from upstream,
client: 192.168.8.172, server: study.tp5.com, request: "HEAD / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "study.tp5.com"

打开文件:thinkphp/library/think/Loader.php,找到391行,发现

public static function factory($name, $namespace = '', ...$args)
这个$args参数前多了三个点,可能是这个错误,于是就删除这三个点,重新访问 study.tp5.com 。
显示 ThinkPHP V5.1的界面,访问成功!

(3)如果web服务器时apache:
进入apache的配置目录,新建一个单独的tp5的配置文件,
cd /etc/apache2/sites-enabled
sudo touch tp5.conf

编辑文件:

  <VirtualHost *:>
ServerName study.tp5.com
DocumentRoot /home/www/tp5/public/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后就可以访问了,接下来配置url重写,

tp5框架下的目录public下的.htaccess默认是不生效的,需要开启apache的重写模块:

sudo a2enmod rewrite

然后修改apache的配置:

<Directory />
Options FollowSymLinks
AllowOverride None #修改成AllowOverride ALL 打开rewrite
#Require all denied #把这行屏蔽掉,拒绝一切链接
</Directory>

然后重启apache
sudo service apache2 restart 或者 sudo /etc/init.d/apache2 restart

测试 http://study.tp5.com:8888,显示:

:)
ThinkPHP V5.1
12载初心不改(2006-2018) - 你值得信赖的PHP框架

配置成功!


总结:

  安装过程中出现了很多错误,有不小心敲错的,也有可能是框架里边的错误,需要一步一步耐心解决。

  欢迎大家指点~



vagrant的学习 之 ThinkPHP5.1的更多相关文章

  1. vagrant的学习之Git学习

    vagrant的学习之Git学习 参考学习网址: http://www.runoob.com/git/git-install-setup.html. http://www.bootcss.com/p/ ...

  2. vagrant的学习 之 打包分发

    vagrant的学习 之 打包分发 一.打包Box: (1)关闭虚拟机. vagrant halt (2)打包: vagrant package 这样打包出来的文件叫package.box. 指定生成 ...

  3. vagrant的学习 之 优化

    vagrant的学习 之 优化 一.修改虚拟机名字: 默认的虚拟机的名字很长:study_default_1535505004652_97747. (1)打开Vagrantfile文件:(2)找到: ...

  4. vagrant的学习 之 Laravel

    vagrant的学习 之 Laravel 本文根据慕课网的视频教程练习,感谢慕课网! 慕课视频学习地址:https://www.imooc.com/video/14218. 慕课的参考文档地址:htt ...

  5. vagrant的学习 之 Yii2

    vagrant的学习 之 Yii2 本文根据慕课网的视频教程练习,感谢慕课网! 慕课视频学习地址:https://www.imooc.com/video/14218. 慕课的参考文档地址:https: ...

  6. vagrant的学习 之 ThinkPHP3.2

    vagrant的学习 之 ThinkPHP3.2 (1)在web目录下新建tp32目录: cd /home/www/ mkdir tp32 (2)下载框架 我从ThinkPHP官网下载了ThinkPH ...

  7. vagrant的学习 之 LNMP和LAMP

    vagrant的学习 之 LNMP和LAMP 本文根据慕课网的视频教程练习,感谢慕课网! 慕课的参考文档地址:https://github.com/apanly/mooc/tree/master/va ...

  8. vagrant的学习 之 基础学习

    vagrant的学习 之 基础学习 本文根据慕课网的视频教程练习,感谢慕课网! 慕课的参考文档地址:https://github.com/apanly/mooc/tree/master/vagrant ...

  9. 【环境学习】ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞

    环境保留:2019.4.4-4.10 环境搭建: 这里我使用的是:vulhub vulhub目录结构:vulhub/thinkphp/5-rcess 测试地址(开放一段时间供大家学习):http:// ...

随机推荐

  1. 【转】Java中,&&与&,||与|的区别

    转自:http://blog.csdn.net/lishiyuzuji/article/details/8116516 在Java的逻辑运算符中,有这么四类:&&(短路与),& ...

  2. JSP页面自动刷新

    1.页面自动刷新:把如下代码加入<head>区域中<meta http-equiv="refresh" content="20">,其中 ...

  3. IIS 的最大并发数

    为了探寻IIS的最大并发数,先要做几个假设. 1.假设最大并发数就是当前的连接数.意思是当前能承受最大的连接,那么就表明最大的并发.2.假设IIS应用程序池处于默认状态,更改设置将会对最大连接数产生影 ...

  4. SQLServer 2012 高效分页

    SQLSERVER2012 出新分页功能啦!!!近两天我在自己工作机的PC(没有并发,单一线程)上做了SqlServer  2000/ (2005/2008)/2012三个版本下的分页性能比较. 大致 ...

  5. JAVA高级特性反射和注解

    反射: 枚举反射泛型注解.html34.3 KB 反射, 主要是指通过类加载, 动态的访问, 检测和修改类本身状态或行为的一种能力, 并能根据自身行为的状态和结果, 调整或修改应用所描述行为的状态和相 ...

  6. 学习笔记 第十章 使用CSS美化表单

    第10章   使用CSS美化表单 [学习重点] 正确使用各种表单控件 熟悉HTML5新增的表单控件 掌握表单属性的设置 设计易用性表单页面 10.1  表单的基本结构 表单包含多个标签,由很多控件组成 ...

  7. Selenium--Python环境部署

    本文引读:一二为python环境安装:三为selenium安装同时介绍了pip:四为PyCharm安装:五为验证SE可以正常使用 一.下载python安装包 我这里安装的是python3.6.5,官网 ...

  8. Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用

    MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...

  9. vs code 格式化 美化 html js css 插件 Beautify

    安装 Beautify 插件 然后 F1 输入 Beautify file 回车即可

  10. java线程学习2

    sleep  变为阻塞态  但不释放锁  休眠指定毫秒时间 yield  变为就绪态  可能立即被执行  也可能不立即被执行 join   插队  暂停当前执行的线程  让调用join的线程先执行 线 ...