Bootstrap

Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。

下载centos7

CentOS 7 完整版(DVD):

https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso

CentOS 7 最小化版(Minimal):

https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso

CentOS 7 网络安装版(NetInstall):

https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-NetInstall-2009.iso

安装相关软件

0. ifconfig

如果没有这么命令,则使用 yum install net-tools 安装网络工具

如果报错,

先ping下外网是否能通

1. 检查网络连接

确保你的系统可以访问互联网:

ping -c 4 google.com
PING google.com (46.82.174.69) 56(84) bytes of data.

--- google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2000ms

如果无法访问,请检查网络配置(如 DNS、网关等)。

2. 清理 YUM 缓存

清理 YUM 缓存并重新生成缓存:

yum clean all
yum makecache

3. 检查仓库配置文件

检查 /etc/yum.repos.d/ 目录下的仓库配置文件,确保 extras 仓库的 URL 是有效的。例如:

cat /etc/yum.repos.d/CentOS-Base.repo

找到 [extras] 部分,检查 baseurl 或 mirrorlist 是否正确。

4. 使用国内镜像站

如果默认仓库不可用,可以替换为国内镜像站(如阿里云、腾讯云)。以下是使用阿里云镜像站的步骤:

备份原有仓库配置文件:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载阿里云的仓库配置文件:

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清理并更新缓存:

yum clean all
yum makecache

设置外网IP

  1. 编辑 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
    改为 ONBOOT=“yes” 后,系统会在每次启动时自动启用该网络接口,确保网络连接正常。
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="239f45e1-995d-48e8-a51c-18493722fddb"
DEVICE="enp0s3"
ONBOOT="yes"  //no改成yes

  1. 修改完上面的内容,重启网络systemctl restart network

  2. 查看 ip addr
    这时候发现网络IP被启用,如果是用服务器,则会出现公网IP
    在这里插入图片描述

ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b5:9a:4f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.110/24 brd 10.0.0.255 scope global noprefixroute dynamic enp0s3
       valid_lft 6474sec preferred_lft 6474sec
    inet6 fe80::eaa2:f36c:6259:d981/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

使用xshell链接

  1. 查看ip,
    在这里插入图片描述
    如果是内网ip,则需要关掉虚拟机,则设置->网络->链接方式->桥接
    在这里插入图片描述
    在这里插入图片描述

安装vim

yum install vim

安装wget

yum install wget

SSH 安装和使用

ssh 是什么:

SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地访问远程计算机或服务器。它通过加密技术确保数据传输的安全性,防止数据被窃听或篡改。SSH 广泛用于远程管理服务器、文件传输和网络服务。

安装ssh

安装

yum install openssh-server

启动

service sshd start 

开机启动

centos6及一下版本

chkconfig sshd on

centos7及以上版本

systemctl enable sshd.service

查看ssh

ps -ef|grep ssh
root     24773     1  0 14:38 ?        00:00:00 sshd: root@pts/0
root     24899     1  0 15:29 ?        00:00:00 sshd: root@pts/1
root     24949     1  0 15:29 ?        00:00:00 /usr/sbin/sshd -D
root     24990 24903  0 15:35 pts/1    00:00:00 grep --color=auto ssh

客户端安装ssh工具

windows 推荐使用xshell,

mac 平台

linux 执行

yum install openssh-clients

开始链接

ssh [email protected]  

ssh 配置(高阶)

  1. 进入ssh目录 cd ~/.ssh/
  2. 查看是否有config文件,没有则 touch config创建

在这里插入图片描述
在这里插入图片描述
3. 在配置文件 config 里配置如下

host "myssh"
	HostName 10.0.0.110
	User root
	Port 22
  1. 登录测试 ssh myssh,则正常进入目标主机
ssh myssh
[email protected]'s password: 
Last login: Fri Jan 10 16:04:03 2025 from 10.0.0.133

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b5:9a:4f brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.110/24 brd 10.0.0.255 scope global noprefixroute dynamic enp0s3
       valid_lft 5316sec preferred_lft 5316sec
    inet6 fe80::eaa2:f36c:6259:d981/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ssh配置多台主机

host "myssh"
	HostName 10.0.0.110
	User root
	Port 22
host "myssh1"
	HostName 10.0.0.111
	User root
	Port 22
host "myssh2"
	HostName 10.0.0.112
	User root
	Port 22			

免密登录ssh-key

采用非对称方式,公钥和私钥,公钥给客户端使用,私钥则在服务器里
在这里插入图片描述

