lnmp +redis 发布企业门户网站( 单机部署)
操作系统环境:Centos 7.9
服务器IP:172.20.26.140
1、部署lnmp
yum install epel-release -y
yum install yum-utils
创建新的nginx.repo文件:
vim /etc/yum.repos.d/nginx.repo
添加
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
默认情况下,使用稳定的nginx软件包的存储库。如果要使用主线nginx软件包,请运行以下命令:
yum-config-manager --enable nginx-mainline
安装nginx、php、mariadb等
yum install nginx php php-fpm mariadb mairadb-server mariadb-devel? php-mysql php-redis php-devel -y
2、创建数据库
启动数据库服务
?systemctl start mariadb
登录数据库
mysql
或者mysql -uroot?-p -h127.0.0.1
create database discus charset utf8;
grant all on discuz.* to “discuz”@localhost identified by “discuz”; ?#(第一个discuz 是数据库,第二个discuz是用户,第三个discuz 是密码)
flush privileges;?? #使配置生效
退出再次登录
mysql -udiscuz -pdiscuz?? #用discuz用户登录 数据库
show databases;??? #查看到我们所创建的数据库
3、上传网站代码
cd /usr/src ?#进入源码目录下
rz 上传Discuz_X3.1_SC_UTF8 ??如果是公司网站代码,开发人员会提供网站代码
unzip Discuz_X3.1_SC_UTF8 -d /usr/share/nginx/html/? #解压到nginx web服务器默认发布目录下
chown apache. -R /usr/share/nginx/html/upload/?? #确认php进程的用户是谁?然后进行授权,这里php进程的用户是apache
systemctl start nginx? #启动nginx
?浏览器中输入nginx 服务器IP地址即可访问到nginx默认的发布页面。
vi /usr/share/nginx/html/index.html? ?#nginx网站的默认发布目录
可以修改“ welcome to nginx!” 内容
修改nginx配置文件
vi /etc/nginx/conf.d/default.conf
把upload 路径加上,同时添加index.php 索引文件
开启location 规则
systemctl restart nginx?? #重启nginx 服务
如果有问题可以查看日志
tail /var/log/nginx/error.log
检查端口是否有开启
?????? ss -ntlp
?????? systemctl start nginx php-fpm?? #启动nginx 和php-fpm
?????? rpm -qc nginx ????????????????#查看nginx配置文件路径
rpm -ql nginx? ????????????????#查看nginx发布目录路径
rpm -qd nginx? ???????????????#查看nginx帮助文档
4、配置网站安装向导
当前状态打红叉,当前状态不可写,由于php 进程的用户没有对以上目录及文件的写入权限,查看upload的权限755
ll /usr/share/nginx/html/upload/ -d
查看php 进程的用户是谁?如下显示,是apache 用户
ps -ef | grep php
chown apache. -R /usr/share/nginx/html/upload/
刷新页面,发现当前状态已变成可写,打绿勾
ll /usr/share/nginx/html/upload/ -d? #再查看一下权限
回到网页,点击 下一步
点击下一步
5、部署redis
rpm -q redis? #查看是否有安装过redis
yum install redis -y
systemctl start redis
netstat -ntlp?? #由于是单机部署,所以redis 监听的是127.0.01的 6379端口,server的IP地址设置为127.0.0.1,如果redis 在别的服务器上,server IP地址设置为redis 所在服务器的IP地址
vi /usr/share/nginx/html/upload/config/config_global.php
通过redis-cli
keys *? ??#查询一下缓存情况
刷新discuz网站,keys *? 没有数据
php -m??? #查询php 是否有redis 模块
如果前面已安装了php-redis 模块就不会出现这个现象,如果没有安装,继续安装一下
yum install php-redis -y
安装完成后,再查看一下,查询php 是否已经有了redis 模块
?重启一下redis 与php相连的服务模块 php-fpm (修改配置文件或者增加模块,记得重启服务)
systemctl restart php-fpm
再刷新一下discuz 网站,通过redis-cli
keys *? ??#查询一下键,发现已经有缓存数据了
如果nginx部署了多个网站需要做redis 缓存,需要进行区分,不要写到一个数据库里,
select 2 ???#进入另一个redis缓存数据库
redis 默认给我们提供了16个数据库,默认使用的是0号数据库
select 0
可以通过get 命令查看相关缓存信息
例如:disuz 网站用admin用户登录后,get GC41J3_common_member_1 就可以查询到admin 相关的信息(邮箱、用户名、密码等等)
查看一下redis 的配置文件路径以及配置文件内容
rpm -qc redis
vi /etc/redis.conf
redis 数据都存放在内存中,如果断电,内容丢失,有两种模式SNAPSHOTTING 模式(写入到.rdb格式文件)和APPEND ONLY MODE (写入到.aof格式文件)可以将数据存到磁盘中。
SNAPSHOTTING 模式:
也可以手动触发
save ?这是前台进行,会占用当前进程,如果用户正在进行写数据,它会进行阻塞。
bgsave 是通过fork执行的,叫写时复制,我们一般使用bgsave
写到redis的dump.rdb文件里
ls /var/lib/redis
APPEND ONLY MODE:追加模式
默认写入到appendonly.aof文件
appendfsync always?? #最多之丢失1个键
appendfsync everysec? #最多会丢失1秒的数据,追加形式,每秒执行,所以aof 比rdb 文件要大很多,所以redis 重启服务,redis 从磁盘加载文件时 速度要比rdb 慢一点
appendonly? #默认是关闭的 appendonly no ,也可以打开appendonly yes
redis 默认先加载aof文件,如果aof 没有数据,就把rdb清空,如果rdb 是先启动的,aof是后来追加的,那么开启aof或者修改配置文件后千万不能马上重启服务,执行 redis-cli 进来,再执行bgrewiteaof ,这时会将rdb文件内容写到aof文件中,然后重启服务,数据就不会丢失。
查看aof、rdb 文件内容
查看aof、rdb 文件大小
ll -h /var/lib/redis/*
通过上面文件大小比较,我们就点击了几下discuz网站,aof 文件比rdb文件大很多。
后续继续研究 aof 、rdb 工作原理,redis 主从,集群等等。