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
英文地址,請注明出處:http://en.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 …