在window下的xshell生成公钥

工具-用户key管理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
密码留空
留
在这里插入图片描述
在这里插入图片描述

Linux 生成公钥

一路下一步就在 家目录/.ssh/ 下你会看到 ``

ssh-keygen

在这里插入图片描述

ssh服务端,把公钥复制到

复制公钥到ssh服务器的 ./ssh/authorized_keys里面
在这里插入图片描述

在这里插入图片描述

免密登录验证

在这里插入图片描述

ssh 端口修改

vi /etc/ssh/sshd_config

修改端口22为222,重启服务``
在这里插入图片描述

在 Linux 系统中,绑定低于 1024 的端口需要 root 权限。如果 sshd 配置为使用低于 1024 的端口(如 222),可能会导致权限问题。
所以建议端口大于1024 例如2222

Linux 常用命令

在这里插入图片描述

软件命令

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

yum

  1. 安装
yum install wget
  1. 搜索
yum search wget
  1. 卸载
yum remove wget
  1. 查看已下载的软件
yum list 
yum list installed 
  1. 查看详细信息
yum info wget

服务器硬件,内存命令

查看内存

free -m

在这里插入图片描述

              total        used        free      shared  buff/cache   available
Mem:        8010328     1234567     2345678      123456     4430123     5678901
Swap:       2097148           0     2097148

在这里插入图片描述

每隔 2 秒刷新显示内存使用情况

free -s 2

硬盘

df 
[root@localhost ~]#  df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 908M     0  908M   0% /dev
tmpfs                    919M     0  919M   0% /dev/shm
tmpfs                    919M   33M  887M   4% /run
tmpfs                    919M     0  919M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.8G   16G  11% /
/dev/sda1               1014M  150M  864M  15% /boot
tmpfs                    184M     0  184M   0% /run/user/0

在这里插入图片描述

[root@localhost ~]#  df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 908M     0  908M   0% /dev
tmpfs                    919M     0  919M   0% /dev/shm
tmpfs                    919M   33M  887M   4% /run
tmpfs                    919M     0  919M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.8G   16G  11% /
/dev/sda1               1014M  150M  864M  15% /boot
tmpfs                    184M     0  184M   0% /run/user/0

在这里插入图片描述

查看负载 w 命令

 10:15:23 up  1:23,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.100    09:55    5.00s  0.10s  0.00s w
user1    pts/1    192.168.1.101    10:00    15:00  0.05s  0.05s bash
user2    pts/2    192.168.1.102    10:10    1:00   0.02s  0.02s top

在这里插入图片描述

常用示例

  1. 不显示标题行
w -h
  1. 使用简洁格式输出
w -s

示例输出:

root     pts/0    192.168.1.100    09:55    5.00s w
user1    pts/1    192.168.1.101    10:00    15:00 bash
user2    pts/2    192.168.1.102    10:10    1:00  top
  1. 不显示用户登录来源
w -f
  1. 显示 IP 地址
w -i
  1. 查看指定用户的信息
w root
  1. 输出字段说明
    字段 说明
USER	登录用户名。
TTY	用户使用的终端(如 pts/0 表示伪终端)。
FROM	用户登录的来源(IP 地址或主机名)。
LOGIN@	用户登录时间。
IDLE	用户空闲时间(如 5.00s 表示 5 秒)。
JCPU	用户所有进程占用的 CPU 时间。
PCPU	当前进程占用的 CPU 时间。
WHAT	用户当前运行的命令。
  1. 实际应用
  2. 检查当前登录用户
w

查看有哪些用户登录到系统以及他们在做什么。

  1. 监控系统负载
w

关注 load average 字段,了解系统的负载情况。

  1. 查找异常用户
w

检查是否有未知用户登录系统,确保系统安全。

  1. 查看指定用户的活动
w root

查看 root 用户的登录信息和活动。

  1. 总结
    w 是 Linux 中非常实用的用户活动监控工具,通过它可以快速了解当前登录用户及其活动。结合不同的选项,可以满足各种监控需求。掌握 w 的用法,可以帮助你更好地管理系统用户和资源!

查看cpu使用情况

cat /proc/cpuinfo
[root@localhost ~]#  cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 158
model name	: Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
stepping	: 10
cpu MHz		: 2808.002
cache size	: 9216 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 avx2 bmi2 invpcid rdseed clflushopt arat md_clear flush_l1d
bogomips	: 5616.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual
power management:

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

提取特定信息

可以使用 grep 命令提取特定的 CPU 信息。

  1. 查看 CPU 型号
