首页 > 系统相关 >linux项目部署之tpshop商城

linux项目部署之tpshop商城

时间:2023-09-23 20:44:36浏览次数:30  
标签:index name tpshop nginx fastcgi linux php 商城 location

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 服务名
    

三、项目部署

​ 项目部署整体分为五个步骤:上传源码包、完成解压后更改权限、配置文件修改以及服务重启、项目数据初始化、验证项目部署成功

  1. 源码包完成上传

    1. 切换到指定的路径

    2. 查看当前目录地址是否正确

    3. 文件上传

    4. 确认文件上传是否成功

  2. 解压后修改权限

    1. 使用unzip命令解压源码包,解压成功后会出现一个www的目录

    2. 修改权限

      使用chmod修改权限,-R是将目录以及目录下所有文件进行全部修改

  3. 配置文件修改以及重启服务

    1. 我们主要修改的是Nginx的配置文件,首先我们要查找配置文件名

    2. 切换到配置文件目录

    1. 删除源配置文件

    1. 上传配置文件

    2. 上传成功

    1. 重启服务的话我们直接重启linux即可

      shutdown -r now
      
  4. 项目数据初始化

    浏览器输入服务器的ip地址加上资源路径/index

  5. 验证项目部署成功

    • 前台

      浏览器输入 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;
    }

标签:index,name,tpshop,nginx,fastcgi,linux,php,商城,location
From: https://www.cnblogs.com/Ayvcr2012/p/17725011.html

相关文章

  • linux 的history命令详解
    简介在Linux操作系统中,history命令是一个非常常用的命令。它可以让用户查看他们在终端中运行过的所有命令,这些命令会按照时间顺序排列.history命令的基本用法history命令的基本用法非常简单。只需要在终端中输入history命令,就可以查看之前所有执行过的命令。这些命令会按......
  • Linux文件管理学习感悟与笔记
    1.文件目录与路径 绝对路径与相对路径的区别绝对路径:路径的写法,由根目录/写起,例如:/usr.share/doc这个目录相对路径:路径的写法,不是由/写起,例如由/usr/share/doc要到/usr/share/man底下时,可以写成:cd../man这就是相对路径的写法2.目录与文件操作处理目录的常用命......
  • linux在线编译
    2. https://bellard.org/jslinux/点击链接就行噢!------个人用其实我们从图中获取到很多的信息,比如cpu,操作系统os,userinterface(用户界面),这里一般我们练习的或用户界面选择的是console(控制台)界面,俗称命令界面。有一个极大的问题,就是因为jslinux是直接模拟了linux系统启动操作......
  • linux的rsync同步功能
    环境centos7.9,rsync3.1.2介绍rsync是一种强大的数据备份和同步工具,能够在本地或远程系统之间复制和同步文件和目录。rsync可用于备份数据、同步目录、传输文件等,并具有高效、灵活和安全的特性。使用rsync的基本使用方法很简单,以下是其基本命令格式:rsync[options]sourced......
  • 《Unix/Linux系统编程》教材学习笔记第十章
    chapter10sh编程sh脚本包含sh语句的文本文件,命令解释程序sh要执行该语句。eg.mysh.sh#!/bin/bash#commentlineechohello使用chmod+xmysh可以执行该文件。#!开头一般称为shebang,若未指定,则将运行默认sh,即Linux中的/bin/bash。sh脚本与C程序比较不难看出两者有......
  • Linux上某个磁盘挂载不上
    想把新创建的 /dev/datavg/data_lv挂载到/mysql目录上 mkfs-txfs-f/dev/datavg/data_lvmount/dev/datavg/data_lv/mysql 但是磁盘挂载不上,也没有任何参数1、可能有人占用这个目录fuser-mv/mysql 查看并没有人占用2、系统记录的信息可能有误查看日志j......
  • Linux网站搭建(nginx+php+mysql)
    目录nginx安装nginx服务器依赖环境源码安装和yum安装的区别源码安装源码安装三步走:php下载安装所有扩展:(php运行所需要的环境)编辑/etc/php.ini开启php-fpm在html下创建index.php,看一下是否可以网页中访问得到它编辑nginx配置文件重启服务mysql安装mysqlmysql的使用......
  • Rocky Linux 8配置时间同步服务 chrony
    我们需要再单独去安装 dnfinstall-ychrony,只需要配置对应的时间同步服务器即可。服务器配置#Usepublicserversfromthepool.ntp.orgproject.#Pleaseconsiderjoiningthepool(http://www.pool.ntp.org/join.html).server10.32.186.70iburst  //添加时间服......
  • Linux 里遇到的sage问题
     终端一键换源:pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple  kali运行python脚本:sage-pythontest.py我一般把sage脚本也写成.py文件了,然后运行,就报错语法错误所以改为.sage拓展名好点,运行:sage脚本所用库是和本地分开的,......
  • 将U盘挂载到Linux系统
    以下是连接服务器并将U盘挂载到Linux系统的简单步骤:连接到您的服务器,打开终端窗口。插入U盘并使用以下命令检查U盘是否被检测到:sudofdisk-l查找包含U盘的设备名称。通常情况下,它将类似于/dev/sdb1。确认服务器上已安装ntfs-3g软件包,如果没有安装,可以使用以下命令......