热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搭建ThinkPHP开发环境(LNMP/WNOP)

环境搭建LNMP(Linux+Nginx+MySQL+PHP)WNOP(Windows10+Nginx+Oracle+PHP)非主流搭法,也遇到了一些问题,权作学习笔记。一、安装1
环境搭建

LNMP(Linux+Nginx+MySQL+PHP)
WNOP(Windows10+Nginx+Oracle+PHP)
非主流搭法,也遇到了一些问题,权作学习笔记。

一、安装

1.Nginx服务器

Windows版本的Nginx可从 Nginx.org 下载。
下载完成后,将.zip文件解压到安装路径(如D:\nginx),在命令提示符界面切换到安装目录。

// 启动(每次执行均开启新的nginx.exe进程)
D:\nginx>start nginx.exe
// 停止(不会结束nginx.exe进程)
D:\nginx>nginx.exe -s stop
// 退出(结束nginx.exe进程)
D:\nginx>nginx.exe -s quit
// 重新加载配置文件
D:\nginx>nginx.exe -s reload

Ubuntu版本的Nginx可以使用apt-get命令安装。

// 安装
sudo apt-get install nginx
// 启动
sudo /etc/init.d/nginx start
// 停止
sudo /etc/init.d/nginx/stop
// 重新加载配置文件
sudo /etc/init.d/nginx reload

Win10环境下,80端口可能会被System占用,可通过如下步骤进行修改。

  • 打开注册表(regedit)并找到键值:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP
  • 编辑名称Start,类型REG_DWORD的数据项,将数据改为0
  • 重启系统

2.数据库

Windows版本的Oracle可以从 Oracle.com 下载,相关安装步骤可从网络搜索,此处不再赘述。

# 启动Oracle服务(安装路径为D:\Oracle)
D:>start D:\Oracle\product\11.2.0\dbhome_1\BIN\oracle.exe
# 默认的sqlplus路径
D:\Oracle\product\11.2.0\dbhome_1\BIN\sqlplus.exe

需要注意的是,Windows环境下连接Oracle数据库需要当前用户属于ora_dba组,若未配置会出现ORA-01031: insufficient privileges报错。添加组的方法如下。

  • 计算机管理(compmgmt.msc) -> 本地用户和组 -> 用户
  • 双击要添加的用户名,在“隶属于”选项卡点击添加,输入组名ora_dba并点击“检查名称”,点击应用

Linux下的Mysql可以使用apt-get命令安装。

sudo apt-get install mysql-server

3.安装PHP7

Windows版本的PHP7可以从 PHP 下载。
解压后将php.ini-production复制并重命名为php.ini,即为PHP7的配置文件。
Linux版本的PHP7可以使用apt-get命令安装。

sudo apt-get install php7.0-cli php7.0-cgi php7.0-mysql
sudo apt-get install php7.0-fpm

二、配置文件