grep "model name" /proc/cpuinfo | uniq
  1. 查看 CPU 核心数
grep -c "^processor" /proc/cpuinfo
  1. 查看 CPU 频率
grep "cpu MHz" /proc/cpuinfo
  1. 查看 CPU 支持的特性
grep "flags" /proc/cpuinfo | uniq
  1. 实际应用
  2. 检查 CPU 型号
grep "model name" /proc/cpuinfo | uniq
  1. 检查 CPU 核心数
grep -c "^processor" /proc/cpuinfo
  1. 检查 CPU 是否支持虚拟化
grep -E "vmx|svm" /proc/cpuinfo

vmx 表示 Intel 的虚拟化技术(VT-x)。
svm 表示 AMD 的虚拟化技术(AMD-V)。

fdisk

fdisk [选项] <磁盘设备>

磁盘设备:如 /dev/sda、/dev/nvme0n1 等。

常用选项

选项说明
-l列出指定磁盘的分区表(不进入交互模式)。
-u显示分区大小时使用扇区数而不是柱面数。
-s<分区> 显示指定分区的大小(以块为单位)。

常用操作

在 fdisk 的交互模式中,可以使用以下命令:

命令说明
m显示帮助菜单。
p打印分区表。
n创建新分区。
d删除分区。
t更改分区类型。
w保存更改并退出。
q不保存更改并退出。
l列出已知的分区类型。
v验证分区表。
示例
  1. 列出磁盘分区表
sudo fdisk -l /dev/sda
 sudo fdisk -l /dev/sda

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a489e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

在这里插入图片描述

Linux 目录结构

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

  1. 根目录 /

1. /bin/sbin
/bin:存放系统的基本命令,所有用户都可以使用。

示例:ls、cp、mv、rm 等。

/sbin:存放系统管理员使用的命令。

示例:fdiskifconfigiptables 等。

  1. /boot
    存放启动 Linux 所需的文件,如:

内核文件:vmlinuz-<版本号>。

引导加载程序:grub。

初始化内存盘:initramfs-<版本号>.img。

  1. /dev
    存放设备文件,每个文件对应一个硬件设备。

示例:

/dev/sda:第一块硬盘。

/dev/tty:终端设备。

/dev/null:空设备(丢弃所有写入的数据)。

  1. /etc
    存放系统的配置文件。

示例:

/etc/passwd:用户账户信息。

/etc/network/interfaces:网络配置。

/etc/fstab:文件系统挂载配置。

  1. /home
    每个普通用户都有一个独立的目录,用于存放个人文件。

示例:/home/username

  1. /lib/lib64
    存放系统的基本共享库文件。

示例:libc.so(C 标准库)。

  1. /media/mnt
    /media:用于挂载可移动设备(如 U 盘、光盘)。

/mnt:用于临时挂载文件系统(如网络共享、外部硬盘)。

  1. /opt
    存放第三方应用程序的安装目录。

示例:/opt/google/chrome

  1. /proc
    虚拟文件系统,提供内核和进程的信息。

示例:

/proc/cpuinfo:CPU 信息。

/proc/meminfo:内存信息。

/proc/<PID>:进程信息。

  1. /root
    超级用户(root)的主目录。

11. /run
存放系统运行时的临时文件。

示例:

/run/pid:进程 ID 文件。

/run/lock:锁文件。

  1. /tmp
    存放临时文件,所有用户都可以访问。

注意:系统重启后,/tmp 目录中的文件可能会被清除。

  1. /usr
    存放用户安装的应用程序和文件。

子目录:

/usr/bin:用户命令。

/usr/lib:共享库文件。

/usr/local:本地安装的软件。

/usr/share:共享数据(如文档、字体等)。

  1. /var
    存放经常变化的文件。

子目录:

/var/log:日志文件。

/var/mail:邮件文件。

/var/lib:数据库文件。

/var/cache:缓存文件。

防火墙

1. iptables 和 firewalld 的关系

1.1 底层技术

iptables:

直接操作 Linux 内核的 Netfilter 框架。

通过命令行配置规则,规则直接生效。

firewalld:

基于 iptables,是对 iptables 的封装和扩展。

通过动态管理规则,支持区域(zone)和服务(service)的概念。

1.2 规则管理

iptables:

规则是静态的,修改后需要手动保存和加载。

规则直接写入内核,立即生效。

firewalld:

规则是动态的,支持运行时修改。

规则通过 D-Bus 接口管理,可以动态应用到内核。

2. iptables 和 firewalld 的区别

