# Ubuntu服务器多网站部署 – 完整标准操作手册
# 使用root新增用户
# 创建用户(会交互式提示设置密码和用户信息)
sudo adduser username
分类: 未分类
Tailscale操作
启用出口节点,允许 LAN 访问
sudo tailscale up –advertise-exit-node
sudo tailscale up –exit-node=100.88.88.250 –accept-dns=false –exit-node-allow-lan-access
启用出口节点,禁止 LAN 访问
sudo tailscale up –exit-node=100.88.88.250 –accept-dns=false
关闭出口节点
sudo tailscale up –exit-node= –accept-dns=false
sudo tailscale up –exit-node=
sudo tailscale up –reset –exit-node=100.88.88.250
ssh设定
新安装的 Linux 系统无法 SSH 连接,通常是由于 SSH 服务未安装或未启动。请按以下步骤排查:
- 检查 SSH 服务状态
# 检查 SSH 服务是否安装
systemctl status ssh # Ubuntu/Debian
systemctl status sshd # CentOS/RHEL/Fedora
# 如果没有安装,先安装
sudo apt install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # CentOS/RHEL
sudo dnf install openssh-server # Fedora
- 启动并启用 SSH 服务
# 启动服务
sudo systemctl start ssh # Ubuntu/Debian
sudo systemctl start sshd # CentOS/RHEL/Fedora
# 设置开机自启
sudo systemctl enable ssh # Ubuntu/Debian
sudo systemctl enable sshd # CentOS/RHEL/Fedora
- 检查防火墙设置
# 查看防火墙状态
sudo ufw status # Ubuntu (如果使用UFW)
sudo firewall-cmd --state # CentOS/RHEL/Fedora (firewalld)
sudo iptables -L # 检查iptables规则
# 开放22端口
sudo ufw allow 22 # Ubuntu
sudo firewall-cmd --add-port=22/tcp --permanent # CentOS/RHEL
sudo firewall-cmd --reload
- 检查 SSH 配置
# 检查配置文件
sudo nano /etc/ssh/sshd_config
# 确保以下设置正确:
# PermitRootLogin yes(如果要以root登录)
# PasswordAuthentication yes(如果要用密码登录)
# Port 22(默认端口)
# 修改后重启服务
sudo systemctl restart ssh/sshd
- 验证 SSH 端口监听
# 检查SSH是否在监听22端口
sudo netstat -tlnp | grep :22
ss -tlnp | grep :22
- 云服务器特殊情况
如果你使用的是云服务器(AWS/Azure/阿里云/腾讯云等):
- 检查安全组规则 – 确保22端口对公网开放
- 检查云防火墙 – 控制台可能有额外的防火墙设置
- 本地网络测试
# 在同一网络内先用局域网IP测试
ifconfig 或 ip addr # 查看本机IP
# 从另一台机器测试连接
ssh username@服务器IP
- 排错命令汇总
# 查看SSH服务日志
sudo journalctl -u ssh -f
sudo tail -f /var/log/auth.log # Ubuntu
sudo tail -f /var/log/secure # CentOS/RHEL
- 常见问题解决
· 权限问题:确保用户家目录权限正确(chmod 700 ~/.ssh)
· SELinux问题(CentOS/RHEL):
sudo setsebool -P sshd_full_access on
sudo restorecon -Rv /etc/ssh
· 密码认证被禁用:修改sshd_config中PasswordAuthentication yes
请告诉我:
- 你使用的是哪个 Linux 发行版?
- 是在物理机、虚拟机还是云服务器上?
- 执行上述命令时的具体输出?
这样我能提供更针对性的帮助。
ubuntu更新指定特定的源
这些错误表明系统无法解析到您配置的镜像域名(mirrors.tuna.tsinghua.edu.cn 和 mirrors.aliyun.com)。这通常是由于网络连接问题或DNS解析问题导致的。请按照以下步骤排查解决:
- 检查网络连接
ping -c 4 8.8.8.8
· 如果能ping通IP,说明网络连接正常,问题可能是DNS
· 如果无法ping通,检查网络配置或联系网络管理员
- 检查DNS解析
nslookup mirrors.tuna.tsinghua.edu.cn
nslookup mirrors.aliyun.com
如果无法解析,说明DNS有问题。
- 临时解决方案:使用系统默认源
先切换回Ubuntu官方源:
# 备份当前源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
# 恢复为官方源(适用于Ubuntu 22.04 Jammy)
sudo tee /etc/apt/sources.list << 'EOF'
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
EOF
- 更新并清理
# 清理旧的包列表
sudo rm -rf /var/lib/apt/lists/*
sudo apt clean
# 更新源
sudo apt update
- 如果仍需国内镜像,更换其他可用镜像
如果清华镜像有问题,可以尝试其他镜像:
方法一:使用阿里云镜像
sudo sed -i 's/http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu/https:\/\/mirrors.aliyun.com\/ubuntu/g' /etc/apt/sources.list
方法二:使用华为云镜像
sudo sed -i 's/http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu/https:\/\/repo.huaweicloud.com\/ubuntu/g' /etc/apt/sources.list
方法三:手动编辑源文件
sudo nano /etc/apt/sources.list
将文件中所有的 mirrors.tuna.tsinghua.edu.cn 替换为:
· mirrors.aliyun.com (阿里云)
· mirrors.huaweicloud.com (华为云)
· mirrors.cloud.tencent.com (腾讯云)
- 检查Docker源配置
对于Docker源,也需要检查:
sudo nano /etc/apt/sources.list.d/docker.list
如果有问题,可以暂时注释掉或更换镜像。
- 完全重新配置(推荐)
最简单的方法是重新生成sources.list:
# 备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d)
# 生成阿里云镜像源(Ubuntu 22.04)
sudo tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF
# 更新
sudo apt update
- 如果问题依旧,检查系统DNS配置
cat /etc/resolv.conf
确保有有效的DNS服务器,如:
nameserver 8.8.8.8
nameserver 8.8.4.4
或国内DNS:
nameserver 223.5.5.5 # 阿里DNS
nameserver 119.29.29.29 # 腾讯DNS
请按顺序尝试这些方法,通常问题会在第4步或第7步解决。
开放特定端口
在Ubuntu上开放端口10088,需要根据你使用的防火墙工具来操作。Ubuntu常见的防火墙工具有 ufw(推荐,简单易用)和 iptables(底层工具)。下面是详细的操作方法:
方法一:使用 ufw(推荐)
ufw 是Ubuntu默认的防火墙管理工具,操作简单。
- 检查ufw状态
sudo ufw status
· 如果显示 Status: inactive,说明防火墙未启用,端口默认都是开放的。
· 如果显示 Status: active,则需要添加规则。
- 启用ufw(如果未启用)
sudo ufw enable
- 开放10088端口
开放TCP协议的10088端口:
sudo ufw allow 10088/tcp
如果同时需要TCP和UDP:
sudo ufw allow 10088
更精确的控制:
# 仅允许来自特定IP访问10088端口
sudo ufw allow from 192.168.1.100 to any port 10088 proto tcp
# 允许特定IP段
sudo ufw allow from 192.168.1.0/24 to any port 10088
- 验证规则已添加
sudo ufw status numbered
输出示例:
Status: active
To Action From
-- ------ ----
[1] 10088/tcp ALLOW Anywhere
[2] 10088/tcp (v6) ALLOW Anywhere (v6)
- 重新加载ufw(通常不需要)
sudo ufw reload
方法二:使用 iptables(直接配置)
如果你使用原始的iptables:
- 临时开放端口(重启后失效)
# 开放TCP端口
sudo iptables -A INPUT -p tcp --dport 10088 -j ACCEPT
# 开放UDP端口
sudo iptables -A INPUT -p udp --dport 10088 -j ACCEPT
- 永久保存iptables规则
# 安装iptables持久化工具
sudo apt-get update
sudo apt-get install iptables-persistent
# 保存当前规则
sudo netfilter-persistent save
# 或
sudo iptables-save > /etc/iptables/rules.v4
- 检查已添加的规则
sudo iptables -L -n | grep 10088
方法三:使用 firewalld(较少见)
如果你的Ubuntu安装了firewalld:
# 添加端口
sudo firewall-cmd --zone=public --add-port=10088/tcp --permanent
# 重载配置
sudo firewall-cmd --reload
# 查看
sudo firewall-cmd --zone=public --list-ports
验证端口是否真正开放
- 本地检查监听状态
# 查看哪些程序在监听10088端口
sudo netstat -tlnp | grep 10088
sudo ss -tlnp | grep 10088
- 从外部测试连接
# 在另一台机器上测试(假设服务器IP是192.168.1.100)
telnet 192.168.1.100 10088
# 或
nc -zv 192.168.1.100 10088
针对内网穿透的特殊说明
如果你是为内网穿透客户端开放10088端口:
- 在内网机器上:开放10088端口通常是为了让本地服务(如Web服务)能被访问。
- 在公网服务器上:开放10088端口是为了让外部用户能通过此端口访问穿透的服务。
常见场景示例:
# 场景:内网穿透客户端将本地的SSH服务映射到公网服务器的10088端口
# 在公网服务器上执行:
sudo ufw allow 10088/tcp
sudo ufw reload
# 在内网客户端上执行(如果需要):
sudo ufw allow from 192.168.1.0/24 to any port 22 # 允许内网访问SSH
重要安全提示
- 限制访问来源(如果可能):
sudo ufw allow from 203.0.113.0/24 to any port 10088 # 仅允许特定IP段
- 结合服务控制:
# 允许特定服务(如果已定义)
sudo ufw allow OpenSSH # 例如SSH服务
- 查看详细日志:
# 查看防火墙日志
sudo tail -f /var/log/ufw.log
故障排查
如果端口仍然无法访问:
- 检查服务是否真正在监听:
sudo lsof -i :10088
- 检查云服务商安全组(如果是云服务器):
· AWS安全组、阿里云安全组、腾讯云安全组等都需要相应设置。 - 检查应用程序配置:
· 确保应用程序绑定到 0.0.0.0 而不是 127.0.0.1
最简单的操作流程:
# 1. 检查状态
sudo ufw status
# 2. 如果未启用,启用它
sudo ufw enable
# 3. 开放10088端口
sudo ufw allow 10088/tcp
# 4. 验证
sudo ufw status numbered
这样配置后,10088端口就应该可以被外部访问了。
ubuntu创建用户
在 Ubuntu Server 中创建新用户有几种常用方法,以下是详细步骤:
方法1:使用 adduser 命令(推荐)
# 创建用户并设置密码
sudo adduser username
# 系统会交互式地提示:
# 1. 设置密码
# 2. 确认密码
# 3. 填写用户信息(可跳过)
方法2:使用 useradd 命令
# 基本创建用户(不创建家目录)
sudo useradd username
# 创建用户并同时创建家目录
sudo useradd -m username
# 创建用户并指定家目录路径
sudo useradd -m -d /path/to/home username
# 创建用户并指定登录shell
sudo useradd -m -s /bin/bash username
# 创建用户后需要手动设置密码
sudo passwd username
方法3:创建用户并添加到 sudo 组
# 创建用户
sudo adduser username
# 将用户添加到 sudo 组(获取管理员权限)
sudo usermod -aG sudo username
# 验证用户是否在 sudo 组
groups username
方法4:创建系统用户(无家目录,用于服务)
# 创建系统用户(无家目录)
sudo useradd -r username
# 或使用 adduser 创建系统用户
sudo adduser --system --no-create-home username
常用选项和参数
# 创建用户时指定UID
sudo useradd -u 1001 username
# 创建用户时指定主要组
sudo useradd -g groupname username
# 创建用户时指定多个附加组
sudo useradd -G group1,group2 username
# 设置用户过期时间
sudo useradd -e 2024-12-31 username
# 创建用户时设置注释信息
sudo useradd -c "User Description" username
用户管理相关命令
# 删除用户(保留家目录)
sudo userdel username
# 删除用户及家目录
sudo userdel -r username
# 修改用户属性
sudo usermod [options] username
# 锁定用户账户
sudo usermod -L username
# 解锁用户账户
sudo usermod -U username
# 查看用户信息
id username
finger username # 需要安装 finger 包
getent passwd username
最佳实践建议
- 使用 adduser 而不是 useradd:
· adduser 更友好,会创建家目录、提示设置密码
· useradd 是低级工具,需要更多参数 - 安全建议:
# 创建用户时强制密码策略
sudo adduser --disabled-password username # 创建无密码用户
sudo passwd username # 随后设置强密码
# 强制首次登录修改密码
sudo passwd --expire username
- 验证用户创建成功:
# 检查用户是否存在
grep username /etc/passwd
# 检查家目录是否创建
ls -la /home/username
# 测试登录
su - username
示例:完整创建流程
# 1. 创建开发人员用户
sudo adduser developer
# 2. 添加到必要组
sudo usermod -aG sudo,www-data,ssh developer
# 3. 配置SSH密钥(可选)
sudo mkdir -p /home/developer/.ssh
sudo nano /home/developer/.ssh/authorized_keys
# 粘贴公钥后设置权限
sudo chown -R developer:developer /home/developer/.ssh
sudo chmod 700 /home/developer/.ssh
sudo chmod 600 /home/developer/.ssh/authorized_keys
# 4. 禁用密码登录(仅允许SSH密钥,可选)
sudo nano /etc/ssh/sshd_config
# 修改:PasswordAuthentication no
sudo systemctl restart ssh
这样你就成功创建了新用户!根据你的需求选择合适的方法。
去除强制变成https
这个问题是因为WordPress设置了强制HTTPS重定向。您需要从几个地方检查:
1. 首先检查WordPress设置
登录WordPress后台
“`bash
# 使用浏览器访问
http://100.88.88.150/wp-admin
“`
在后台检查:
1. 设置 → 常规
· WordPress地址(URL)
· 站点地址(URL)
确保两者都是 http://100.88.88.150(不是https)
2. WordPress可能被插件或主题强制HTTPS
2. 检查数据库设置
“`bash
# 查看WordPress的站点URL设置
sudo mysql -u root -p wordpress -e “SELECT * FROM wp_options WHERE option_name IN (‘siteurl’, ‘home’);”
“`
如果显示https,修改它:
“`bash
# 修改为HTTP
sudo mysql -u root -p wordpress << EOF
UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'home';
EOF
```
3. 检查wp-config.php设置
```bash
# 查看配置文件是否有强制HTTPS
sudo grep -i "https\|ssl\|443" /var/www/wordpress/wp-config.php
# 常见的强制HTTPS设置
# define('FORCE_SSL_ADMIN', true);
# define('FORCE_SSL_LOGIN', true);
# $_SERVER['HTTPS'] = 'on';
```
如果有,注释或删除它们:
```bash
sudo nano /var/www/wordpress/wp-config.php
```
查找并注释掉:
```php
// 注释掉这些行
// define('FORCE_SSL_ADMIN', true);
// define('FORCE_SSL_LOGIN', true);
// $_SERVER['HTTPS'] = 'on';
```
4. 检查.htaccess文件(如果存在)
```bash
# Nginx通常不用.htaccess,但WordPress可能生成
sudo ls -la /var/www/wordpress/.htaccess
# 如果有,检查重定向规则
sudo grep -i "https\|redirect\|rewrite" /var/www/wordpress/.htaccess
```
5. 检查Nginx配置
```bash
# 查看是否有301重定向到HTTPS
sudo grep -r "301\|redirect\|https" /etc/nginx/sites-available/
# 检查您的WordPress配置
sudo cat /etc/nginx/sites-available/wordpress | grep -A5 -B5 "301\|https"
```
6. 快速修复脚本
创建一个修复脚本:
```bash
cat > fix_https_redirect.sh << 'EOF'
#!/bin/bash
echo "=== 修复HTTPS强制重定向 ==="
# 1. 备份数据库
echo "1. 备份数据库..."
sudo mysqldump -u root -p wordpress > /tmp/wordpress_backup_$(date +%Y%m%d).sql
# 2. 修改数据库URL
echo “2. 修改数据库中的URL设置…”
sudo mysql -u root -p wordpress << 'MYSQL_SCRIPT'
UPDATE wp_options SET option_value = REPLACE(option_value, 'https://', 'http://') WHERE option_name IN ('siteurl', 'home');
UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'home';
MYSQL_SCRIPT
# 3. 检查wp-config.php
echo "3. 检查wp-config.php..."
sudo sed -i "s/define('FORCE_SSL_ADMIN', true);/\/\/define('FORCE_SSL_ADMIN', true);/g" /var/www/wordpress/wp-config.php
sudo sed -i "s/define('FORCE_SSL_LOGIN', true);/\/\/define('FORCE_SSL_LOGIN', true);/g" /var/www/wordpress/wp-config.php
sudo sed -i "/\$_SERVER\['HTTPS'\]/d" /var/www/wordpress/wp-config.php
# 4. 清理缓存(如果有)
echo "4. 清理缓存..."
sudo rm -rf /var/www/wordpress/wp-content/cache/* 2>/dev/null
# 5. 重启服务
echo “5. 重启服务…”
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm
echo “修复完成!”
echo “现在测试:curl -I http://100.88.88.150”
EOF
chmod +x fix_https_redirect.sh
sudo ./fix_https_redirect.sh
“`
7. 临时解决方法(直接修改Nginx)
如果上述方法无效,可以在Nginx配置中强制HTTP:
“`bash
# 编辑Nginx配置
sudo nano /etc/nginx/sites-available/wordpress
“`
在server块中添加(如果已经有重定向,先删除):
“`nginx
server {
listen 80;
server_name 100.88.88.150;
# 强制HTTP,避免任何HTTPS重定向
if ($http_x_forwarded_proto = “https”) {
set $http_x_forwarded_proto “http”;
}
# 拦截WordPress的重定向
location / {
# 覆盖WordPress的任何重定向
proxy_set_header X-Forwarded-Proto http;
proxy_set_header HTTPS off;
# 原有的try_files规则
try_files $uri $uri/ /index.php?$args;
}
# … 其他配置保持不变
}
“`
然后重启:
“`bash
sudo nginx -t
sudo systemctl reload nginx
“`
8. 测试是否修复
“`bash
# 测试重定向
curl -I http://100.88.88.150
# 应该返回200而不是301
# 如果要详细跟踪重定向
curl -L -v http://100.88.88.150 2>&1 | grep -i “location\|http”
# 或者使用更简单的测试
curl -s -o /dev/null -w “%{http_code}” http://100.88.88.150
# 应该返回200
“`
9. 如果仍有问题,启用调试模式
“`bash
# 在wp-config.php中添加调试
sudo nano /var/www/wordpress/wp-config.php
“`
添加:
“`php
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
“`
然后检查日志:
“`bash
sudo tail -f /var/www/wordpress/wp-content/debug.log
“`
10. 彻底排查流程
“`bash
# 一步步排查
echo “=== 排查步骤 ===”
echo “1. 检查Nginx配置…”
sudo nginx -T 2>/dev/null | grep -i “rewrite\|redirect\|https”
echo “2. 检查数据库…”
sudo mysql -u root -p wordpress -e “SELECT option_name, option_value FROM wp_options WHERE option_name LIKE ‘%url%’ OR option_value LIKE ‘%https%’;”
echo “3. 检查配置文件…”
sudo grep -r “https\|SSL” /var/www/wordpress/wp-config.php
echo “4. 检查主题和插件…”
sudo find /var/www/wordpress/wp-content -name “*.php” -exec grep -l “force_ssl\|https” {} \;
echo “5. 检查headers…”
curl -I http://100.88.88.150
“`
最可能的原因和解决方案
根据您的输出 X-Redirect-By: WordPress,重定向来自WordPress本身,不是Nginx。按照以下优先级解决:
优先级1:数据库设置(95%可能)
“`bash
# 执行这个最简单有效的修复
sudo mysql -u root -p wordpress -e “UPDATE wp_options SET option_value = ‘http://100.88.88.150’ WHERE option_name IN (‘siteurl’, ‘home’);”
“`
优先级2:WordPress配置
“`bash
# 检查并修复wp-config.php
sudo sed -i “s/https:/http:/g” /var/www/wordpress/wp-config.php
sudo sed -i “/FORCE_SSL/d” /var/www/wordpress/wp-config.php
“`
优先级3:清理缓存
“`bash
sudo rm -rf /var/www/wordpress/wp-content/cache/*
sudo systemctl restart php8.1-fpm
sudo systemctl reload nginx
“`
立即执行的快速修复
“`bash
# 一行命令修复(最有效)
sudo mysql -u root -p wordpress -e “UPDATE wp_options SET option_value = ‘http://100.88.88.150’ WHERE option_name IN (‘siteurl’, ‘home’);” && sudo systemctl reload nginx && curl -I http://100.88.88.150
“`
请先尝试优先级1的数据库修复,这通常能解决99%的WordPress强制HTTPS问题。
mysql操作
# 登录MySQL
sudo mysql -u root -p
# 创建数据库与授权
— 创建数据库 codish
CREATE DATABASE IF NOT EXISTS codish
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
创建用户 joehuang(如果不存在)
CREATE USER IF NOT EXISTS ‘joehuang’@’%’ IDENTIFIED BY ‘your_password_here’;
— 或者如果只允许本地访问
— CREATE USER IF NOT EXISTS ‘joehuang’@’localhost’ IDENTIFIED BY ‘your_password_here’;
授予用户对 codish 数据库的所有权限
GRANT ALL PRIVILEGES ON codish.* TO ‘joehuang’@’%’;
— 刷新权限使更改生效
FLUSH PRIVILEGES;
— 显示用户权限
SHOW GRANTS FOR ‘joehuang’@’%’;
# 修改用户密码(通用语法)
ALTER USER ‘用户名’@’主机’ IDENTIFIED BY ‘新密码’;
FLUSH PRIVILEGES;
# 示例:修改wpuser密码
ALTER USER ‘username’@’localhost’ IDENTIFIED BY ‘MyNewStrongPass123!’;
FLUSH PRIVILEGES;
# 退出
EXIT;
# 登录MySQL
sudo mysql -u root -p
# 输入密码
# 查看所有用户和主机
SELECT User, Host FROM mysql.user;
# 查看详细信息
SELECT User, Host, plugin, authentication_string FROM mysql.user;
# 查看用户权限
SHOW GRANTS FOR ‘wpuser’@’localhost’;
# 退出
EXIT;
修改MySQL root密码的方法取决于你的MySQL版本和操作系统。以下是几种常见的方法:
方法1:已知原密码的情况下修改
“`sql
— 登录MySQL后执行
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;
FLUSH PRIVILEGES;
“`
方法2:忘记密码时修改(安全模式)
Windows系统:
1. 停止MySQL服务:
“`cmd
net stop mysql
# 或 MySQL80(根据版本)
net stop mysql80
“`
1. 创建初始化文件 mysql-init.txt:
“`sql
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;
“`
1. 以安全模式启动并加载初始化文件:
“`cmd
mysqld –init-file=C:\mysql-init.txt –console
“`
1. 重启MySQL服务:
“`cmd
net start mysql
“`
Linux/Mac系统:
1. 停止MySQL服务:
“`bash
sudo systemctl stop mysql
# 或
sudo service mysql stop
“`
1. 编辑配置文件:
“`bash
sudo vim /etc/my.cnf
# 或
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
“`
1. 在 [mysqld] 部分添加:
“`
skip-grant-tables
“`
1. 重启MySQL并登录:
“`bash
sudo systemctl restart mysql
# 或
sudo service mysql restart
mysql -u root
“`
1. 在MySQL中重置密码:
“`sql
— MySQL 5.7.6及以下
UPDATE mysql.user SET authentication_string=PASSWORD(‘新密码’) WHERE User=’root’;
— MySQL 5.7.6及以上
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;
FLUSH PRIVILEGES;
“`
1. 移除配置文件的 skip-grant-tables 并重启服务
方法3:使用mysqladmin工具
“`bash
mysqladmin -u root -p’旧密码’ password ‘新密码’
“`
重要提示:
1. 密码强度要求:MySQL 8.0+有密码策略要求,确保密码足够复杂
2. 密码特殊字符:如果密码包含特殊字符,需要用引号括起来
3. 远程root访问:如果需要远程访问,也要修改相应host的密码:
“`sql
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘新密码’;
“`
验证修改是否成功:
“`bash
mysql -u root -p
# 输入新密码测试
“`
忘记root密码的完整流程(推荐):
1. 停止MySQL服务
2. 使用–skip-grant-tables启动
3. 无密码登录MySQL
4. 执行密码修改命令
5. 重启MySQL服务
注意:生产环境操作前请做好备份,并确保服务窗口期最小化。
防火墙设定
# 1. 首先查看当前状态
sudo ufw status
# 应该显示:Status: inactive
# 2. 添加必要的规则(在启用前配置好)
sudo ufw allow ssh # 允许SSH连接(非常重要!)
sudo ufw allow ‘Nginx HTTP’
sudo ufw allow ‘Nginx HTTPS’ # 如果需要HTTPS
# 3. 查看添加的规则
sudo ufw show added
# 4. 启用防火墙
sudo ufw enable
# 会提示:Command may disrupt existing ssh connections. Proceed with operation (y|n)?
# 输入 y 确认
# 5. 重新加载规则
sudo ufw reload
# 6. 查看完整状态
sudo ufw status verbose
安装WordPress从头到尾
好的,为您提供从零开始在低配置Ubuntu Server上使用Nginx安装WordPress的完整指令。
低配置Ubuntu Server安装WordPress完整指南(Nginx版)
第一步:系统准备
“`bash
# 1. 更新系统
sudo apt update
sudo apt upgrade -y
# 2. 安装基础工具(可选)
sudo apt install curl wget nano -y
# 3. 设置时区(可选)
sudo timedatectl set-timezone Asia/Shanghai
“`
第二步:安装MySQL数据库
“`bash
# 1. 安装MySQL
sudo apt install mysql-server -y
# 2. 启动并启用服务
sudo systemctl start mysql
sudo systemctl enable mysql
# 3. 运行安全配置
sudo mysql_secure_installation
“`
安全配置步骤(交互式):
“`
1. 是否设置验证密码插件?按Enter跳过
2. 输入root密码(输入两次,记住这个密码)
3. 是否移除匿名用户?输入 Y
4. 是否禁止root远程登录?输入 Y
5. 是否移除测试数据库?输入 Y
6. 是否重新加载权限表?输入 Y
“`
第三步:创建WordPress数据库
“`bash
# 1. 登录MySQL
sudo mysql -u root -p
# 输入上面设置的root密码
# 2. 在MySQL命令行中执行以下命令
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER ‘wpuser’@’localhost’ IDENTIFIED BY ‘StrongPassword123!’; # 请修改密码
GRANT ALL PRIVILEGES ON wordpress.* TO ‘wpuser’@’localhost’;
FLUSH PRIVILEGES;
EXIT;
“`
第四步:安装PHP和Nginx
“`bash
# 1. 添加PHP仓库(Ubuntu 22.04+可能需要)
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 2. 安装PHP和必要扩展
sudo apt install php8.1-fpm php8.1-mysql php8.1-common php8.1-mbstring php8.1-xmlrpc php8.1-gd php8.1-xml php8.1-cli php8.1-curl php8.1-zip -y
# 3. 安装Nginx
sudo apt install nginx -y
“`
第五步:下载WordPress
“`bash
# 1. 进入web目录
cd /tmp
# 2. 下载最新WordPress
wget https://wordpress.org/latest.tar.gz
# 3. 解压
tar -xzvf latest.tar.gz
# 4. 移动到网站目录
sudo mv wordpress /var/www/
# 5. 设置权限
sudo chown -R www-data:www-data /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress
“`
第六步:配置Nginx
“`bash
# 1. 创建Nginx配置文件
sudo nano /etc/nginx/sites-available/wordpress
“`
粘贴以下配置(按Ctrl+X,然后Y,Enter保存):
“`nginx
server {
listen 80;
listen [::]:80;
# 使用服务器IP访问,如果有域名可以修改
server_name _;
root /var/www/wordpress;
index index.php index.html index.htm;
# 访问日志(可选,调试时可开启)
# access_log /var/log/nginx/wordpress_access.log;
error_log /var/log/nginx/wordpress_error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
# 缓存静态文件
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control “public, immutable”;
}
# PHP处理
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 安全设置
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
}
“`
“`bash
# 2. 启用站点
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# 3. 禁用默认站点
sudo rm /etc/nginx/sites-enabled/default
# 4. 测试Nginx配置
sudo nginx -t
# 5. 重启Nginx
sudo systemctl restart nginx
“`
第七步:配置PHP-FPM
“`bash
# 1. 编辑PHP-FPM配置(根据PHP版本调整路径)
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
“`
找到并修改以下行(确保值与下面一致):
“`ini
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
“`
“`bash
# 2. 重启PHP-FPM
sudo systemctl restart php8.1-fpm
# 3. 启用PHP-FPM开机启动
sudo systemctl enable php8.1-fpm
“`
第八步:配置WordPress
“`bash
# 1. 复制配置文件
cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
# 2. 编辑配置文件
sudo nano wp-config.php
“`
找到以下部分并修改:
“`php
// 数据库设置
define(‘DB_NAME’, ‘wordpress’);
define(‘DB_USER’, ‘wpuser’);
define(‘DB_PASSWORD’, ‘StrongPassword123!’); # 改为第三步设置的密码
define(‘DB_HOST’, ‘localhost’);
define(‘DB_CHARSET’, ‘utf8mb4’);
// 安全密钥(可选但建议)
// 访问 https://api.wordpress.org/secret-key/1.1/salt/ 生成并替换
“`
第九步:调整防火墙(如果启用)
“`bash
# 检查防火墙状态
sudo ufw status
# 如果启用,放行HTTP
sudo ufw allow ‘Nginx HTTP’
sudo ufw reload
“`
第十步:优化MySQL配置(低内存优化)
“`bash
# 1. 备份原配置
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup
# 2. 编辑配置
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
“`
在[mysqld]部分添加或修改:
“`ini
# 低内存优化配置(适用于512MB-1GB内存)
innodb_buffer_pool_size = 64M
key_buffer_size = 16M
max_connections = 20
thread_cache_size = 4
query_cache_type = 0
query_cache_size = 0
skip-name-resolve
max_allowed_packet = 16M
innodb_log_file_size = 32M
innodb_flush_log_at_trx_commit = 2
“`
“`bash
# 3. 重启MySQL
sudo systemctl restart mysql
“`
第十一步:完成安装
“`bash
# 1. 检查所有服务状态
sudo systemctl status nginx
sudo systemctl status mysql
sudo systemctl status php8.1-fpm
# 2. 设置开机自启
sudo systemctl enable nginx
sudo systemctl enable mysql
“`
第十二步:访问WordPress完成安装
1. 打开浏览器,访问:http://你的服务器IP地址
2. 按照WordPress安装向导:
· 选择语言(中文)
· 设置站点标题(如”工作日志”)
· 设置管理员用户名(不要用admin)
· 设置强密码
· 设置邮箱地址
3. 点击”安装WordPress”
4. 登录后台:http://你的服务器IP地址/wp-admin
快速检查脚本
“`bash
# 创建一个检查脚本
cat << 'EOF' > ~/check_installation.sh
#!/bin/bash
echo “=== 服务状态检查 ===”
systemctl status nginx –no-pager | grep -A 3 “Active:”
systemctl status mysql –no-pager | grep -A 3 “Active:”
systemctl status php8.1-fpm –no-pager | grep -A 3 “Active:”
echo -e “\n=== 端口监听检查 ===”
netstat -tulpn | grep -E ‘:80|:3306’
echo -e “\n=== 文件权限检查 ===”
ls -la /var/www/wordpress/wp-config.php
echo -e “\n=== 磁盘使用 ===”
df -h /var
echo -e “\n=== 内存使用 ===”
free -h
EOF
chmod +x ~/check_installation.sh
./check_installation.sh
“`
故障排除命令
“`bash
# 1. 查看错误日志
sudo tail -50 /var/log/nginx/wordpress_error.log
sudo tail -50 /var/log/php8.1-fpm.log
# 2. 测试PHP-FPM
sudo php-fpm8.1 -t
# 3. 测试数据库连接
mysql -u wpuser -p -e “SHOW DATABASES;”
# 4. 重载所有服务
sudo systemctl reload nginx
sudo systemctl reload php8.1-fpm
sudo systemctl reload mysql
“`
后期维护命令
“`bash
# 更新WordPress
cd /var/www/wordpress
sudo wp core update # 需要先安装wp-cli
# 备份数据库
mysqldump -u wpuser -p wordpress > ~/wordpress_backup_$(date +%Y%m%d).sql
# 查看资源使用
htop # 或安装后使用
# 重启所有服务
sudo systemctl restart nginx mysql php8.1-fpm
“`
安全增强建议(可选)
“`bash
# 1. 限制PHP函数(增强安全)
sudo nano /etc/php/8.1/fpm/php.ini
# 找到并修改:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
# 2. 安装防火墙
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow ‘Nginx HTTP’
sudo ufw enable
# 3. 安装fail2ban(防暴力破解)
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
“`
完成以上步骤后,您的WordPress就应该正常运行了。访问服务器IP地址即可开始使用工作日志系统。