大家好,关于thinkphp部署到服务器很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于php项目如何部署在服务器上的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
一、php项目如何部署在服务器上
一、阿里ECS服务器配置
1.因为线上已经有几个站点了.所以要配置ngnix多站点
2.阿里云ecs目录结构,ngxin在/etc/nginx/目录下,配置的地方主要是nginx.config文件。或者在conf.d新建一个配置文件然后在include到nginx.config文件中
3.nginx.config新建站点信息
server{
listen 80;
server_name 你的域名.;
root站点的相对路径;
index index.php index.html index.htm;
#charset koi8-r;
#aess_log/var/log/nginx/host.aess.log main;
# Load configuration files for the default server block.
include/etc/nginx/default.d/*.conf;
location/{
#try_files$uri$uri//index.php;
root/opt//pcweb/ytyy_pc;
index index.php index.html index.htm; if(!-e$request_filename){ rewrite ^(.*)$/index.php?s=$1 last; break;}} url重写(可以没有)
# redirect server error pages to the static page/40x.html
#
error_page 404/404.html; 40错误页面配置
location=/40x.html{
}
# redirect server error pages to the static page/50x.html
#
error_page 500 502 503 504/50x.html; 50错误页面配置
location=/50x.html{
}
location~ \.php${
root站点相对路径;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
location~/\.ht{
deny all;
}
}
配置文件的基本内容如上;
配置完成后测试配置文件是否正确
这样配置就可以使用了
然后重启nginx服务器
这样nginx配置就结束了可以使用了。吧站点文件放到对应的目录下面。我git clone过去的。
二.thinkphp项目文件转移
本来以为上传完就结束了。上传上去碰到的第一个问题就是访问页面报错,页面被电信的114页面劫持了。。。麻蛋看不到报错
万能百度大法
解决方法1.inter高级选项->隐私->站点新加阻止站点
解决方法2:控制面板->网络和inter->本地连接->属*->ipv4使用如下ip
终于搞定可以看到报错页面了。。。。。。麻蛋。再次开启万能百度大法
得到最终结论是文件目录权限引起的。thinkphp的runtime目录没有写入权限。。thinkphp文件上传到阿里的好像都有这个问题。解决问题很简单
进入到项目文件目录
跟文件最高权限
chmod-R 777 [目录]//linux修改文件权限
二、php手把手教你做网站(二十九)thinkphp6部署多个数据库
前边介绍了负载均衡,mysql同步,接下来介绍tp6分布式部署多个数据库,实现读写分离。
tp6的分布式部署读和写仍然是一个系统,这里我们分开操作,给用户展示的就是从数据库,后端添加文章就是主库,然后同步到从库。
1、配置数据库参数
目标:实现随机使用数据库展示信息,只是读操作。
测试:前台可以读取表中内容(存放的不一致),查看是否是随机显示的。
打开.env文件进行编辑
说明:
2、编辑database.php
找到deploy设置为1分布式部署,下边不要改,都是读,写入的也就是后端的我们单独建站连接主库。
配置完成,tp6使用的是mt_rand取随机数判断使用哪个数据库。
3、数据库交互写操作
比如浏览量没必要每次都去更新数据库,可以先使用redis缓存,存够1000的整数倍,再去更新数据库。
4、后*立,也就是写
可以前后端分离,单独做一个网站(没有前端)使用ip访问或者独立的域名连接后台。
5、上传附件(jquery ajax跨域上传)
使用了nginx负载均衡,肯定是多个一样的网站,如果图片存放到一个站,别的就不能访问了,可以单独设置一个附件(压缩包,图片等)服务器,可以使用二级域名连接,这就要求我们上传附件的时候,是上传到附件服务器。
jqueryURL
API控制器apdpic方法
说明:
也可以先传到后台服务器然后使用(php)ftp上传,或者是通过curl上传到附件服务器,感觉那样毕竟麻烦,设置跨域会比较简单。
也测试了使用jsonp跨域,但是不能上传附件。
6、thinkphp6实现读写分离(在一个站点)
我个人是不喜欢这样的,负载均衡应该是均衡地读,也就是前台单独一个站点,后端的写是另一个独立的站点,看个人喜好吧。
独立后台的优点:可以提升安全*,因为我们的后台网址是不公开的,避免用户猜测一些后台的信息。
.env配置按照1所述编辑,默认第一个是主库。
database.php
愿大家在新的一年心想事成,万事如意!!!
三、Thinkphp5项目在nginx服务器部署
1,切换到nginx的配置目录,找到nginx.conf文件
cd /usr/local/nginx/conf
vim nginx.conf
2,如果是单项目部署的话,只需要在nginx.conf文件里面加上以下
server{
listen 80;
#域名,本地测试可以使用127.0.0.1或localhost
server_name
# php项目根目录
root/home/data-/blog;
location/{
#定义首页索引文件的名称
index index.php index.html index.htm;
#影藏入口文件
if(-f$request_filename/index.html){
rewrite(.*)$1/index.html break;
}
if(-f$request_filename/index.php){
rewrite(.*)$1/index.php;
}
if(!-f$request_filename){
rewrite(.*)/index.php;
}
try_files$uri$uri//index.php?$query_string;
}
# PHP脚本请求全部转发到 FastCGI处理.使用FastCGI协议默认配置.
# Fastcgi服务器和程序(PHP)沟通的协议
.location~.*\.php${
#设置监听端口
fastcgi_pass 127.0.0.1:9000;
#设置nginx的默认首页文件
fastcgi_index index.php;
#设置脚本文件请求的路径
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
#引入fastcgi的配置文件
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set$path_info$fastcgi_path_info;
fastcgi_param PATH_INFO$path_info;
try_files$fastcgi_script_name=404;
}
}
3,如果多项目部署,就需要配置vhost
第一步:编辑nginx.conf文件,在最后加上 include vhost/*.conf;
第二步:进入vhost文件夹,创建 域名.conf 文件,如创建一个:quanma.meyat..conf
第三步:编辑quanma.meyat..conf文件,内容如下:
server
{
listen 80;
server_name quanma.meyat.;
index index.html index.htm index.php default.html default.htm default.php;
root/data/root/default/quanma/public/;
#error_page 404/404.html;
location/{
index index.html index.php;
if(-f$request_filename/index.html){
rewrite(.*)$1/index.html break;
}
if(-f$request_filename/index.php){
rewrite(.*)$1/index.php;
}
if(!-f$request_filename){
rewrite(.*)/index.php;
}
try_files$uri$uri//index.php?$query_string;
}
location~ [^/]\.php(/|$)
{
# ment try_files$uri=404; to enable pathinfo
#try_files$uri=404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set$path_info$fastcgi_path_info;
fastcgi_param PATH_INFO$path_info;
try_files$fastcgi_script_name=404;
#include fastcgi.conf;
#include pathinfo.conf;
}
location~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location~.*\.(js|css)?$
{
expires 12h;
}
# Disallow aess to.ht,.svn,.bzr,.git,.hg,.cvs directories
location~/\.(ht|svn|bzr|git|hg|cvs){
deny all;
}
#aess_log/date/nginx/bmp..conf/aess.log main;
}