AlmaLinux构建LNMP

环境:

虚拟机:AlmaLinux9.1
hostname:localhost
固定虚拟机ip:192.168.123.228

#查看系统
cat /etc/redhat-release

确保软件包管理器是最新的

yum clean all
yum update
#安装开发者工具包
yum groupinstall "Development Tools"
#安装网络工具包
yum -y install net-tools

#查看网卡信息
ifconfig
#查看路由信息
route -n
#查看ARP信息
arp -an
#查看服务暴露的地址和端口
netstat -lnupt

安装方式统一使用yum

#查看yum版本
yum --version

在这里插入图片描述yum4基于dnf技术,yum4命令提供了与早期版本中使用的Yum v3的向后兼容性。yum命令只是到dnf的一个符号链接。yum和dnf的区别

安装mysql

#查看防火墙
firewall-cmd --state
#查看防火墙已经开放的端口
firewall-cmd --list-ports
#查看防火墙开放的服务
firewall-cmd --list-services
#mysql默认的服务端口为3306,这里允许3306/tcp端口访问
firewall-cmd --zone=public --permanent --add-port=3306/tcp
#重新加载防火墙配置
firewall-cmd --reload

在这里插入图片描述

如果是本地开发使用,为了方便也可以直接关闭防火墙

#关闭防火墙
systemctl stop  firewalld.service
#开启防火墙
systemctl start  firewalld.service
#禁止开机启动
systemctl disable firewalld.service
#加入开机启动
systemctl enable firewalld.service

本机测试虚拟机的3306端口能否连通

nc -zv 192.168.123.228 3306

在这里插入图片描述

#列出mysql-server
yum list mysql-server
#进行安装
yum -y install mysql-server
#查看MySQL安装情况
rpm -qa |grep mysql

MySQL配置文件相关

ll /etc/my.cnf
cat /etc/my.cnf
#服务端配置文件
cat /etc/my.cnf.d/mysql-server.cnf
#客户端配置文件
cat /etc/my.cnf.d/client.cnf

启动

#启动MySQL
systemctl start mysqld.service
#查看状态
systemctl status mysqld.service
#将MySQL加入开机自启动
systemctl enable mysqld.service

查看mysql的初始登录密码

首次运行(systemctl start mysqld.service)时会自动生成root用户的密码

root用户的密码可以在MySQL日志文件中找出,服务端配置文件里面显示了MySQL的日志文件所在路径:log-error=/var/log/mysql/mysqld.log

#查看相关配置
egrep -v "^#|^$"  /etc/my.cnf.d/mysql-server.cnf
#显示密码
grep "password" /var/log/mysql/mysqld.log

在这里插入图片描述

日志显示此次安装mysql时没有设置root用户密码(即使用空密码进行登录)

登录MySQL

mysql -uroot -p

空密码直接回车即可

在这里插入图片描述
为root用户设置新密码

这里新密码用123456

use mysql;
select host, user,plugin, authentication_string from user;
alter user 'root'@'localhost' identified with caching_sha2_password by  '123456';
#把root用户的访问权限设置可远程连接,只需要把`host`的值更改为通配的`%`
update user set host = "%" where user = "root";
#授予root用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
#刷新权限
flush privileges;

在这里插入图片描述

使用Navicat远程登录数据库

在这里插入图片描述在这里插入图片描述

需要注意的是mysql8数据库默认的密码加密方式是:caching_sha2_password,以前是mysql_native_password。而现在很多客户端工具还不支持这种加密认证方式,连接测试的时候就有可能报错。解决办法如下:

vi /etc/my.cnf.d/mysql-server.cnf

添加如下配置

default_authentication_plugin=mysql_native_password

重启服务

systemctl restart mysqld.service

为用户启用旧的身份验证插件mysql_native_password

ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
FLUSH PRIVILEGES;

用命令SHOW PLUGINS查看插件状态确保其值为ACTIVE
在这里插入图片描述需要注意的是从 MySQL 8.0.4 开始,MySQL 默认身份验证插件从mysql_native_password改为caching_sha2_password,并且mysql_native_password会在未来版本中废弃。

mysql_native_password和caching_sha2_password的区别

安装PHP