配置文件默认路径
nginx.conf Win10:
安装路径\conf\nginx.conf
Linux:
/etc/nginx/nginx.conf
/etc/nginx/conf.d/*.conf
php.ini Win10:
安装路径\conf\php.ini
Linux:
/etc/php/7.0/cgi/php.ini
php-fpm.conf Linux:
/etc/php/7.0/fpm/php-fpm.conf
/etc/php/7.0/fpm/pool.d/www.conf

1. Nginx配置文件:nginx.conf

nginx.conf文件作为Nginx服务器的配置文件,主要进行的配置包括Web服务器的监听端口、主机名称、部署路径。
由于Nginx是轻量级服务器,本身不能处理PHP的请求,因此需要配置守护进程FastCGI或FPM,把以.php结尾的请求转发并进行处理。

需要配置的内容包括:

  • location /
    修改网站根目录、默认页面、支持ThinkPHP的pathinfo模式
  • location ~ .php$
    使Nginx将.php结尾的请求转发至PHP的守护线程进行处理
  • location /Proxy
    配置反向代理,Proxy是自定义的二级域名

最终的配置文件如下(其中php处理的部分Windows和Linux配置均出现,请参考注释)。

user www-data; #Linux下需要将用户改为www-data
#user nobody; #Windows无需配置
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream; sendfile on;
keepalive_timeout 65;
#配置了一台server
#Linux安装后,server的配置默认位于
#/etc/nginx/conf.d/default.conf文件
server {
listen 80; #监听80端口
server_name localhost;

#FastCGI相关设置
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#网站根目录
location / {
root app; #Web访问的默认目录,可为相对/绝对路径
index index.php; #Web访问的默认路径
# 支持ThinkPHP的pathinfo模式
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

#配置到达虚拟机的反向代理
location /Proxy {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://192.168.1.102:80;
} #将所有.php结尾的请求转发至本机9000端口由FastCGI进行处理(本段为Win10下的配置)
location ~ \.php$ {
root app;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #使用$document_root的相对路径,即本段代码中配置的root
include fastcgi_params;
}
#将所有.php结尾的请求转发至本机fpm的Socket端口进行处理(本段为Linux下的配置)
location ~ \.php$ {
root /var/www/app;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #使用$document_root的相对路径,即本段代码中配置的root
include fastcgi_params;
}
#50x的错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

2.PHP配置文件php.ini

php.ini需要将文件路径、访问数据库等相关注释打开。
可以从Oracle官方网站下载 php_oci8_11g.dll 文件。

#支持短标签
short_open_tag = On
#隐藏PHP
expose_php = On
#Windows中需要写绝对路径
extension_dir = "ext"
#防止通过URL直接调用PHP
cgi.force_redirect = 0
#支持pathinfo模式
cgi.fix_pathinfo = 1
#安全令牌相关功能
fastcgi.impersOnate= 1
#指定PHP在发送HTTP响应代码时使用RFC2616兼容的报头
cgi.rfc2616_headers = 1
#数据库相关dll,支持mysql、oracle和pdo模式
extension = php_gd2.dll
extension = php_mbstring.dll
extension = php_mysqli.dll
extension = php_oci8_11g.dll
extension = php_pdo_mysql.dll
extension = php_pdo_oci.dll

3.FPM配置文件php-fpm.conf

Windows版本的PHP7.0已经集成php-cgi.exe,无需单独下载,也无需配置。

Tips
php-cgi.exe运行后默认窗口不会关闭,因此需要使用RunHiddenConsole隐藏窗口,该程序可以从网上自行下载。

Linux需要配置www.conf文件(php-fpm.conf引用该文件)。

#默认采用Socket方式监听
listen = /run/php/php7.0-fpm.sock

Tips
/run/php/php7.0-fpm.sock
是用户和组均为www-data的文件

三、服务启动脚本

为了使Web服务能够正常使用,每次需要启动Nginx、数据库、FastCGI或FPM。
Windows下的server.bat脚本。

  • 选择1 开启Nginx及FastCGI
  • 选择2 开启Oracle
  • 选择3 强制kill掉Nginx和FastCGI进程
  • 选择4 退出

@echo "1、Nginx"
@echo "2、Oracle"
@echo "3、关闭"
@echo "4、退出"
@echo off
:choose
set /p st="模式选择:"
if /i "%st%"=="1" goto open_nginx
if /i "%st%"=="2" goto open_oracle
if /i "%st%"=="3" goto close_all
if /i "%st%"=="4" goto exit
:open_nginx
@echo "启动Nginx"
%Win10系统中必须切换到nginx所在目录%
cd /d D:\nginx
start D:\nginx\nginx.exe
@echo "启动FastCGI"
%监听本机9000端口%
D:\php7\RunHiddenConsole.exe D:\php7\php-cgi.exe -b 127.0.0.1:9000 -c D:\php7\php.ini
goto choose
:open_oracle
start D:\Oracle\product\11.2.0\dbhome_1\BIN\oracle.exe
goto choose
:close_all
%直接杀死进程%
taskkill /f /im nginx.exe
taskkill /f /im php-cgi.exe
goto choose
:exit
exit

Linux下的server.sh脚本。
强制关闭并重启Nginx、FPM和MySQL服务器。

#!/bin/bash
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx reload
sudo /etc/init.d/php7.0-fpm stop
sudo /etc/init.d/php7.0-fpm start
sudo /etc/init.d/php7.0-fpm reload
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
#Linux下使用fcgi的方式
#sudo spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi7.0

四、网络配置

《搭建ThinkPHP开发环境(LNMP/WNOP)》 搭建的网络架构

本次的Linux系统安装在虚拟机中,外部请求经路由器
端口映射到PC,在PC上架设Nginx服务器并配置
反向代理

1. 配置外网访问局域网内nginx的服务器

Tips
设置固定IP
配置端口映射,将外网的请求转发至PC的Web服务器

  • 在TPLINK中设置DHCP服务器-静态地址保留
  • 添加本机MAC地址和IP地址
  • 在路由器(TPLINK)中设置转发规则-虚拟服务器
  • 添加规则:服务端口80(若运营商屏蔽80端口则换为其他),内网端口80,IP地址为本机局域网IP,协议ALL

配置完成后,外网可通过http://本机外网IP:服务端口访问PC的nginx服务器。

2. 配置PC和虚拟机在同一网段

  • 设置虚拟机网络为桥接网卡
  • 设置虚拟机固定IP
  • 重启虚拟机即可生效

3. 配置反向代理

参考前文Nginx配置文件:nginx.conf中location /Proxy部分。

五、ThinkPHP

下载地址
开发手册

六、存疑

  • 通过EasyBCD安装Win10/Ubuntu16.04双系统时,报错unable to find a medium containing a live file system,安装失败。
  • Linux下的fpm配置目录也存在php.ini文件,不确定fpm读取的是否为该文件。

推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
anilshen_333
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有