系统:centos7最小安装
环境:lnmp
工具:VMware
lnmp源码搭建请参考:
lnmp源码搭建:https://blog.csdn.net/qq_26741767/article/details/88176887
mysql安装路径:/usr/local/mysql
nginx安装路径:/usr/local/nginx
php安装路径:/usr/local/php
log日志存放位置:/data/logs/(对应名称/mysql或者/nginx)
nginx配置文件位置:/usr/local/nginx/conf/nginx.conf
nginx发布目录位置:/usr/local/nginx/html
创建虚拟主机配置文件夹vhost:
mkdir /usr/local/nginx/conf/vhost
tpshop源码下载:
http://www.tp-shop.cn/Index/Index/download.html
上传源码到发布目录:
#进入发布目录位置
cd /usr/local/nginx/html
#利用lrzsz工具上传源码,如果还没安装此工具,可以通过yum -y install lrzsz安装,rz上传,sz下载
解压源码文件
#安装unzip工具
yum -y install unzip
#解压
unzip TPshop20190115.zip
为tpshop源码文件赋权,方便后边的安装
chmod -Rf 777 /usr/local/nginx/html/TPshop_20190115
修改nginx配置文件,引入虚拟主机配置
vi /usr/local/nginx/conf/nginx.conf
#在http{}内插入以下内容引入虚拟主机配置
include /usr/local/nginx/conf/vhost/*.conf
#为什么写*不写对应的虚拟主机名的配置呢?
#是为了后期如果要配置多个虚拟主机的话,方便自动扫描加入,不用每次都手动去添加
虚拟主机配置www.qy_shop.com.conf内容可以参考以下:
server
{
listen 81;
#listen [::]:80;
server_name www.qy_shop.com;
index index.html index.htm index.php default.html default.htm default.php;
root /usr/local/nginx/html/TPshop_20190115;
location ~* ^/(application|template|runtime)/.*\.(php|php5)$
{
deny all;
}
location / {
index index.htm index.html index.php;
if (!-e $request_filename){
#地址作为将参数rewrite到index.php上。tp框架接收s参数为controller和action,不少框架都
利用这种方式来实现伪pathinfo模式(pathinfo为php功能,nginx并不支持)
rewrite ^/(.*)$ /index.php?s=$1 last;
break;
}
}
#上面的正则能解决不带xx.php的,这条正则是为了rewrite url中带index.php/admin/admin/login这种>,思路是一样的,将index.php后的字符串当成参数
location ~ /.*\.php/ {
rewrite ^(.*?/?)(.*\.php)(.*)$ /$2?s=$3 last;
break;
}
location ~ \.php/?.*$ {
root /usr/local/nginx/html/TPshop_20190115;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/TPshop_20190115$fastcgi_script_name;
include fastcgi_params;
#set $path_info "";
#定义变量 $real_script_name,用于存放真实地址
#set $real_script_name $fastcgi_script_name;
#如果地址与引号内的正则表达式匹配
#if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
#将文件地址赋值给变量 $real_script_name
#set $real_script_name $1;
#将文件地址后的参数赋值给变量 $path_info
#set $path_info $2;
#}
#配置fastcgi的一些参数
#fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
#fastcgi_param SCRIPT_NAME $real_script_name;
#fastcgi_param PATH_INFO $path_info;
}
location ~.*\.(jpg|png|jpeg)$
{
root /usr/local/nginx/html/TPshop_20190115;
#expires 30d;
}
# js css缓存一小时
location ~.*\.(js|css)$ {
root /usr/local/nginx/html/TPshop_20190115;
#expires 1h;
}
#include other.conf;
#error_page 404 /404.html;
#include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
error_log /data/logs/nginx/www.qy_shop.com.err;
access_log /data/logs/nginx/www.qy_shop.com.log;
}
进入源码文件,修改config.php配置文件,内容参考如下(测试使用):
// +----------------------------------------------------------------------
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tpshop',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '3306',
// 连接dsn,虚拟机ip地址
# 'dsn' => '192.168.2.127',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => '#DB_CHARSET#',
// 数据库表前缀
'prefix' => 'tp_',
// 数据库调试模式
'debug' => false,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型 array 数组 collection Collection对象
'resultset_type' => 'array',
// 是否自动写入时间戳字段
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
应该尽量避免使用root用户直接操作数据库,部署数据库时应该创建一个专属用户,使用专属用户对项目数据库进行管理
创建专属管理用户:
mysql -u root -p(回车后输入密码)
create user 'tpadmin'@'localhost' identified by 'admin123';
update user set password=password("tpadmin") where user="admin123";
flush privileges;
创建数据库
create database tpshop;
为专属管理用户赋权
grant all on tpshop.* to 'tpadmin'@'localhost';
flush privileges;
修改config.php配置文件,修改如下:
// +----------------------------------------------------------------------
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tpshop',
// 用户名
'username' => 'tpadmin',
// 密码
'password' => 'amdin123',
// 端口
'hostport' => '3306',
// 连接dsn,虚拟机ip地址
# 'dsn' => '192.168.2.127',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => '#DB_CHARSET#',
// 数据库表前缀
'prefix' => 'tp_',
// 数据库调试模式
'debug' => false,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型 array 数组 collection Collection对象
'resultset_type' => 'array',
// 是否自动写入时间戳字段
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
重启nginx和php
systemctl restart nginx
systemctl restart php-fpm
打开网页访问tpshop,我的ip是192.168.2.127,所以访问地址是192.168.2.127:81,页面会如下所示:
直接选择接受,进入下一步,环境如果出现下图的黄色感叹号告警,说明源码没有授权,回去重新授权以下即可
授权以后的界面应该是这样的
填写配置信息(如果已经创建专属管理用户,请在用户名和密码对应输入创建的用户和密码)
填写完成后直接创建数据,然后等待安装
安装完成之后会出现以下界面,至此tpshop安装完成:
可能出现以下错误:
我在虚拟机裸机装的时候没有遇到过这个情况,但是在服务器另一台装过LAMP环境的机子安装时,出现这个错误,最后发现是环境的问题,重新装了一下环境,再次安装就没问题了。
前台访问地址:http://ip:81/index.php
后台访问地址:http://ip:81/index.php/Admin/Admin/login