
环境要求服务器环境centos 7.9 4C 4G/100G软件环境mysql 8.0redis 7.4.0nginx 1.20.1php 7.4环境部署部署mysql安装# 1. 下载并安装MySQL yum源 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum -y localinstall mysql80-community-release-el7-3.noarch.rpm cd /etc/yum.repos.d/ sed -i s/gpgcheck1/gpgcheck0/g mysql-community.repo sed -i s/gpgcheck1/gpgcheck0/g mysql-community-source.repo yum clean all yum makecache # 2. 安装MySQL服务器 yum install -y mysql-community-server # 3. 启动MySQL服务 systemctl start mysqld systemctl enable mysqld重置密码/配置远程登录用户# 修改密码无需进入数据库内部 # mysqladmin -uroot -p密码 password 新密码 # 配置远程登入 CREATE USER root% IDENTIFIED BY ****** GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; FLUSH PRIVILEGES;部署redis安装这里给到redis的安装脚本直接执行即可#!/bin/bash trap exit_handler SIGINT echo ---------安装程序启动------------- echo ---------按Ctrlc退出------------- # 安装编译工具 echo ---------正在安装编译工具---------- yum -y install make gcc gcc-c /dev/null echo -------------------------------- echo ---------编译工具安装完成---------- sleep 2 # 更新wget echo ---------正在更新安装环境---------- yum -y install wget /dev/null yum -y remove wget /dev/null yum -y install wget /dev/null echo -------------------------------- echo ---------安装环境更新完成---------- # 下载 echo ----------正在下载redis----------- wget https://download.redis.io/releases/redis-7.4.0.tar.gz /dev/null # 解压 tar -zxvf redis-7.4.0.tar.gz /dev/null echo --------------------------------- echo ----------redis下载完成----------- # 编译 echo ---------正在编译redis----------- cd redis-7.4.0 /dev/null make -j 4 /dev/null echo -------------------------------- echo ----------redis编译完成----------- # 安装 echo ---------正在安装redis----------- make install PREFIX/usr/local/redis -j 4 /dev/null echo -------------------------------- echo ----------redis安装完成----------- # 创建redis配置文件 echo -----正在创建redis配置环境--------- mkdir -p /usr/local/redis/conf mkdir -p /usr/local/redis/data cp redis.conf /usr/local/redis/conf echo -------------------------------- echo -----redis配置环境创建完成--------- # 配置文件优化 echo ----------正在优化redis----------- sed -i /^bind /c\# 127.0.0.1 -::1\ bind 0.0.0.0 /usr/local/redis/conf/redis.conf sed -i /^daemonize /c\# daemonize no\ daemonize yes /usr/local/redis/conf/redis.conf sed -i /^protected-mode /c\# protected-mode yes\ protected-mode no /usr/local/redis/conf/redis.conf sed -i /^dir /c\# dir .\/\ dir /usr/local/redis/data /usr/local/redis/conf/redis.conf echo maxmemory 2gb /usr/local/redis/conf/redis.conf echo maxmemory-policy allkeys-lru /usr/local/redis/conf/redis.conf echo -------------------------------- echo ----------redis优化完成----------- # 创建启动文件 echo ----------redis准备启动----------- touch /etc/systemd/system/redis.service cat /etc/systemd/system/redis.service EOF [Unit] DescriptionRedis Server Afternetwork.target [Service] Typeforking # 真实启动命令 ExecStart/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf ExecStop/usr/local/redis/bin/redis-cli shutdown Restartalways [Install] WantedBymulti-user.target EOF # 重新读取service服务 systemctl daemon-reload # 启动服务 systemctl start redis /dev/null systemctl status redis # 全局可用 ln -s /usr/local/redis/bin/* /usr/local/bin /dev/null echo -------------------------------- echo -----redis启动完成请使用---------部署nginxyum -y install nginx nginx -v验证systemctl start nginx部署php安装# 安装Remi仓库 yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm # 列出php版本 yum repolist all | grep remi-php # remi-php74 Remis PHP 7.4 RPM repository fo 禁用 # 启用所需php版本 yum-config-manager --enable remi-php74 # 安装php扩展 sudo yum install -y \ php \ php-fpm \ php-mysqlnd \ php-gd \ php-mbstring \ php-xml \ php-xmlrpc \ php-opcache \ php-json \ php-curl \ php-zip \ php-intl \ php-bcmath \ php-soap \ php-pecl-imagick \ php-pecl-redis \ php-pecl-memcached \ php-pecl-apcu \ php-pdo \ php-openssl备份php-fpmcp /etc/php-fpm.conf /etc/php-fpm.conf.backup cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.backup配置php-fpm池/etc/php-fpm.d/www.conf vim /etc/php-fpm.d/www.conf [www] ; 用户和组 user nginx group nginx ; 监听方式 listen /run/php-fpm/www.sock listen.owner nginx listen.group nginx listen.mode 0660 ; 进程管理 pm dynamic pm.max_children 50 pm.start_servers 5 pm.min_spare_servers 5 pm.max_spare_servers 35 pm.max_requests 500 ; 环境变量 env[HOSTNAME] $HOSTNAME env[PATH] /usr/local/bin:/usr/bin:/bin env[TMP] /tmp env[TMPDIR] /tmp env[TEMP] /tmp ; 安全设置 php_admin_value[upload_max_filesize] 64M php_admin_value[post_max_size] 64M php_admin_value[memory_limit] 256M php_admin_value[max_execution_time] 300 php_admin_value[disable_functions] system,exec,passthru,shell_exec,proc_open php_admin_flag[log_errors] on php_admin_value[error_log] /var/log/php-fpm/www-error.log配置phpvim /etc/php.ini ; 搜索如下并添加时区设置 date.timezone Asia/Shanghai ; 找到对应位置添加如下配置Opcache配置 [opcache] opcache.enable1 opcache.memory_consumption128 opcache.interned_strings_buffer8 opcache.max_accelerated_files10000 opcache.revalidate_freq2 opcache.fast_shutdown1 opcache.enable_cli0DSShop商场部署下载DSShop源码包修改nginx配置文件cd /usr/local/nginx/conf/ mv nginx.conf nginx.conf.bak grep -Ev #|^$ nginx.conf.bak nginx.conf vim 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; log_format accessjson {timestamp: $time_iso8601, remote_addr: $http_x_real_ip, scheme: $scheme, server_name: $host, request_uri: $request_uri, request_method: $request_method, status: $status, body_bytes_sent: $body_bytes_sent, http_referer: $http_referer, http_user_agent: $http_user_agent, request_time: $request_time, upstream_response_time: $upstream_response_time, upstream_addr: $upstream_addr, http_x_forwarded_for: $proxy_add_x_forwarded_for}; access_log /var/log/nginx/access.log accessjson; 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; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name YOUR_IP; root /home/www/public; location / { rewrite / /index.php redirect; } location / { index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^/index.php/(.*)$ /index.php?s/$1 last; break; } } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 500 502 503 504 /50x.html; location /50x.html { root html; } } }配置mysqlmysql -u root -pPssw0rd create database DSShop; EOF create database DSShop; EOF vim /home/www/config/database.php ?php return [ // 默认使用的数据库连接配置 default env(database.driver, mysql), // 自定义时间查询规则 time_query_rule [], // 自动写入时间戳字段 // true为自动识别类型 false关闭 // 字符串则明确指定时间字段类型 支持 int timestamp datetime date auto_timestamp true, // 时间字段取出后的默认时间格式 datetime_format Y-m-d H:i:s, // 数据库连接配置信息 connections [ mysql [ // 数据库类型 type env(database.type, mysql), // 服务器地址 hostname env(database.hostname, 127.0.0.1), // 数据库名 database env(database.database, DSShop;), // 用户名 username env(database.username, root), // 密码 password env(database.password, *******), // 端口 hostport env(database.hostport, 3306), // 数据库连接参数 params [], // 数据库编码默认采用utf8 charset env(database.charset, utf8), // 数据库表前缀 prefix env(database.prefix, ), // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) deploy 0, // 数据库读写是否分离 主从式有效 rw_separate false, // 读写分离后 主服务器数量 master_num 1, // 指定从服务器序号 slave_no , // 是否严格检查字段是否存在 fields_strict true, // 是否需要断线重连 break_reconnect false, // 监听SQL trigger_sql env(app_debug, true), // 开启字段缓存 fields_cache false, // 字段缓存路径 schema_cache_path app()-getRuntimePath() . schema . DIRECTORY_SEPARATOR, ], // 更多的数据库配置信息 ], ];配置redisvim /home/www/config/cache.php ?php // ---------------------------------------------------------------------- // | 缓存设置 // ---------------------------------------------------------------------- return [ // 默认缓存驱动 default env(cache.driver, file), // 缓存连接方式配置 stores [ file [ // 驱动方式 type File, // 缓存保存目录 path ../runtime/cache/, // 缓存前缀 prefix , // 缓存有效期 0表示永久缓存 expire 0, // 缓存标签前缀 tag_prefix tag:, // 序列化机制 例如 [serialize, unserialize] serialize [], ], // 更多的缓存连接 redis [ type redis, host env(redis.host, 127.0.0.1), port env(redis.port, 6379), password env(redis.password, ), select env(redis.select, 0), prefix env(redis.prefix, ds_shop_), expire 0, timeout 0, ], ], ];访问解决系统错误sql写法有问题新版mysql不支持修改mysql配置文件忽略未聚合未分组查询[mysqld] sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION systemctl restart mysqld