特性iptablesfirewalld
配置方式命令行直接配置,语法复杂。通过命令行或配置文件,语法简单。
规则管理静态规则,修改后需手动保存和加载。动态规则,支持运行时修改。
区域和服务不支持区域和服务概念。支持区域和服务,便于管理复杂网络。
持久化需要手动保存规则到文件。规则自动持久化,无需手动保存。
适用场景需要精细控制的场景。需要动态管理和简化配置的场景。

能否同时使用 iptables 和 firewalld?

3.1 不推荐同时使用

冲突风险:

firewalld 是基于 iptables 的,它会动态管理 iptables 规则。

如果同时使用 iptables 直接修改规则,可能会导致规则冲突或覆盖。

管理混乱:

同时使用两种工具会增加配置的复杂性,难以维护和排查问题。

3.2 如何选择

如果需要动态管理和简化配置,使用 firewalld。

如果需要精细控制和直接操作 iptables,使用 iptables。

3.3 切换工具
如果已经安装了 firewalld,但希望使用 iptables,可以按照以下步骤切换:

停止并禁用 firewalld

systemctl stop firewalld
systemctl disable firewalld

安装并启用 iptables

yum install iptables-services -y
systemctl start iptables
systemctl enable iptables

保存 iptables 规则

service iptables save

建议使用 firewalld

firewalld 是一个动态管理防火墙的工具,支持区域(zone)服务(service)的概念。

启动firewalld

启动服务

systemctl start firewalld

立即启动 firewalld 服务。

重启服务

systemctl restart firewalld

重启 firewalld 服务。

查看服务当前状态

systemctl status firewalld

停止服务

systemctl stop firewalld

systemctl start firewalld
systemctl enable firewalld

查看状态

firewall-cmd --state
running

查看所有区域

firewall-cmd --get-zones

查看默认区域

firewall-cmd --get-default-zone

允许服务

firewall-cmd --zone=public --add-service=http --permanent
--zone=public:指定区域为 public。

--add-service=http:允许 HTTP 服务。

--permanent:永久生效。

允许端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent

–add-port=8080/tcp:允许 TCP 端口 8080。

重新加载配置

firewall-cmd --reload

查看当前规则

firewall-cmd --list-all

实例防火墙放行

放行 ssh 和 http

firewall-cmd --zone=public --add-service=ssh --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

放行httpd(apache)

firewall-cmd --zone=public --add-service=ssh --permanent

apache安装配置

安装

yum install httpd

启动

systemctl start httpd

停止

systemctl stop httpd

重启

systemctl restart httpd

查看

systemctl status httpd

开机启动

systemctl enable httpd

基于 Debian/Ubuntu

1.1 在基于 Debian/Ubuntu 的系统上

sudo apt update
sudo apt install apache2

1.2 在基于 CentOS/RHEL 的系统上

sudo yum install httpd

1.3 启动并启用 Apache

sudo systemctl start apache2   # Debian/Ubuntu

开机启动

sudo systemctl enable apache2  # Debian/Ubuntu

访问apache

http://10.0.0.110
  1. 如果无法访问,则先看
netstat -anpl| grep 'http'

说明已经启动了80端口,

[root@localhost ~]# netstat -anpl| grep 'http'
tcp6       0      0 :::80                   :::*                    LISTEN      9660/httpd 
  1. 查看防火墙端口是否放行
 firewall-cmd --zone=public --add-service=http --permanent
success
  1. firewall-cmd --list-all

在这里插入图片描述

配置 Apache

2.1 配置文件位置

Debian/Ubuntu:

主配置文件:/etc/apache2/apache2.conf

站点配置文件:/etc/apache2/sites-available/

启用的站点配置文件:/etc/apache2/sites-enabled/

CentOS/RHEL:

主配置文件:/etc/httpd/conf/httpd.conf

额外配置文件:/etc/httpd/conf.d/

2.2 配置虚拟主机

虚拟主机允许你在同一台服务器上托管多个网站。

创建虚拟主机配置文件
/etc/apache2/sites-available/(Debian/Ubuntu)/etc/httpd/conf.d/(CentOS/RHEL)中创建一个新文件,例如 example.com.conf

sudo vi /etc/apache2/sites-available/example.com.conf

添加以下内容:

apache

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

创建网站根目录:

sudo mkdir -p /var/www/example.com
sudo chown -R $USER:$USER /var/www/example.com
sudo chmod -R 755 /var/www/example.com

启用站点(仅限 Debian/Ubuntu):

