php7已经出来许久,一直没有体验,是因为原来的项目是5.4和5.6的,不敢轻易升级,后期新项目再打算使用php7,本文所安装的php为5.6

安装环境&工具

阿里云:centos7.3

ssh:putty

sftp:winscp

注意事项:

1、阿里云的ECS服务器默认yum源都是阿里镜像的,所以如果下载速度非常慢,请更换至国内的源

2、默认情况下阿里云的selinux是关闭的,执行命令/usr/sbin/sestatus -v查看

3、默认情况下,yum中的php包版本是5.4.16,并且不自带nginx(最新阿里云centos7.3的yum自带了1.10.2),所以需要去第三方加载

执行2行代码即可

  1. rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  2. rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装php

第三方加载完成之后,执行yum search php则可以看到新添加的版本包,按照需要自行添所需的包即可。

  1. yum install php56w php56w-opcache php56w-fpm php56w-common php56w-devel php56w-gd php56w-mbstring php56w-mcrypt php56w-mysqlnd php56w-pdo php56w-pecl-imagick php56w-xml php56w-pecl-memcache php56w-pecl-xdebug php-redis php56w-pecl-memcached.x86_64

等待安装完成之后输入指令php -v查看是否安装成功

  1. [root@iZwz97oclpnqnt538u8jk8Z ~]# php -v
  2. PHP 5.6.30 (cli) (built: Jan 19 2017 22:31:39)
  3. Copyright (c) 1997-2016 The PHP Group
  4. Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
  5. with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
  6. with Xdebug v2.5.3, Copyright (c) 2002-2017, by Derick Rethans

安装nginx

由于阿里云centos7.3的yum自带了1.10.2,但也不是最新版,所以还是选择了第三方的nginx1w包(1.12.0)

执行命令

  1. yum install nginx1w
  2. [root@iZwz97oclpnqnt538u8jk8Z ~]# nginx -v
  3. nginx version: nginx/1.12.0

运行服务器

  1. [root@iZwz97oclpnqnt538u8jk8Z ~]# service nginx start
  2. Redirecting to /bin/systemctl start nginx.service
  3. [root@iZwz97oclpnqnt538u8jk8Z ~]# service php-fpm start
  4. Redirecting to /bin/systemctl start php-fpm.service

输入服务器地址,如下图

安装thinkphp

