yum安装LNMP部署禅道
禅道官网:https://www.zentao.net/
10.10.21.20 安装nginx和php
10.10.21.196 安装mysql和redis
安装之前先确保有基础的yum源和epel源
nginx安装配置
安装
[root@kibana ~]# yum -y install epel-release # 安装epel源
[root@kibana ~]# yum -y install nginx
[root@kibana ~]# nginx -v # 安装完成检查版本
nginx version: nginx/1.20.1
配置
[root@kibana ~]# cat /etc/nginx/conf.d/lnmp.conf
server {
listen 80;
root /data/lnmp/zentaopms/www ; # 这里的zentaopms/www后面会生成
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@kibana ~]# mkdir -p /data/lnmp
[root@kibana ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
php-fpm安装配置
安装
[root@kibana ~]# yum -y install https://mirror.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm # 安装php7.4所需的yum源
[root@kibana ~]# yum -y install php74-php-fpm php74-php-mysqlnd php74-php-pecl-redis5 php74-php-mbstring php74-php-xml php74-php-gd # 安装php74和必须的插件,74已经停止支持了
[root@kibana ~]# yum -y install php82-php-fpm php82-php-json php82-php-mysqlnd php82-php-gd php82-php-pecl-zip php82-php-xml php82-php-pecl-redis5 php82-php-mbstring # 安装php82和必须的插件
安装时候可能遇到类似报错:
Error: Package: libzip5-1.9.2-3.el7.remi.x86_64 (remi-safe)
Requires: libzstd(x86-64) >= 1.3.6
Error: Package: php82-php-pecl-redis5-5.3.7-2.el7.remi.x86_64 (remi-safe)
Requires: liblzf.so.1()(64bit)
Error: Package: libzip5-1.9.2-3.el7.remi.x86_64 (remi-safe)
Requires: libzstd.so.1()(64bit)
Error: Package: php82-php-pecl-redis5-5.3.7-2.el7.remi.x86_64 (remi-safe)
Requires: libzstd.so.1()(64bit)
Error: Package: gd3php-2.3.3-7.el7.remi.x86_64 (remi-safe)
Requires: libraqm.so.0()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
解决方法:
[root@kibana ~]# yum -y install zstd
# 安装缺失的库文件,安装完成之后再安装php
[root@kibana ~]# /opt/remi/php82/root/usr/sbin/php-fpm -v
PHP 8.2.6 (fpm-fcgi) (built: May 9 2023 06:25:31)
Copyright (c) The PHP Group
Zend Engine v4.2.6, Copyright (c) Zend Technologies
# 安装成功
配置
[root@kibana ~]# vim /etc/opt/remi/php82/php-fpm.d/www.conf
[root@kibana ~]# egrep "nginx|redis|tcp" /etc/opt/remi/php82/php-fpm.d/www.conf |grep -v "^;"
user = nginx
group = nginx
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://10.10.21.196"
# 修改对应的4行,php_value[session.save_path] 需要改成redis的服务器地址
安装和配置mariadb、redis
安装
[root@es1 ~]# yum -y install mariadb redis
[root@es1 ~]# mysql -V
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
[root@es1 ~]# redis-server -v
Redis server v=3.2.12 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=7897e7d0e13773f
配置
redis
[root@es1 ~]# sed -i 's/^bind.*/bind 0.0.0.0/' /etc/redis.conf
[root@es1 ~]# systemctl enable --now redis
[root@es1 ~]# ps aux |grep redis
redis 30285 0.0 0.1 143056 5768 ? Ssl 14:37 0:00 /usr/bin/redis-server 0.0.0.0:6379
mariadb
[root@es1 ~]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@es1 ~]# mysqladmin -uroot password Huawei@123
# 修改root密码,生产环境建议进库里面改,避免history留下密码痕迹
MariaDB [(none)]> set password for root@localhost = password('Huawei@123');
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
[root@es1 ~]# mysql -uroot -pHuawei@123 # 生产环境建议使用 mysql -uroot -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create user 'zentao'@'10.10.21.%' identified by 'Huawei@1234'; # 创建普通用户
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> create database zentaodb; # 创建一个库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zentaodb.* to 'zentaodb'@'10.10.21.%'; # 将这个库授权给上面的用户
Query OK, 0 rows affected (0.01 sec)
嫌弃麻烦的话也可以直接允许root远程登录
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.21.%' IDENTIFIED BY 'Huawei@123' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 同时这个禅道还有个坑爹的点,需要把默认引擎改改,否则会报错
MariaDB [(none)]> SET default_storage_engine=MyISAM;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SHOW VARIABLES LIKE '%default_storage_engine%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)
安装禅道
下载禅道php源码
[root@kibana ~]# wget https://www.zentao.net/dl/zentao/18.3/ZenTaoPMS.18.3.php7.2_7.4.zip
[root@kibana ~]# unzip ZenTaoPMS.18.3.php7.2_7.4.zip -d /data/lnmp/
# 解压到nginx定义的root目录下
安装
启动服务
[root@kibana ~]# systemctl enable --now nginx php82-php-fpm.service
# redis和mysql之前就已经启动过了,这里就不用重复启动了
浏览器安装
浏览器访问 http://10.10.21.20 (对应自己的nginx地址)
之后按提示安装即可,安装完成登录 redis 也可以看到有一下key,表示redis加速session成功
[root@es1 ~]# redis-cli
127.0.0.1:6379> keys *
1) "name"
2) "PHPREDIS_SESSION:mir1rc9p4k8dgqt1f9v3cun76d"
3) "PHPREDIS_SESSION:3pjdkdgtqjde9sl0s9m22b4k45"
编译安装LNMP部署可道云
可道云官网:https://kodcloud.com/
清除环境
[root@es1 ~]# yum -y remove redis* mariadb*
[root@kibana ~]# yum -y remove nginx php*
仍然10.10.21.20安装nginx和php,10.10.21.196安装mysql和php
编译安装mysql
准备工具和源码包
[root@es1 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.32.tar.gz
# 官网下载源码包
[root@es1 ~]# tar -xf mysql-boost-8.0.32.tar.gz
[root@es1 ~]# useradd mysql -r -s /sbin/nologin -M
[root@es1 ~]# yum -y install gcc gcc-c++ cmake cmake3 ncurses ncurses-devel bison openssl-devel rpcgen
# 下载编译需要的工具包,8.x的mysql依赖cmake 3.5.1及以上版本,GCC 11及以上版本
[root@es1 mysql]# cmake --version
cmake version 2.8.12.2
[root@es1 mysql]# cmake3 --version
cmake3 version 3.17.5
# cmake3是满足要求的
[root@es1 mysql]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#默认的gcc版本低了
[root@es1 ~]# wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz
[root@es1 ~]# wget https://mirrors.ustc.edu.cn/gnu/gmp/gmp-6.1.2.tar.xz
[root@es1 ~]# wget https://mirrors.ustc.edu.cn/gnu/mpfr/mpfr-4.0.2.tar.gz
[root@es1 ~]# wget https://mirrors.ustc.edu.cn/gnu/mpc/mpc-1.1.0.tar.gz
# gcc如果编译安装需要依赖很多东西,并且耗时很久,我这边就直接yum来装了
[root@es1 mysql]# yum -y install centos-release-scl # 安装gcc的yum源
[root@es1 mysql]# yum -y install devtoolset-11-gcc*
[root@es1 mysql]# scl enable devtoolset-11 bash # 激活新版本gcc
[root@es1 mysql]# gcc --version
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# gcc版本已经升级为11.2.1了
开始编译
[root@es1 mysql-8.0.32]# cd mysql-8.0.32
[root@es1 mysql-8.0.32]# cmake3 \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=$(pwd)/boost/boost_1_77_0 \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
[root@es1 mysql-8.0.32]# make -j 4 && make install # 开始编译,可根据自己cpu数量来决定参数,我这边是4个vcpu,编的时候cpu都跑满了
我这边编译完成之后遇到了 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
不生效,但是手动拷贝过去ok的情况,因此干脆重新二进制安装一次
[root@es1 local]# cd /usr/local/
[root@es1 local]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz # 官网下载地址
[root@es1 local]# tar -xf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
[root@es1 local]# mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql && cd mysql
[root@es1 mysql]# useradd mysql -r -s /sbin/nologin -M
[root@es1 mysql]# mkdir data log
[root@es1 mysql]# vim my.cnf
[root@es1 mysql]# cat my.cnf
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 设置socket文件目录
socket=/tmp/mysql.sock
# 设置日志目录
log-error=/usr/local/mysql/log/mysql.log
# 设置pid目录
pid-file=/usr/local/mysql/mysql.pid
# 允许最大连接数
max_connections=1500
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用"mysql_native_password"插件认证
default_authentication_plugin=mysql_native_password
# 区分大小写,0区分,1不区分,填写这个配置前提是在initialize初始化数据库的时候加参数--lower_case_table_names=1,否则报错
lower_case_table_names=1
[root@es1 mysql]# chown -R mysql.mysql /usr/local/mysql
[root@es1 mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower_case_table_names=1 # 初始化,初始化完成会生成初始密码
2023-05-19T12:33:53.647397Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.32) initializing of server in progress as process 93505
2023-05-19T12:33:53.654056Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-05-19T12:33:54.179881Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-05-19T12:33:55.096205Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: R<ogdDep0NcG # 这里就是密码
#参数说明
#--user=mysql 指定用户
#--basedir=/usr/local/mysql/ 指定安装目录
#--datadir=/usr/local/mysql/data/ 指定初始化数据目录
配置systemd管理mysql
[root@es1 ~]# cat /etc/systemd/system/mysqld.service
[Unit]
Description=mysql
After=network-online.target
Wants=network-online.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --daemonize
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
LimitNOFILE = 10000
Restart=on-failure
Type=forking
TimeoutSec=0
[Install]
WantedBy=multi-user.target
[root@es1 ~]# systemctl enable --now mysqld # 启动mysql
连接数据库进行初始配置
[root@es1 ~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh # 配置环境变量,这样就可以直接执行mysql命令,不需要用绝对路径
[root@es1 ~]# /usr/local/mysql/bin/mysql -uroot -p # 密码是初始密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Huawei@123';
Query OK, 0 rows affected (0.01 sec)
# 必须要改掉初始化密码,否则什么都干不了
mysql> create database kodbox;
Query OK, 1 row affected (0.00 sec)
mysql> create user kodbox@'10.10.21.%' identified by 'Huawei@123';
Query OK, 0 rows affected (0.02 sec)
mysql> grant all on kodbox.* to kodbox@'10.10.21.%';
Query OK, 0 rows affected (0.00 sec)
# 创建库后面用
编译安装redis
准备工具和源码包
[root@es1 ~]# wget http://download.redis.io/releases/redis-7.0.9.tar.gz
[root@es1 redis]# tar -xf redis-7.0.9.tar.gz -C /usr/local/
[root@es1 redis]# mv /usr/local/{redis-7.0.9,redis}
[root@es1 redis]# cd /usr/local/redis/
[root@es1 redis]# make # 直接make即可 (make install默认安装到/usr/local/bin目录下,但是我这边不需要)
[root@es1 redis]# src/redis-server redis.conf
11188:C 19 May 2023 22:14:19.707 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11188:C 19 May 2023 22:14:19.707 # Redis version=7.0.9, bits=64, commit=00000000, modified=0, pid=11188, just started
11188:C 19 May 2023 22:14:19.707 # Configuration loaded
11188:M 19 May 2023 22:14:19.708 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 7.0.9 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 11188
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
# 测试redis启动成功
简单配置redis
[root@es1 redis]# sed -i 's/^bind.*/bind 0.0.0.0/' /usr/local/redis/redis.conf
# 然后加上访问密码
requirepass Huawei@123
配置systemd管理redis
[root@es1 redis]# cat /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target
Wants=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
PrivateTmp=true
Restart=on-failure
TimeoutSec=0
[Install]
WantedBy=multi-user.target
[root@es1 redis]# systemctl enable --now redis
[root@es1 ~]# ps aux |grep redis
root 12258 0.0 0.2 163156 8180 ? Ssl 22:26 0:00 /usr/local/redis/src/redis-server 0.0.0.0:6379
# 检测进程是否启动
编译安装php
准备工具和源码包
[root@kibana ~]# yum -y install gcc openssl-devel libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel
[root@kibana ~]# wget https://www.php.net/distributions/php-8.2.6.tar.gz
[root@kibana ~]# tar -xf https://www.php.net/distributions/php-8.2.6.tar.gz
[root@kibana ~]# yum -y install libcurl-devel libxml2-devel sqlite-devel bzip2-devel libpng-devel libjpeg-devel freetype-devel libicu-devel oniguruma-devel libxslt-devel libzip-devel libffi-devel libwebp-devel
# 如不安装可能遇到编译报错
开始编译
[root@kibana ~]# cd php-8.2.6/
[root@kibana php-8.2.6]# ./configure \
--prefix=/usr/local/php \
--sysconfdir=/usr/local/php \
--with-openssl \
--with-imap-ssl \
--with-zlib \
--with-bz2 \
--with-curl \
--enable-bcmath \
--enable-gd \
--with-webp \
--with-jpeg \
--with-mhash \
--enable-mbstring \
--enable-xml \
--enable-sockets \
--enable-fpm \
--enable-maintainer-zts \
--disable-fileinfo \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql \
--enable-exif \
--with-ffi \
--with-pcre-jit \
--enable-pcntl
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
[root@kibana php-8.2.6]# make -j 4 && make install
/root/php-8.2.6/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin/phar.phar
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
# 编完了会有对应提示
[root@kibana php-8.2.6]# cd /usr/local/php/
[root@kibana php]# ls # 检查下编完了的文件
bin include lib php php-fpm.conf.default php-fpm.d sbin var
[root@kibana php]# /usr/local/php/bin/php -v
PHP 8.2.6 (cli) (built: May 20 2023 09:41:05) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.6, Copyright (c) Zend Technologies
配置php
[root@kibana php]# cp /usr/local/php/{php-fpm.conf.default,php-fpm.conf}
[root@kibana php]# cp /usr/local/php/php-fpm.d/{www.conf.default,www.conf}
# 拷贝出来配置文件
[root@kibana php]# pwd
/usr/local/php
[root@kibana php]# sed -i 's/nobody/nginx/g' php-fpm.d/www.conf
[root@kibana php]# egrep -v '^;|^$' php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
access.log = log/$pool.access.log
slowlog = log/$pool.log.slow
[root@kibana php]# mkdir log # 默认没有日志目录,需要创建一个
[root@kibana php]# /usr/local/php/sbin/php-fpm -t # 检查语法配置是否正确
[20-May-2023 09:57:12] NOTICE: configuration file /usr/local/php/php-fpm.conf test is successful
[root@kibana php]# echo "PATH=\$PATH:/usr/local/php/bin/:/usr/local/php/sbin/" > /etc/profile.d/php.sh # 设置环境变量,这样就可以直接用php命令了
设置systemd管理php
[root@kibana php]# cat /etc/systemd/system/php-fpm.service
[Unit]
Description=php-fpm
After=network.target
Wants=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
PrivateTmp=true
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@kibana php]# systemctl daemon-reload
[root@kibana php]# systemctl enable --now php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /etc/systemd/system/php-fpm.service.
[root@kibana php]# ps -aux |grep php
root 48551 0.0 0.1 221160 4620 ? Ss 10:02 0:00 php-fpm: master process (/usr/local/php/php-fpm.conf)
nginx 48552 0.0 0.1 223244 4492 ? S 10:02 0:00 php-fpm: pool www
nginx 48553 0.0 0.1 223244 4492 ? S 10:02 0:00 php-fpm: pool www
编译安装redis扩展模块
[root@kibana ~]# wget https://pecl.php.net/get/redis-5.3.7.tgz # 我安装的php是8.2,老的扩展安装会报错,自己去 pecl.php.net 找的最新版redis扩展
[root@kibana ~]# tar -xf redis-5.3.7.tgz
[root@kibana ~]# cd redis-5.3.7
[root@kibana redis-5.3.7]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@kibana redis-5.3.7]# make -j 4 && make install
[root@kibana redis-5.3.7]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20220829/
opcache.so redis.so
# 多出来了redis
配置php-fpm开启redis扩展
# 正常开启是需要在php.ini里面开,但是我安装的这版本没有这个文件
[root@kibana redis-5.3.7]# php -i |grep "Configuration File" # 找出来对应的配置文件位置
Configuration File (php.ini) Path => /usr/local/php/lib # 位置找到了,在/usr/local/php/lib
Loaded Configuration File => (none) # 但是很显然是没有文件的
# 因此直接获取一个标准的php.ini文件来改,记得路径和上面查出来的保持一致
[root@kibana redis-5.3.7]# egrep -v '^$|^;' /usr/local/php/lib/php.ini
[PHP]
error_reporting = E_ALL
display_errors = On
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20220829"
extension = "redis.so"
max_execution_time = 30
memory_limit = 128M
upload_max_filesize = 32M
session.save_handle = redis # 声明用redis存放session
session.save_path = "tcp://10.10.21.196:6379?auth=Huawei@123" # 声明用redis的地址,如果redis测没开启密码,这里就? 往右的删掉
session.use_cookies = 1
session.name = "MYSESSID"
session.cookie_path = "/"
session.cookie_lifetime = 86400
session.cookie_domain = ".example.com"
session.gc_probability = 1
session.gc_divisor = 100
file_uploads = On
upload_tmp_dir = "/tmp"
post_max_size = 64M
date.timezone = "Asia/Shanghai"
# 上面的 # 只是我写上来的注释,但是php注释是用 ; 因此真正使用的时候记得删除
# 验证配置是否有问题
[root@kibana redis-5.3.7]# php -i |grep "Configuration File"
Configuration File (php.ini) Path => /usr/local/php/lib
Loaded Configuration File => /usr/local/php/lib/php.ini # 文件已经有了
[root@kibana redis-5.3.7]# php-fpm -t
[20-May-2023 11:25:32] NOTICE: configuration file /usr/local/php/php-fpm.conf test is successful 配置文件也没毛病
[root@kibana redis-5.3.7]# systemctl restart php-fpm # 重启生效
编译安装nginx
准备工具和源码包
[root@kibana ~]# yum -y install gcc pcre-devel openssl-devel zlib-devel
[root@kibana ~]# wget http://nginx.org/download/nginx-1.20.2.tar.gz
[root@kibana ~]# useradd nginx -r -s /sbin/nologin
开始编译
[root@kibana ~]# tar -xf nginx-1.20.2.tar.gz
[root@kibana nginx-1.20.2]# cd nginx-1.20.2
[root@kibana nginx-1.20.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@kibana nginx-1.20.2]# make -j 4 && make install
# 同样的配置,编译nginx就比mysql轻松很多
配置systemd管理nginx
[root@kibana nginx-1.20.2]# mkdir /usr/local/nginx/run
[root@kibana nginx-1.20.2]# cat /etc/systemd/system/nginx.service
[Unit]
Description=nginx
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
[Install]
WantedBy=multi-user.target
简单配nginx
[root@kibana ~]# sed -i 's@^#pid.*@pid run/nginx.pid;@' /usr/local/nginx/conf/nginx.conf
[root@kibana nginx]# sed -i 's@^worker_processes.*@worker_processes 4;@' /usr/local/nginx/conf/nginx.conf # 几个核心就改成几
[root@kibana nginx]# egrep -v '#|^$' conf/nginx.conf
worker_processes 4;
pid run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name mykodbox.com;
location / {
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root kodbox;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
}
}
[root@kibana nginx]# systemctl enable --now nginx
[root@kibana nginx]# ps aux |grep nginx
root 50472 0.0 0.0 46228 1160 ? Ss 21:56 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 50473 0.0 0.0 48768 1996 ? S 21:56 0:00 nginx: worker process
nginx 50474 0.0 0.0 48768 1996 ? S 21:56 0:00 nginx: worker process
nginx 50475 0.0 0.0 48768 1996 ? S 21:56 0:00 nginx: worker process
nginx 50476 0.0 0.0 48768 1996 ? S 21:56 0:00 nginx: worker process
root 50513 0.0 0.0 112808 968 pts/0 S+ 21:56 0:00 grep --color=auto nginx
# 一个master和4个worker就是对的
准备一个php测试文件看看redis是否开起来了
[root@kibana redis-5.3.7]# cat /usr/local/nginx/kodbox/index.php #路径和nginx配置的需要一致
<?php
phpinfo();
?>
浏览器访问测试
测试session存放是否是redis
安装可道云
下载安装包
[root@kibana ~]# wget https://static.kodcloud.com/update/download/kodbox.1.40.zip
[root@kibana ~]# rm -f /usr/local/nginx/kodbox/*
[root@kibana ~]# unzip kodbox.1.40.zip -d /usr/local/nginx/kodbox/
[root@kibana ~]# chown nginx.nginx /usr/local/nginx/kodbox/ -R
浏览器访问页面开始安装
安装完成检测
可以看到已经缓存了不少内容到redis中 了