sudo a2ensite example.com.conf

重新加载 Apache:

sudo systemctl reload apache2  # Debian/Ubuntu
sudo systemctl reload httpd    # CentOS/RHEL

优化 Apache

3.1 调整性能参数

编辑 Apache 的主配置文件(/etc/apache2/apache2.conf /etc/httpd/conf/httpd.conf),调整以下参数:

示例配置
apache

#最大并发连接数
MaxRequestWorkers 150
# 每个子进程的最大请求数
MaxConnectionsPerChild 10000
# 超时时间
Timeout 60

保持连接

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

3.2 启用压缩
启用 mod_deflate 模块以压缩输出内容,减少带宽使用。

启用模块

sudo a2enmod deflate  # Debian/Ubuntu
sudo systemctl restart apache2 # centos

配置压缩
在配置文件中添加以下内容:

apache

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>

3.3 启用缓存
启用 mod_expiresmod_headers 模块以设置缓存策略。

启用模块

sudo a2enmod expires headers  # Debian/Ubuntu
sudo systemctl restart apache2

配置缓存
在配置文件中添加以下内容:

apache

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

3.4 使用 HTTPS
启用 SSL 模块并配置 HTTPS。

安装 SSL 模块

sudo a2enmod ssl  # Debian/Ubuntu
sudo systemctl restart apache2

配置 HTTPS
获取 SSL 证书(可以使用 Let’s Encrypt)。

在虚拟主机配置中添加以下内容:

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName example.com
    DocumentRoot /var/www/example.com
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
</VirtualHost>

重新加载 Apache:

sudo systemctl reload apache2  # Debian/Ubuntu
sudo systemctl reload httpd    # CentOS/RHEL

配置虚拟主机

1. 进入配置文件目录

cd /etc/httpd

在这里插入图片描述

2. 编辑配置文件

<VirtualHost *:80>
    ServerName www.aliyeye.com
    DocumentRoot /data/www

    <Directory /data/www>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

</VirtualHost>

3. 访问

http://www.aliyeye.com

如果出现502,则很大可能是SELinux 安全模式没被关闭

查看
sestatus

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33
临时关闭
setenforce 0
开启
setenforce 1
完全关闭
 vi /etc/selinux/config
SELINUX=enforcing   # 强制模式
SELINUX=permissive  # 宽容模式
SELINUX=disabled    # 禁用模式

重启系统

reboot

开启伪静态

<Directory "/path/to/your/document_root">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
    # 开启重写引擎
    RewriteEngine On
    # 以下是一些具体的重写规则示例
    # 将 /about.php 重写为 /about
    RewriteRule ^about$ about.php [L]
    # 将 /category.php?id=1 重写为 /category/1
    RewriteRule ^category/([0-9]+)$ category.php?id=$1 [L]
    # 将 /article.php?title=hello-world 重写为 /article/hello-world
    RewriteRule ^article/([a-zA-Z0-9\-]+)$ article.php?title=$1 [L]
</Directory>

Nginx

安装

不能上来直接yum安装,需要先安装 EPEL
在CentOS上安装Nginx可以通过使用EPEL(Extra Packages for Enterprise Linux)仓库来完成。以下是安装Nginx的步骤:

  1. 安装EPEL
yum install epel-release
  1. 安装nginx
yum install nginx
  1. 启动
systemctl start nginx
  1. 开机启动
systemctl enable nginx
  1. 查看状态
systemctl status nginx
  1. 重启
systemctl restart nginx
  1. 重载
    一般使用reload来重新启动nginx,这样不会出现数据丢失问题
systemctl reload nginx
  1. 防火墙放行

伪静态

server {
    listen 80;
    server_name www.aligege.com;

    root /data/www/aligege;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }


    # 其他配置...
}

负载均衡