获取ThinkPHP的方式很多,官方网站(http://thinkphp.cn)提供了稳定版本或者带扩展完整版本的下载。

这里我们选择使用Composer安装,因为后期开发也会用到Composer管理php包

安装Composer

参考Composer国内镜像

这里采用全局安装的方式,分别执行5条指令

  1. php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
  2. php composer-setup.php
  3. php -r "unlink('composer-setup.php');"
  4. sudo mv composer.phar /usr/local/bin/composer
  5. composer config -g repo.packagist composer https://packagist.phpcomposer.com
  6. [root@iZwz97oclpnqnt538u8jk8Z ~]# composer --version
  7. Do not run Composer as root/super user! See https://getcomposer.org/root for details
  8. Composer version 1.4.2 2017-05-17 08:17:52

提示:不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本哦!

安装thinkphp

命令行下面,切换到你的web根目录下面(一般是/var/www/)并执行下面的命令:

  1. composer create-project topthink/think tp5 --prefer-dist
  2. [root@iZwz97oclpnqnt538u8jk8Z www]# cd tp5
  3. [root@iZwz97oclpnqnt538u8jk8Z tp5]# ls
  4. application composer.json extend public runtime thinkphp
  5. build.php composer.lock LICENSE.txt README.md think vendor

配置nginx.conf

/etc/nginx/nginx.conf

详细配置内容参考nginx官方文档

这里仅在默认配置基础上修改适配thinkphp,线上环境需自行修改。

  1. # For more information on configuration, see:
  2. # * Official English Documentation: http://nginx.org/en/docs/
  3. # * Official Russian Documentation: http://nginx.org/ru/docs/
  4. user nginx;
  5. worker_processes 1;
  6. error_log /var/log/nginx/error.log;
  7. #error_log /var/log/nginx/error.log notice;
  8. #error_log /var/log/nginx/error.log info;
  9. pid /run/nginx.pid;
  10. # Load dynamic module files from the /etc/nginx/conf.modules.d/ directory.
  11. # See http://nginx.org/en/docs/ngx_core_module.html#include
  12. # for more information.
  13. include /etc/nginx/conf.modules.d/*.conf;
  14. events {
  15. worker_connections 1024;
  16. }
  17. http {
  18. include /etc/nginx/mime.types;
  19. default_type application/octet-stream;
  20. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  21. '$status $body_bytes_sent "$http_referer" '
  22. '"$http_user_agent" "$http_x_forwarded_for"';
  23. access_log /var/log/nginx/access.log main;
  24. sendfile on;
  25. #tcp_nopush on;
  26. #keepalive_timeout 0;
  27. keepalive_timeout 65;
  28. #gzip on;
  29. # Load modular configuration files from the /etc/nginx/conf.d directory.
  30. # See http://nginx.org/en/docs/ngx_core_module.html#include
  31. # for more information.
  32. include /etc/nginx/conf.d/*.conf;
  33. index index.html index.htm;
  34. server {
  35. listen 80;
  36. server_name localhost;
  37. root /var/www/tp5/public;
  38. #charset koi8-r;
  39. #access_log /var/log/nginx/host.access.log main;
  40. location / {
  41. index index.htm index.html index.php;
  42. #使其支持Thinkphp的rewrite模式
  43. if (!-e $request_filename) {
  44. rewrite ^(.*)$ /index.php?s=$1 last;
  45. break;
  46. }
  47. }
  48. location ~ .+\.php($|/) {
  49. fastcgi_index index.php;
  50. #使其支持thinkphp的pathinfo模式
  51. fastcgi_split_path_info ^(.+\.php)(.*)$;
  52. include fastcgi_params;
  53. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  54. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  55. fastcgi_param PATH_INFO $fastcgi_path_info;
  56. fastcgi_pass 127.0.0.1:9001;
  57. }
  58. include fastcgi.conf;
  59. # redirect server error pages to the static page /40x.html
  60. #
  61. error_page 404 /404.html;
  62. location = /40x.html {
  63. }
  64. # redirect server error pages to the static page /50x.html
  65. #
  66. error_page 500 502 503 504 /50x.html;
  67. location = /50x.html {
  68. }
  69. }
  70. }

配置php-fpm

见'/etc/php-fpm.d/www.conf',为了保证高并发,线上根据具体情况具体配置,默认配置文件已经附带说明。

需要注意的是,默认php-fpm的启动用户和用户组都是apache,可以更换成nginx

运行thinkphp

重启nginx

  1. [root@iZwz97oclpnqnt538u8jk8Z tp5]# service nginx reload
  2. Redirecting to /bin/systemctl reload nginx.service

此时我们终于可以访问thinkphp了,由于正确配置了nginx路由,三种模式下均可访问

  1. http://localhost/index/index
  2. http://localhost/index.php/index/index
  3. http://localhost/index.php?s=/index/index

提示:如果runtime文件夹无法写日志,类似这样的情况,不出意外就是文件夹权限问题,执行命令chown runtime apache:apache赋予权限即可(用户名和用户组要和php-fpm配置中的一致)

最后运行phpinfo()检测配置是否符合预期,根据需要修改。

注意事项

1、启动服务的时候,如果无法启动,2种可能,1个是配置文件有问题,可以采用nginx -t或者php-fpm -t检测,2个是端口冲突

2、一些类似denied的提示和奇怪的问题,优先考虑权限问题,赋予文件夹相应权限。

3、php-mysql默认情况下为了保证安全,所有字段都转化成了string类型,未来已经被抛弃了,而新的php-mysqlnd,在PHP5.4之后的版本mysqlnd被作为默认配置选项,则会自动转换成相关的类型。

4、如未开启opcache,手动在php.ini中去掉opcache.so的注释。

5、$HTTP_RAW_POST_DATA is *NOT* populated.不推荐使用,php.ini中关闭 always_populate_raw_post_data = -1

论制作镜像的重要性

thinkphp5+nginx的linux环境搭建的更多相关文章

  1. Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)

    Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建) 具体案例:局域网内有两台主机,一台Linux.一台Windows,现在需要配置一台Cacti监控服务器对这两台 ...

  2. HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客

    HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机   2014年06月02日 17:20   评论»       文章目录 Debian上安装 Ce ...

  3. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

  4. 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统

    上一步,我们安装了VMware9虚拟机,现在我们就是用它来安装Ubuntu12.04系统,至于Ubuntu是什么,我就不废话了,大家google一下,比我讲的清楚,好了,开始干活! Ubuntu官网下 ...

  5. Windows及Linux环境搭建Redis集群

    一.Windows环境搭建Redis集群 参考资料:Windows 环境搭建Redis集群 二.Linux环境搭建Redis集群 参考资料:Redis Cluster的搭建与部署,实现redis的分布 ...

  6. Linux(一)-- Linux环境搭建

    Linux环境搭建 一.虚拟机安装 1.下载地址 https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmwar ...

  7. Linux(一)—— Linux环境搭建

    Linux环境搭建 一.虚拟机安装 1.下载地址 https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmwar ...

  8. Linux环境搭建及基础操作

    一.Linux环境搭建 1.安装虚拟机软件(VMWare,Parallel) 虚拟机的作用:将本来不是适合当前操作系统的分区虚拟化成适合当前操作系统的分区格式 2.新建虚拟机: 类似买了一台新的电脑, ...

  9. 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍

    Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...

随机推荐

  1. 老司机带你玩Spring.Net -入门篇

    网上有 Spring.Net 的相关的很多介绍的文章还有实践例子,推荐个还不错的博客 Spring.Net 学习笔记 .以前对 Spring.Net 算是有过一面之缘,但却迟迟未真正相识.在网上有太多 ...

  2. BZOJ 2460 [BeiJing2011]元素(线性基模板题)

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强 ...

  3. Mysql的备份,权限与日志

    1>Mysql的数据备份    mysqldump 工具 --single-transaction 该选项导出数据之前提交一个BEGIN SQL语句,不会阻塞任何应该程序而且能保证导出数据时的一 ...

  4. MVC4 Model ControllerDescriptor

    1. ControllerDescriptor 的描述 Controller  的Action 方法有以下一些特性: 1.1 ActionNameAttribute特性  他继承自 System.We ...

  5. Android-广播发送与接收(Java代码中订阅)

    Android四大组件之一广播,使用的也比较多,广播可大致分为两种,一种是Android系统区域的广播,是由系统指令发出,例如:点亮屏幕广播,开机过程中的一些广播 省略…, 然而还有一种广播就是我们自 ...

  6. Transcation And Lock--SQL SERVER 事务隔离级别

    SQL SERVER 事务隔离级别:1.未提交读(READ UNCOMMITED)    允许脏读,读取数据时不加共享锁,与使用WITH(NOLOCK)结果相同2.已提交读    不允许脏读,读取数据 ...

  7. linux网络NAT配置方式

    NAT访问的权限如下: 外网不可以访问虚拟机,主机和虚拟机可以互访,网络和主机也可以互访: 1.打开虚拟机——编辑——虚拟网络编辑器——. 2. 3.进入虚拟机的linux系统点击网络 4. 5.点击 ...

  8. MongoDB复制集与Raft协议异同点分析

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.日志复制流程: a.raft leader节点在接收client请求后,先将请求写到日志中,再将日志通过 ...

  9. 【Selenium专题】FAQ_浏览器_ChromeDriver版本导致报错

    报错信息 Started ChromeDriver port=31984 version=23.0.1240.0 log=C:\workspace\test\chromedriver.log [063 ...

  10. Delphi XE8帮助中的REST相关内容。

    Delphi XE8的离线帮助是我见过的最好的Delphi帮助文档了,内容相当详细和丰富,几乎涵盖了Delphi的方方面面!! Delphi XE8的帮助文档在哪里?“XE8安装目录\Help\Doc ...