Centos9傻瓜式linux部署CRMEB 开源商城系统(PHP)

服务器环境推荐要求

* Nignx(必须)
* PHP 7.1 ~ 7.4(必须此版本内,版本过大会警告不兼容)
* MySQL 5.7 ~ 8.0(必须)
* Redis(非必须)

后台页面展示:

客户端展示

没有redis默认会使用fiel缓存(建议使用redis更快)

基础设置:

关闭防火墙、关闭SELinux:

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装dnf
先安装 epel-release 依赖:

yum install epel-release
yum install dnf

使用git拉去CRMEB项目

先安装git

sudo dnf install git -y 
mkdir /data && cd /data 
git clone https://gitee.com/ZhongBangKeJi/CRMEB.git
cd /data/CRMEB  

修改数据库配置文件,根据实际情况修改,(后面dnf脚本安装mysql,用户为root密码为Aa123456.)路径为:

#只能使用该路径修改
cd /data/CRMEB
vi crmeb/.env

复制粘贴:

APP_DEBUG = false[APP]
DEFAULT_TIMEZONE = Asia/Shanghai[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1 #数据库连接地址
HOSTPORT = 3306 #数据库端口
USERNAME = root#数据库登录账号
PASSWORD = Aa123456. #数据库登录密码
DATABASE = test #数据库名称
PREFIX = eb_ #数据库表前缀
CHARSET = utf8mb4
DEBUG = true[LANG]
default_lang = zh-cn[CACHE]
DRIVER = file #缓存类型,支持file和redis
CACHE_PREFIX = cache_123456789 #缓存前缀
CACHE_TAG_PREFIX = cache_tag_123456789 #缓存标签前缀[REDIS]
REDIS_HOSTNAME = 127.0.0.1 #redis服务器地址,本地请填写127.0.0.1
PORT = 6379 #redis端口,默认6379
REDIS_PASSWORD = password #redis数据库密码,默认为空
SELECT = 0 #redis数据库,默认0-15中的一个[QUEUE]
QUEUE_NAME = 123456789 #队列前缀

修改文件权限

修改目录权限(linux系统) 777

cd crmeb/
chmod -R 777  【需要加权的文件】
#这些文件全部777权限一个个授权
#没有backup需要手动创建并加权
mkdir backup
chmod 777 -R backup/
chmod 777 -R public/
chmod 777 -R runtime/
chmod 777 -R .env
chmod 777 -R .version
chmod 777 -R .constant

配置项目环境

 1.1 dnf安装php环境:

sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
dnf module list php
sudo dnf module enable php:remi-7.4
sudo dnf install php php-cli php-common
php -v
systemctl start php-fpm
systemctl enable php-fpm
dnf install composer -y

1.2 配置php环境,直接覆盖掉原来的内容:


vi /etc/php.iniupload_max_filesize = 32M 
post_max_size = 48M 
memory_limit = 256M 
max_execution_time = 600 
max_input_vars = 3000 
max_input_time = 1000

 1.3 安装项目必要的php组件:

sudo dnf install php-mysqli -y
sudo  dnf install php-bcmath -y
sudo dnf install php-gd -y

1.4  启动php-fpm

sudo systemctl restart php-fpm
#或
sudo systemctl start php-fpm
#查看状态
sudo systemctl status php-fpm

2.1安装nginx

sudo dnf install nginx -y

 2.2在nginx中配置项目

   vi /etc/nginx/nginx.conf

覆盖原来的内容为:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {worker_connections 1024;
}
http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen       80;listen       [::]:80;server_name  _;#项目根目录root /data/CRMEB/crmeb/public;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}location ~ \.php$ {#    root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}location / {index index.html index.php;   #增加index.php首页if (!-e $request_filename) {   #伪静态处理rewrite  ^(.*)$  /index.php?s=$1  last;break;}}}
}

3.1 使用脚本安装mysql

创建mysql.sh,复制文本到linux系统

使用:source执行脚本即可

用户:root,密码:Aa123456.有个点别忘了

vi mysql.sh

脚本中复制粘贴