http {
    upstream backend {
        server 192.168.1.100:80;  # 替换为第一台服务器的IP和端口
        server 192.168.1.101:80;  # 替换为第二台服务器的IP和端口
        server 192.168.1.102:80;  # 替换为第三台服务器的IP和端口
    }

    server {
        listen 80;
        server_name your_domain.com;  # 替换为你的域名

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

配置负载均衡算法(可选)

upstream backend {
    server 192.168.1.100:80 weight=3;
    server 192.168.1.101:80 weight=2;
    server 192.168.1.102:80 weight=1;
}

测试配置

nginx -t

重启 Nginx

 systemctl restart nginx

防火墙放权

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

MySQL

mysql账号:

root
gVJ2#g+7=0xq112233

xxp
Xzqqq@@@333

安装

  1. 查询本机是否存在mariadb
mysql search mariadb

如果mariadb存在,则删除下载最新的源

  1. 下载安装源
https://dev.mysql.com/downloads/repo/yum/

https://repo.mysql.com//mysql84-community-release-el7-1.noarch.rpm
2. 安装mysql服务(安装下载的最新源)

	2.1 本地安装源
```bash
yum install localinstall mysql84-community-release-el7-1.noarch.rpm
2.2 搜索yum以及索引重建
yum search mysql

在这里插入图片描述

2.3. 	安装mysql
yum install mysql-community-server.x86_64

  1. 默认密码存放处
cat /var/log/mysqld.log |grep " password"

在这里插入图片描述

服务器的启动,查看 ,重启,关闭

# 服务启动
systemctl start mysqld

# 服务器状态
systemctl status mysqld

# 服务开机启动
systemctl enable mysqld
# 服务停止
systemctl stop mysqld
# 服务重启
systemctl restart mysqld

mysql扩展知识

开启mysql genelog

新用户创建以及赋予权限

客户端的链接

  1. 命令行登录
 mysql -uroot -p # 回车输入密码

# 如果提示让你重新设置密码
show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果你安装的mysql 版本大于5.7,则修改密码

set PASSWORD = 'gVJ2#g+7=0xq112233';

mysql版本小于5.7

set PASSWORD = PASSWORD('gVJ2#g+7=0xq112233');
  1. sqlyog
  2. nacicat
在这里插入代码片

配置远程连接

在这里插入代码片
  1. heidiSQL
  2. Sequal pro
  3. phpMyadmin

开启远程链接

开启远程链接

设置默认账户root开启远程访问权限,当然,你可以自己建立一个独立的号来

0. 编辑/etc/my.cnf

编辑/etc/my.cnf,修改bind-address0.0.0.0

1.给Host 给%,表示任意主机访问

update user set Host='%' where Host='localhost' and 'root';
select Host,User from user \G;
*************************** 1. row ***************************
Host: %
User: root
*************************** 2. row ***************************
Host: localhost
User: mysql.infoschema
*************************** 3. row ***************************
Host: localhost
User: mysql.session
*************************** 4. row ***************************
Host: localhost
User: mysql.sys
4 rows in set (0.00 sec)

2. 刷新权限

  1. 推出sql,重新进来
  2. flush privileges
flush privileges

3. 防火墙放行mysql

如果防火墙里有mysql的服务
firewall-cmd --get-services

在这里插入图片描述

sudo firewall-cmd --add-service=mysql--permanent

如果没有这个服务,则需要开放端口策略

重启防火墙

添加MySQL端口规则
firewall-cmd --add-port=3306/tcp --permanent

重启防火墙

创建新用户

语句中的*.* == 库名.表名

创建xp用户

CREATE 
USER 'remoteuser'@'%' 
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

赋予权限

CREATE USER 'xp'@'%' IDENTIFIED BY 'Xzqqq@@@333';
GRANT ALL PRIVILEGES ON *.* TO 'xp'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

只给查询权限

给所有表查询权利

GRANT SELECT ON *.* TO 'xp'@'%' WITH GRANT OPTION;
GRANT SELECT,insert,update,delete ON *.* TO 'xp'@'%' WITH GRANT OPTION;

只给特定的库增删改查权限
GRANT SELECT,insert,update,delete ON shop.* TO 'xp'@'%' WITH GRANT OPTION;


收回权限

REVOKE ALL PRIVILEGES  ON *.*  FROM xp@'%'; 

如果报错如下:

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

则需要下面的操作

MySQL8版本中新增了一个system_user帐户类型,由于root用户没有SYSTEM_USER权限,导致错误出现。

 grant system_user on *.*  to 'root';
 flush privileges;

实战

安装php网站运行环境

确认php所需要的版本

yum list installed |grep php

如果已有php不相符的版本,则删除相应的文件

yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 
yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 phpIdap.x86_64 php-mbstring.x86-64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64

配置源


rpm -Uvh http://mirror.webtatic.com/yum/el7/epel-release.rpm

rpm -Uvh http://mirror.webtatic.com/yum/el7/webtatic-release.rpm

开始安装

以php5.6为例

yum install php5.6w-fpm

安装完成后校验是否存在

php启动

systemctl status php56w
systemctl start php56w
systemctl restart php56w
systemctl stop php56w

php的基础扩展

 yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64

查看版本

php -v
;