yum list php
#安装
yum -y install php
#查看已安装的
yum list installed | grep php
#验证安装的版本
php -v
#查看所有可用的PHP 扩展
php --modules
#安装PHP 扩展
yum -y install php-mbstring
yum -y install php-mysqlnd
yum -y install php-gd
yum -y install php-zip
yum -y install php-xdebug
#启动
systemctl start php-fpm
#重启
systemctl restart php-fpm
#查看状态
systemctl status php-fpm
#设置开机自启动
systemctl enable php-fpm

默认情况下 /etc/php-fpm.d目录存放相关配置文件

cd /etc/php-fpm.d
ls

PHP相关配置文件路径为/etc/php.ini/etc/php.d/*

设置PHP的时区

vi /etc/php.ini

找到;date.timezone =这项,修改为date.timezone = Asia/Shanghai

php扩展的配置文件在/etc/php.d目录下,这里修改一下xdebug的配置

cd /etc/php.d
vi 15-xdebug.ini

调整内容如下

[xdebug]
xdebug.var_display_max_children=128
xdebug.var_display_max_data=512
xdebug.var_display_max_depth=5

安装Nginx

yum -y  install nginx
#启动
systemctl start nginx
#停止
systemctl stop nginx
#重启
systemctl restart nginx
#重新加载配置(日常的添加/移除站点使用该指令即可)
systemctl reload nginx
#状态
systemctl status nginx
#开机自启动
systemctl enable nginx

将服务HTTPHTTPS端口添加到 firewalld 防火墙中

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --list-services

80端口是默认开放的,所以这里无需额外开发

在浏览器输入192.168.123.228即可看到nginx的本地默认主页
在这里插入图片描述
查看各端口的占用情况

netstat -tunlp

Nginx相关配置文件

/etc/nginx目录:所有Nginx配置文件的主目录

/etc/nginx/nginx.conf文件:主要的Nginx配置文件

为了便于管理多个站点,可以添加一个目录用于存放各站点的.conf配置文件。
这里假设目录为 /workspace/nginx-config

vi /etc/nginx/nginx.conf

http节点里面
sendfile on;修改成sendfile off;

另外再加入一行

#引入多站点目录
include /workspace/nginx-config/*.conf;

并把http节点里面server节点的配置(Nginx本地默认主页的配置)注释掉

在这里插入图片描述

这里创建一个demo站点演示一下

cd /workspace/wwwroot
mkdir demo
cd demo
vi index.php

index.php内容如下

<?php phpinfo();
cd /workspace/nginx-config
vi demo.cc.conf

demo.cc.conf内容如下

server {
    listen       80;
    #autoindex on;
    server_name  demo.cc;
    root   /workspace/wwwroot/demo;
    location / {
        index  index.php index.htm ;
    }
    location ~ \.php$ {
        #fastcgi_pass   127.0.0.1:9000;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

其中的fastcgi_pass要跟/etc/php-fpm.d/www.conf文件listen=的值一致

在这里插入图片描述

#检查nginx相关配置文件是否存在问题
nginx -t
#重新加载nginx配置
systemctl reload nginx

最后新增一项本机的hosts信息

#指向到虚拟机
192.168.123.228	demo.cc

使用浏览器测试
在这里插入图片描述

如果浏览器提示无法访问demo.cc,可以使用telnet指令来测试能否连接到虚拟机

telnet 192.168.123.228 80
telnet demo.cc 80

可能是缓存引起的
浏览器存在DNS缓存:需要手动清除浏览器缓存,以chrome为例:在搜索栏输入chrome://net-internals/#dns,点击clear host cache即可

系统存在DNS缓存:需要手动清除系统缓存,以MacOS为例:在终端输入以下命令即可(参考:Reset the DNS cache in OS X

sudo killall -HUP mDNSResponder

https://support.apple.com/en-us/HT202516

可能会引起nginx 403 forbidden 错误的原因及解决方法

具体原因可以通过查看错误日志文件了解

cat /var/log/nginx/error.log

一、目录权限问题

#加个权限
chmod -R 777 /workspace/wwwroot
#重启nginx
systemctl restart nginx

二、启动用户和nginx工作用户不一致所致

ps aux|grep nginx

在这里插入图片描述

vi /etc/nginx/nginx.conf

把user nginx;改为user root;

在这里插入图片描述

#重启nginx
systemctl restart nginx

三、SELinux引起的

查看SELinux状态
/usr/sbin/sestatus
vi  /etc/selinux/config

SELINUX=enforcing 改成SELINUX=disabled

#重启系统
reboot
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值