- 下载thinkphp3.2(可自行选择合适版本)
http://thinkphp.cn/down/framework.html
下载后think3.2目录如下
think目录
2.打开phpstrom,打开下载后的thinkphp3.2目录
image.png
修改项目名,如我改成了demo-thinkphp3.2,此时目录如下
www WEB部署目录(或者子目录)
├─index.php 入口文件
├─README.md README文件
├─Application 应用目录
├─Public 资源文件目录
└─ThinkPHP 框架目录
-
虚拟机上配置对应目录共享,nginx配置项目服务
我的开发环境为mac,虚拟机采用vagrant管理,php项目通过共享目录的方式进行部署,首先配置项目的共享目录
#常用文件目录
config.vm.synced_folder "/Users/kai.yang/Desktop/LNMP/mnt", "/mnt"
#应用目录
config.vm.synced_folder "/Users/kai.yang/Desktop/LNMP/demo-thinkphp3", "/var/www"
#nginx配置文件目录,为了修改配置方便
config.vm.synced_folder "/Users/kai.yang/Desktop/LNMP/nginx","/etc/nginx/conf.d"
然后我们配置nginx的服务访问,在"/etc/nginx/conf.d下新间demo.conf
server
{
listen 80 ;
#listen [::]:80 default_server ipv6only=on;
#本地测试域名
server_name local.p2.cn;
index index.php index.html index.htm;
root /var/www;
client_max_body_size 100m;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
#if (!-e $request_filename)
# {
# rewrite ^/(.*)$ /index.php?s=$1 last;
# }
#include enable-php.conf;
location / {
try_files $uri $uri/ /index.php?s=$uri&$args;
}
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
#include pathinfo.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param APPLICATION_ENV 'development';
}
#location /nginx_status
#{
# stub_status on;
# access_log off;
#}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /var/log/nginx/fly-crm.log;
}
我本机测试采用域名local.p2.cn,所以在mac的hosts文件中配置
kaiyangdembp-2:CENTOS7-1 kai.yang$ vi /etc/hosts
#添加此行配置,此ip是我通过private配置的本地ip,请看上篇文章
192.168.2.104 local.p2.cn
此时在浏览器访问local.p2.cn,没有问题的话就能访问tp(thinkphp)的欢迎页面,当然我是遇到了如下问题,大家有相同的就参考下
4.遇到问题处理:
下面的问题,我都是通过查看nginx的错误日志error.log发现的,初学者记得看日志的方法,nginx的错误日志在nginx.conf 中有指定,可以找到
cat nginx.conf
user vagrant;
worker_processes 1;
#错误日志路径,查看此文件即可,可以通过tail -f /var/log/nginx/error.log实时查看错误信息,具体百度下日志查看方法
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
- "/www/index.php" is forbidden (13: Permission denied)
解决方案:常见的错误原因
+ /www/index.php文件不存在
+ nginx的启动用户无权限操作应用的工作目录,我就是此原因,修改nginx.conf
#修改为你能操作应用目录的用户,我直接改为root方便测试,实际生产需要配置单独用户
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
- FastCGI sent in stderr: "Primary script unknown"
网上百度会发现很多原因,主要的就是
- 脚本配置 ,在nginx配置SCRIPT_FILENAME,不过一般初学者按网上配置,不会有这个问题
#include pathinfo.conf;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param APPLICATION_ENV 'development';
这个问题引起错误其实并不常见
- 下面常见的问题就是权限的问题,nginx和php-fpm不能互相通信,常用做法就是nginx和php-fpm使用相同的用户启动,这样此用户就有了nginx和php的权限,不会再有此问题,如下第一步,把刚才的nginx用户改成vagrant(这是因为我是用vagrant启动的虚拟机,而应用挂载目录权限都是这个用户,所以为了减少错误,直接用了此用户),修改nginx.conf
user vagrant;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
修改php的配置文件
[root@10 nginx]# ps -ef|grep php
root 5812 1 0 04:23 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
#会发现默认是nobody用户
nobody 5813 5812 0 04:23 ? 00:00:00 php-fpm: pool www
nobody 5814 5812 0 04:23 ? 00:00:00 php-fpm: pool www
root 6231 5144 0 04:31 pts/0 00:00:00 grep --color=auto php
[root@10 nginx]# cat /usr/local/php/etc/php-fpm.conf
......
include=/usr/local/php/etc/php-fpm.d/*.conf
[root@10 nginx]# cd /usr/local/php/etc/php-fpm.d/
[root@10 php-fpm.d]# ls
www.conf www.conf.default
[root@10 php-fpm.d]# vi www.conf
#找到user和grouop改为我们用的用户
user = vagrant
group = vagrant
#重启php-fpm
[root@10 php-fpm.d]# service php-fpm restart
[root@10 php-fpm.d]# ps -ef|grep php
root 6431 1 0 04:35 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
#用户已更换
vagrant 6432 6431 0 04:35 ? 00:00:00 php-fpm: pool www
vagrant 6433 6431 0 04:35 ? 00:00:00 php-fpm: pool www
root 6461 5144 0 04:35 pts/0 00:00:00 grep --color=auto php
[root@10 php-fpm.d]# nginx -s reload
#重启nginx
[root@10 php-fpm.d]# ps -ef|grep nginx
root 5201 5187 0 03:53 pts/1 00:00:00 tail -f /var/log/nginx/error.log
root 5206 1 0 03:54 ? 00:00:00 nginx: master process nginx
vagrant 6495 5206 0 04:36 ? 00:00:00 nginx: worker process
root 6507 5144 0 04:36 pts/0 00:00:00 grep --color=auto nginx
此时再重试,成功解决问题

此时,我们完成了第一步,tp项目搭建成功。
网友评论