下载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
- 编辑
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
-
修改完上面的内容,重启网络systemctl restart network
-
查看
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链接
- 查看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 配置(高阶)
- 进入ssh目录 cd ~/.ssh/
- 查看是否有config文件,没有则 touch config创建
3. 在配置文件 config 里配置如下
host "myssh"
HostName 10.0.0.110
User root
Port 22
- 登录测试
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
- 安装
yum install wget
- 搜索
yum search wget
- 卸载
yum remove wget
- 查看已下载的软件
yum list
yum list installed
- 查看详细信息
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
常用示例
- 不显示标题行
w -h
- 使用简洁格式输出
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
- 不显示用户登录来源
w -f
- 显示 IP 地址
w -i
- 查看指定用户的信息
w root
- 输出字段说明
字段 说明
USER 登录用户名。
TTY 用户使用的终端(如 pts/0 表示伪终端)。
FROM 用户登录的来源(IP 地址或主机名)。
LOGIN@ 用户登录时间。
IDLE 用户空闲时间(如 5.00s 表示 5 秒)。
JCPU 用户所有进程占用的 CPU 时间。
PCPU 当前进程占用的 CPU 时间。
WHAT 用户当前运行的命令。
- 实际应用
- 检查当前登录用户
w
查看有哪些用户登录到系统以及他们在做什么。
- 监控系统负载
w
关注 load average 字段,了解系统的负载情况。
- 查找异常用户
w
检查是否有未知用户登录系统,确保系统安全。
- 查看指定用户的活动
w root
查看 root 用户的登录信息和活动。
- 总结
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 信息。
- 查看 CPU 型号
grep "model name" /proc/cpuinfo | uniq
- 查看 CPU 核心数
grep -c "^processor" /proc/cpuinfo
- 查看 CPU 频率
grep "cpu MHz" /proc/cpuinfo
- 查看 CPU 支持的特性
grep "flags" /proc/cpuinfo | uniq
- 实际应用
- 检查 CPU 型号
grep "model name" /proc/cpuinfo | uniq
- 检查 CPU 核心数
grep -c "^processor" /proc/cpuinfo
- 检查 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 | 验证分区表。 |
示例
- 列出磁盘分区表
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. /bin
和 /sbin
/bin
:存放系统的基本命令,所有用户都可以使用。
示例:ls、cp、mv、rm
等。
/sbin
:存放系统管理员使用的命令。
示例:fdisk
、ifconfig
、iptables
等。
/boot
存放启动 Linux 所需的文件,如:
内核文件:vmlinuz-<版本号>。
引导加载程序:grub。
初始化内存盘:initramfs-<版本号>.img。
/dev
存放设备文件,每个文件对应一个硬件设备。
示例:
/dev/sda
:第一块硬盘。
/dev/tty
:终端设备。
/dev/null
:空设备(丢弃所有写入的数据)。
/etc
存放系统的配置文件。
示例:
/etc/passwd
:用户账户信息。
/etc/network/interfaces
:网络配置。
/etc/fstab
:文件系统挂载配置。
/home
每个普通用户都有一个独立的目录,用于存放个人文件。
示例:/home/username
。
/lib
和/lib64
存放系统的基本共享库文件。
示例:libc.so
(C 标准库)。
/media
和/mnt
/media
:用于挂载可移动设备(如 U 盘、光盘)。
/mnt
:用于临时挂载文件系统(如网络共享、外部硬盘)。
/opt
存放第三方应用程序的安装目录。
示例:/opt/google/chrome
。
/proc
虚拟文件系统,提供内核和进程的信息。
示例:
/proc/cpuinfo
:CPU 信息。
/proc/meminfo
:内存信息。
/proc/<PID>
:进程信息。
/root
超级用户(root)的主目录。
11. /run
存放系统运行时的临时文件。
示例:
/run/pid
:进程 ID 文件。
/run/lock
:锁文件。
/tmp
存放临时文件,所有用户都可以访问。
注意:系统重启后,/tmp
目录中的文件可能会被清除。
/usr
存放用户安装的应用程序和文件。
子目录:
/usr/bin
:用户命令。
/usr/lib
:共享库文件。
/usr/local
:本地安装的软件。
/usr/share
:共享数据(如文档、字体等)。
/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 的区别
特性 | iptables | firewalld |
---|---|---|
配置方式 | 命令行直接配置,语法复杂。 | 通过命令行或配置文件,语法简单。 |
规则管理 | 静态规则,修改后需手动保存和加载。 | 动态规则,支持运行时修改。 |
区域和服务 | 不支持区域和服务概念。 | 支持区域和服务,便于管理复杂网络。 |
持久化 | 需要手动保存规则到文件。 | 规则自动持久化,无需手动保存。 |
适用场景 | 需要精细控制的场景。 | 需要动态管理和简化配置的场景。 |
能否同时使用 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
- 如果无法访问,则先看
netstat -anpl| grep 'http'
说明已经启动了80端口,
[root@localhost ~]# netstat -anpl| grep 'http'
tcp6 0 0 :::80 :::* LISTEN 9660/httpd
- 查看防火墙端口是否放行
firewall-cmd --zone=public --add-service=http --permanent
success
- 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_expires
和 mod_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的步骤:
- 安装EPEL
yum install epel-release
- 安装nginx
yum install nginx
- 启动
systemctl start nginx
- 开机启动
systemctl enable nginx
- 查看状态
systemctl status nginx
- 重启
systemctl restart nginx
- 重载
一般使用reload来重新启动nginx,这样不会出现数据丢失问题
systemctl reload nginx
- 防火墙放行
伪静态
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
安装
- 查询本机是否存在mariadb
mysql search mariadb
如果mariadb存在,则删除下载最新的源
- 下载安装源
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
- 默认密码存放处
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
新用户创建以及赋予权限
客户端的链接
- 命令行登录
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');
- sqlyog
- nacicat
在这里插入代码片
配置远程连接
在这里插入代码片
- heidiSQL
- Sequal pro
- phpMyadmin
开启远程链接
开启远程链接
设置默认账户root开启远程访问权限,当然,你可以自己建立一个独立的号来
0. 编辑/etc/my.cnf
编辑/etc/my.cnf
,修改bind-address
为0.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. 刷新权限
- 推出sql,重新进来
- 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