#!/bin/bash
# 0. 注意: 建议你们在操作前,先存个快照,因为安装mysql的时候,会遇到各种各样问题,如果我之前已经安装过了,
# 建议你恢复快照到只配了 ssh免密登录,安装vim,安装 epel仓库等,我前天提供的资料里面有三个服务器,你直接挂载
# 1. 安装mysql仓库
dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
# 2. 查看是否启动了仓库
dnf repolist enabled | grep mysql &> /dev/null
# 3. 安装mysql
[ $? -eq 0 ] && dnf install -y mysql-community-server --nogpgcheck
# 4. 判断是否安装成功了吧
if [ $? -eq 0 ]; then# 代表安装成功了echo "安装成功!!"# 启动mysqlsystemctl start mysqld# 设置开机自启systemctl enable mysqld
else#  代表安装失败了echo "安装失败!!"exit
fi
# 5. 获取mysql的临时密码
grep password /var/log/mysqld.log | awk '{print $NF}' >> /root/mysql_paswd.txt
# 5.1 将 /root/mysql_paswd.txt 文件中的内容 取出,并赋值给一个变量
TEMP_PASSWORD=`cat /root/mysql_paswd.txt`
# 6. 登录mysql,修改密码,删除临时用户,
# 登录 MySQL 并执行配置
MYSQL_ROOT_PASSWORD="Aa123456."
# --connect-timeout=10 : 连接10s,如果没有连接成功,直接停止
# <<EOF EOF  这是定界符
mysql --connect-timeout=10 -uroot -p"$TEMP_PASSWORD" --connect-expired-password <<EOF
-- 设置新的 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';
-- 创建一个 root@% 账号
-- %:代表所有的ip都能访问我的数据库
CREATE USER 'root'@'%' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';
-- 这是赋值权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 删除匿名用户
DELETE FROM mysql.user WHERE User='';
-- 删除 test 数据库
DROP DATABASE IF EXISTS test;
-- 刷新权限
FLUSH PRIVILEGES;
EOF# 以上就是 mysql安装成功,并设置了 root 账号密码
# 导入数据
echo "开放3306端口号..."
firewall-cmd --zone=public --add-port=3306/tcp --permanent &> /dev/null
echo "开放3306端口号完成..."
#重新加载防火
firewall-cmd --reload

运行mysql.sh

source mysql.sh

配置mysql启动需要的my.conf 文件

覆盖掉dnf安装的默认my.conf,如果是二进制安装、源码安装路径不在这

# 修改my.cnf
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidlog-bin=/var/lib/mysql/binlog
server-id=10
character_set_server=utf8mb4
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
sql_mode=NO_ENGINE_SUBSTITUTION

重新启动mysqld

systemctl restart mysqld

4.1 安装redis(可选)

dnf install redis -y

安装php控制redis的扩展组件

dnf install -y php-pecl-redis5
#查看php组件
php -m

4.2 配置redis

vi /etc/redis/redis.conf

允许如何人访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93408.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 云电竞游戏盒子:从“盒子”到“云-端-芯”一体化竞技平台的架构实践

摘要 AI 云电竞游戏盒子&#xff08;以下简称“电竞盒”&#xff09;不再是一台简单的客厅游戏主机&#xff0c;而是一套以 AI 调度为核心、以云原生架构为骨架、以边缘渲染为肌肉、以端侧感知为神经的“云-端-芯”协同竞技系统。本文基于 2024 年 Q2 落地的量产方案&#xff0…

基于kuboard实现kubernetes的集群管理

1、前提条件安装docker-compose2、步骤在本地目录创建kuboard-v4\在该目录下创建文件docker-compose.yaml&#xff0c;内容如下&#xff1a;configs:create_db_sql:content: |CREATE DATABASE kuboard DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;cre…

Linux操作系统软件编程——多线程

什么是线程线程的定义是轻量级的进程&#xff0c;可以实现多任务的并发。线程是操作系统任务调度的最小单位线程的创建由某个进程创建&#xff0c;且进程创建线程时&#xff0c;会为其分配独立的栈区空间&#xff08;默认8M&#xff09;。线程和所在的进程&#xff0c;以及进程…

linux下找到指定目录下最新日期log文件

以下是一个完整的C函数&#xff0c;用于在指定目录下自动查找最近更新的日志文件&#xff08;根据文件名中的时间戳选择最新的文件&#xff09;&#xff1a;#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include…

《数学模型》经典案例——钢管的订购与运输

一、问题描述 要铺设一条 A1→A2→⋯→A15A_1 \rightarrow A_2 \rightarrow \cdots \rightarrow A_{15}A1​→A2​→⋯→A15​ 的输送天然气的主管道&#xff0c;如图 6.22 所示。经筛选后可以生产这种主管道钢管的钢厂有 S1,S2,⋯,S7S_1, S_2, \cdots, S_7S1​,S2​,⋯,S7​ 。…

Java Web部署

今天小编来分享下如何将本地写的Java Web程序部署到Linux上。 小编介绍两种方式&#xff1a; 部署基于Linux Systemd服务、基于Docker容器化部署 首先部署基于Linux Systemd服务 那么部署之前&#xff0c;要对下载所需的环境 软件下载 Linux&#xff08;以ubuntu&#xf…

告别AI“炼丹术”:“策略悬崖”理论如何为大模型对齐指明科学路径

摘要&#xff1a;当前&#xff0c;我们训练大模型的方式&#xff0c;尤其是RLHF&#xff0c;充满了不确定性&#xff0c;时常产生“谄媚”、“欺骗”等怪异行为&#xff0c;被戏称为“炼丹”。一篇来自上海AI Lab的重磅论文提出的“策略悬崖”理论&#xff0c;首次为这个混沌的…

