linux项目部署之tpshop商城
Linux项目部署—Tpshop商城
随着互联网技术的不断发展,越来越多的企业开始将其业务转移到云计算平台上。其中,Linux作为开源界的翘楚,因其稳定性和安全性成为了很多项目的首选操作系统。本文将以Tpshop商城为例,深入解析Linux项目部署的整个流程和关键技术点。
一、Tpshop商城概述
Tpshop商城是一款基于ThinkPHP框架开发的电子商务平台,具有用户注册、登录、浏览商品、下订单、支付等核心功能。ThinkPHP是一个快速、轻量级的PHP开发框架,广泛用于企业级开发和互联网应用开发。
- 技术栈:php+mysql+nginx
- 准备一个tpshop商城源码包,可以去tpshop开源商城官网下载
- nginx配置文件(代码放在文尾)
二、Linux环境准备
本次环境搭建,使用的是CentOS7虚拟机,远程终端工具使用FinalShell远程连接linux虚拟机并进行部署。
-
首先启动虚拟机,获取linux的ip地址
ifconfig
-
使用finalshell远程终端工具去远程连接linux服务器
- 连接成功后的页面
-
检查项目部署需要用到的软件是否安装
#mysql mysql --version #Nginx nginx -v #php php -v
- 如果没有安装,可以先去查找安装的套件或者安装的命令
-
检查软件服务是否正常启动
- mysql
systemctl status mysqld
- php
systemctl status php-fpm
- nginx
systemctl status nginx
-
异常处理情况
服务无法正常启动 服务关闭:systemctl stop 服务名 开启服务:systemctl start 服务名 重启服务:systemctl restart 服务名
三、项目部署
项目部署整体分为五个步骤:上传源码包、完成解压后更改权限、配置文件修改以及服务重启、项目数据初始化、验证项目部署成功
-
源码包完成上传
-
切换到指定的路径
-
查看当前目录地址是否正确
-
文件上传
-
确认文件上传是否成功
-
-
解压后修改权限
-
使用unzip命令解压源码包,解压成功后会出现一个www的目录
-
修改权限
使用chmod修改权限,-R是将目录以及目录下所有文件进行全部修改
-
-
配置文件修改以及重启服务
-
我们主要修改的是Nginx的配置文件,首先我们要查找配置文件名
-
切换到配置文件目录
- 删除源配置文件
-
上传配置文件
-
上传成功
-
重启服务的话我们直接重启linux即可
shutdown -r now
-
-
项目数据初始化
浏览器输入服务器的ip地址加上资源路径/index
-
验证项目部署成功
-
前台
浏览器输入 linuxIP地址/index.php,显示以下界面即表示部署成功
-
后台
浏览器输入 linux ip地址/admin 显示以下界面表示部署成功
-
四、nginx配置文件
server
{
listen 80;
#listen [::]:80;
server_name localhost;
index index.html index.htm index.php;
root /usr/share/nginx/html/www;
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/share/nginx/html/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$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/share/nginx/html/www;
#expires 30d;
}
# js css缓存一小时
location ~.*\.(js|css)$ {
root /usr/share/nginx/html/www;
#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 /usr/share/nginx/html/www/www.err;
access_log /usr/share/nginx/html/www/www.log;
}