jjzjj

【Linux / 数据库】项目实战:tpshop项目在Linux系统环境搭建

聪颖的APP 2023-11-29 原文

1 项目准备

  • 环境部署准备
  • 项目环境部署

1 TPShop环境部署

选择架构:LNMP

1.1 环境安装的准备


区别:

  • VMware虚拟机:虚拟模拟的电脑
  • Linux:相当于电脑上的系统
  • cenOS:Linux的一个发行版本

1.2 远程连接步骤

  1. 远程机器查看IP地址,使用命令ifconfig

  1. 本地机器测试是否能ping通远程机器IP地址,我用的是Windows,命令是ping 远程IP地址


4. 本地远程连接,使用Finalshell,选择ssh连接。


![在这里插入图片描述](https://img-blog.csdnimg.cn/0d3d054af4fe47d58f1bf6cac7d704a1.png)

1.3 切换root管理员用户

sudo su


注意:提醒自己是否为root的一种方法是检查命令提示符。如果您以普通用户身份登录,许多系统以美元符号(“$”)结束其命令提示符,如果您以root身份登录,则以井号(“#”)结尾。

2 nginx部署

2.1 nginx 安装

使用yum安装下载。

  1. 安装依赖。
//一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  1. 添加nginx的源地址。
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  1. 安装nginx服务,安装完成如下图。
yum -y install nginx

  1. 查看nginx启动状态。
systemctl status nginx
  1. 启动nginx服务。
systemctl start nginx
  1. 添加nginx服务到开机启动。
systemctl enable nginx

2.2 关闭防火墙(搭建环境准备)

  1. 停止firewall服务。
systemctl stop firewalld.service
  1. 禁止firewall开机启动。
systemctl disable firewalld.service 

2.3 nginx验证

  1. 在浏览器地址栏中输入对应的Linux本机IP地址, 显示以下图片信息即完成。

3 php部署

3.1 php安装

  1. 添加PHP的源地址。
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


  1. 安装PHP的基本组件。(这里很糊涂安装了3次,最后也不知道怎么装成功的,附上安装成功的部分截图)
yum -y install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70wldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64 php70w-gd.x86_64 php70w-mysqli

  1. 安装PHP-fpm(进程管理器,提供PHP进程管理方式,可以有效控制内存和进程、平滑重载PHP配置)

3.2 php启动

  1. 查看版本以检测是否安装成功。
php -v


2. 安装完之后启动。

systemctl start php-fpm
  1. 设置开机启动。
systemctl enable php-fpm
  1. 加载php-fpm的配置文件。
systemctl daemon-reload

4 验证php与nginx的联动性

  1. 修改nginx的配置文件。
vi /etc/nginx/conf.d/default.conf
  1. 在配置文件的server节点中增加以下内容。
    先输入i,再添加下列代码,添加完成后输入:wq保存退出。(注意检查是否有错漏)
location ~ \.php$ { 
	root /usr/share/nginx/html; 
	fastcgi_pass 127.0.0.1:9000; 
	fastcgi_index index.php; 
	fastcgi_param SCRIPT_FILENAME
	$document_root$fastcgi_script_name; 
	include fastcgi_params; 
	}
  1. 重启nginx服务器。
nginx -s reload
  1. 在项目默认路径下创建测试引导文件index.php。
echo "\<?php phpinfo(); ?>" >/usr/share/nginx/html/index.php
  1. 在当前电脑的浏览器当中输入:虚拟机的IP地址/index.php

5 TPshop部署

5.1 上传tpshop项目源码

  1. 上传Tpshop的源码包【TPshop_20190115.zip】到特定目录 /usr/share/nginx/html。
  • 先拷贝到用户目录。

  • 再移动到特定目录 /usr/share/nginx/html。
sudo su                //使用root用户
请按密码:
whoami                 //可以查看到现在切换成根目录
pwd                    //查看当前目录
cd /home/admin         //切换到admin目录
ls                     //查看是否有TPshop_20171106_v2.0.9.zip

mv TPshop_20171106_v2.0.9.zip /usr/share/nginx/html     //将TPshop_20171106_v2.0.9.zip移动到html文件夹
ls                     //查看是否有TPshop_20171106_v2.0.9.zip
  1. 目录切换到 /usr/share/nginx/html。
cd /usr/share/nginx/html
  1. 解压缩文件到当前路径。
unzip TPshop_20190115.zip
  1. 修改html目录下所有文件权限。
chmod -R 777 *

5.2 修改nginx的配置文件

  1. 将/etc/nginx/conf的default.conf文件修改nginx原有配置文件的内容。
vi /etc/nginx/conf/default.conf
  • 按i进行插入编辑,需要将default.conf 里的root 改成项目所在的路径,再按Esc,:wq保存退出。
  1. 重启nginx服务。
systemctl restart nginx

5.3 修改linux及mysql的安全配置

  1. 临时关闭SELinux的权限。
setenforce 0
  1. 永久关闭SELinux的权限,修改/etc/selinux/config为如下:
SELINUX=disabled
  1. 在/etc/my.cnf的mysqld下增加以下配置项:
  • 首先 vi /etc/my.cnf,再添加下列语句。
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  1. 修改mysql的配置文件之后,重启mysql。
systemctl restart mysqld

5.4 初始化tpshop项目

  1. 在浏览器地址栏中输入 ip/index.php, 会进入到tpshop的安装页面。(输入 ip/index.php,会自动跳转到 ip/install/index.php)

  2. 点击 “接受” 按钮后,会进入到环境检测试页面。

  3. 正常情况下,环境检测应该是没有问题的,直接点击“下一步” 。

    在填写数据库密码中,我出现的错误信息:请在mysql配置文件修sql-mode或sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION。
    则重复

  • 在/etc/my.cnf的mysqld下增加以下配置项:(注意:要添加在[mysqld]中)
  • 首先 vi /etc/my.cnf,再添加下列语句。
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  • 修改mysql的配置文件之后,重启mysql。
systemctl restart mysqld
  1. 在创建数据页面中,输入对应的信息(如下图),点击创建数据,即可安装,安装成功如下图。


TPshop创建表如下:

6 环境验证

安装完成之后,在完成的页面点击 “进入前台”,能够打开tpshop首页,且能打开二级页面,就说明环境搭建成功。

打开二级页面:

6.1 打不开二级页面解决方法

费了九牛二虎之力,之前也没学过php,没了解过nginx,重装了10几次,翻阅各种资料,终于解决了打不开二级页面的问题。

将本机安装的nginx的default.conf配置。
注:要将root改成项目所在的文件夹。

server {
    listen       80;
    server_name  0.0.0.0;

    #access_log  /var/log/nginx/host.access.log  main;

#    location / {
#        root   /usr/share/nginx/html/TPshop_20190115;
#        index  index.html index.htm;
#    }

      location / {
      		root   /usr/share/nginx/html/TPshop_20190115;
            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;
	}

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /usr/share/nginx/html/TPshop_20190115;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME
	$document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

有关【Linux / 数据库】项目实战:tpshop项目在Linux系统环境搭建的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  7. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  10. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

随机推荐