深入理解C#特性:从应用到自定义

——解锁元数据标记的高级玩法&#x1f4a1; 核心认知&#xff1a;特性本质揭秘 public sealed class ReviewCommentAttribute : System.Attribute { ... }特性即特殊类&#xff1a;所有自定义特性必须继承 System.Attribute&#xff08;基础规则&#xff09;命名规范&#xff…

机器学习-集成学习(EnsembleLearning)

0 结果展示 0.1 鸢尾花分类 import pandas as pd import numpy as npfrom sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, recall_score, f1_score, classification_repo…

Golang database/sql 包深度解析(一)

database/sql 是 Go 语言标准库中用于与 SQL&#xff08;或类 SQL&#xff09;数据库交互的核心包&#xff0c;提供了一套轻量级、通用的接口&#xff0c;使得开发者可以用统一的方式操作各种不同的数据库&#xff0c;而无需关心底层数据库驱动的具体实现。 核心设计理念 datab…

文章自然润色 API 数据接口

文章自然润色 API 数据接口 ai / 文本处理 基于 AI 的文章润色 专有模型 / 智能纠错。 1. 产品功能 基于自有专业模型进行 AI 智能润色对原始内容进行智能纠错高效的文本润色性能全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 / v1.3&#xff09;&#xff1b;全面兼容…

【状压DP】3276. 选择矩阵中单元格的最大得分|2403

本文涉及知识点 C动态规划 3276. 选择矩阵中单元格的最大得分 给你一个由正整数构成的二维矩阵 grid。 你需要从矩阵中选择 一个或多个 单元格&#xff0c;选中的单元格应满足以下条件&#xff1a; 所选单元格中的任意两个单元格都不会处于矩阵的 同一行。 所选单元格的值 互…

IDEA 清除 ctrl+shift+r 全局搜索记录

定位文件&#xff1a;在Windows系统中&#xff0c;文件通常位于C:Users/用户名/AppData/Roaming/JetBrains/IntelliJIdea(idea版本)/workspace目录下&#xff0c;文件名为一小串随机字符&#xff1b;在Mac系统中&#xff0c;文件位于/Users/用户名/Library/Application /Suppor…

解锁AI大模型:Prompt工程全面解析

解锁AI大模型&#xff1a;Prompt工程全面解析 本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型开发 学习视频/籽料/面试题 都在这>>Github<< 从新手到高手&#xff0c;Prompt 工程究竟是什么&#xff1f; 在当今数字化时代&#xff0c;AI …

HTTP0.9/1.0/1.1/2.0

在HTTP0.9中&#xff0c;只有GET方法&#xff0c;没有请求头headers&#xff0c;没有状态码&#xff0c;只能用于传输HTML文件。到了HTTP1.0(1996)&#xff0c;HTTP1.0传输请求头&#xff0c;有状态码&#xff0c;并且新增了POST和HEAD方法。HTTP1.0中&#xff0c;使用短连接&a…

gitee 流水线+docker-compose部署 nodejs服务+mysql+redis

文章中的方法是自己琢磨出来的&#xff0c;或许有更优解&#xff0c;共同学习&#xff0c;共同进步&#xff01; docker-compose.yml 文件配置&#xff1a; 说明&#xff1a;【配置中有个别字段冗余&#xff0c;但不影响使用】该文件推荐放在nodejs项目的根目录中&#xff0c…

【算法】模拟专题

什么是模拟&#xff1f; 是一种通过模仿现实世界或问题场景的运行过程来求解问题的算法思想。它不依赖复杂的数学推导或逻辑优化&#xff0c;而是按照问题的实际规则、步骤或流程&#xff0c;一步步地 “复现” 过程&#xff0c;最终得到结果。 使用场景&#xff1a;当问题的逻…

【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?

【加关注&#xff0c;不迷路】一、栈溢出&#xff1a;程序世界的“越界洪水”就象一个装水的玻璃杯&#xff08;栈空间&#xff09;&#xff0c;每次调用函数就像向水杯中倒水&#xff08;压入保护需要恢复的数据&#xff09;。当函数嵌套调用过深&#xff08;如递归失控&#…

牛客周赛 Round 105

A.小苯的xor构造题目描述小红喜欢整数 k&#xff0c;他想让小苯构造两个不相等的非负整数&#xff0c;使得两数的异或和等于 k。请你帮帮小苯。#include <bits/stdc.h> using namespace std; using ll long long; void solve() {int k;cin>>k;cout<<0<&l…

《R for Data Science (2e)》免费中文翻译 (第4章) --- Workflow: code style

写在前面 本系列推文为《R for Data Science (2)》的中文翻译版本。所有内容都通过开源免费的方式上传至Github&#xff0c;欢迎大家参与贡献&#xff0c;详细信息见&#xff1a; Books-zh-cn 项目介绍&#xff1a; Books-zh-cn&#xff1a;开源免费的中文书籍社区 r4ds-zh-cn …