wordpress站点地址改错了怎么办

碎碎念:域名终于备案成功了,本想着赶紧解析绑定上;但越着急越出错,把站点域名写错了,保存后直接傻眼,后台进不去了,前台也各种资源404。

站点地址设置:

解决办法(wordpress版本5.9):

phpmyadmin、或登录服务器,进入wordpress的数据库

找到这个表:

mysql> select* from wp_options where option_name='siteurl';
+-----------+-------------+----------------------------------+----------+
| option_id | option_name | option_value                     | autoload |
+-----------+-------------+----------------------------------+----------+
|         1 | siteurl     | http://www.ineed.gold/worldpress | yes      |
+-----------+-------------+----------------------------------+----------+
1 row in set (0.00 sec)

这个就是后台设置的站点地址,直接update它

mysql> update wp_options set option_value ='http://www.ineed.gold/' where option_name='siteurl';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

再打开网站,正常,完活!

LNMP环境搭建

本文示例为手动搭建LNMP环境:
Linux:Linux 操作系统,CentOS 8.2。
Nginx:Web 服务器,Nginx 1.20.0。
MySQL:数据库,MySQL 8.0.26。
PHP:脚本语言,PHP 7.3.20。

步骤1:MySQL安装

  1. 安装:执行命令
    dnf -y install @mysql

    安装完后,查看mysql版本

    mysql -V

    返回如下结果则是安装成功

    mysql  Ver 8.0.26 for Linux on x86_64 (Source distribution)

    设置开机启动mysql

    systemctl enable --now mysqld

    启动mysql

    systemctl status mysqld
  2. 设置MySQL:
    1. 执行命令
      mysql_secure_installation
    2. 输入y,按Enter(开始配置)
    3. 输入2,按Enter(选择密码强度0,1,2)
    4. 设置密码,按Enter(注意密码强度2,需要数字、字母、字符3种组合)
    5. 再次输入密码,按Enter
    6. 输入y,按 Enter
    7. 输入n,按 Enter(y禁止远程链接,n允许远程链接)
    8. 输入y,按 Enter
    9. 输入y,按 Enter(重新加载)

步骤2:PHP安装

  1. 启动PHP7.3模块
    dnf module enable php:7.3

    输入y,按enter

  2. 安装PHP依赖模块
    dnf install php php-curl php-dom php-exif php-fileinfo php-fpm php-gd php-hash php-json php-mbstring php-mysqli php-openssl php-pcre php-xml libsodium

    安装完后,执行命令查看nginx版本

    php -v

    返回如下则是安装成功

    PHP 7.3.20 (cli) (built: Jul  7 2020 07:53:49) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.20, Copyright (c) 1998-2018 Zend Technologies
  3. 修改配置文件www.conf
    vi /etc/php-fpm.d/www.conf

    将 user = apache 及 group = apache 修改为 user = nginx 及 group = nginx

    ; RPM: apache user chosen to provide access to the same directories as httpd
    user = nginx
    ; RPM: Keep a group allowed to write in log dir.
    group = nginx
  4. 启动php-fpm
    systemctl start php-fpm
    systemctl enable php-fpm

步骤3:Nginx安装

  1. 安装:centos8系统的nginx版本 可以自行选用,这里选的是1.20.2版本
dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.20.2-1.el8.ngx.x86_64.rpm

安装完后,执行命令查看nginx版本

nginx -v

返回如下则是安装成功

nginx version: nginx/1.20.2
  1. 配置:
    执行命令编辑配置文件

    vi /etc/nginx/conf.d/default.conf 

    修改location的index,增加index.php

    location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm index.php;
    }

将location ~ .php$ 配置项修改为

location ~ \.php$ {
    root           html;
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
    include        fastcgi_params;
}
  1. 启动nginx:
    systemctl start nginx
    systemctl enable nginx

步骤4:验证环境

  1. 执行命令创建php文件
    echo "<?php phpinfo(); ?>" >> /usr/share/nginx/html/index.php
  2. 访问地址 http://服务器公网ip/index.php
  3. 成功出现PHP Version 7.3.20页面,说明环境配置成功
  4. 删除测试文件
    rm -rf /usr/share/nginx/html/index.php

Mac安装brew时遇到的问题

问题1:

curl Failed to connect to raw.githubusercontent.com port 443

本人在安装brew时遇到上述问题,找了一个晚上的原因,终于找到了解决放方法:

输入指令sudo gem install redis,再输入安装brew指令即可。

问题2:

下载速度慢 超时
一、获取 install 文件,把官网给的脚本拿下来

curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install

二、更改脚本中的资源链接
这里替换成清华大学的镜像,修改如下两句:

vi brew_install

BREW_REPO = “https://github.com/Homebrew/brew“.freeze
CORE_TAP_REPO = “https://github.com/Homebrew/homebrew-core“.freeze
更改为这两句
BREW_REPO = "https://mirrors.ustc.edu.cn/brew.git".freeze
CORE_TAP_REPO = "https://mirrors.ustc.edu.cn/homebrew-core.git".freeze
也可以换成别家的。
三、运行脚本

/usr/bin/ruby brew_install

问题3:

brew cask安装失败
fatal: unable to access 'https://github.com/Homebrew/homebrew-cask/': Failed to connect to github.com port 443: Operation timed out

clone其它镜像地址

git clone http://mirrors.ustc.edu.cn/homebrew-cask.git /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask --depth=1

修改远程仓库

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/
git remote set-url origin http://mirrors.ustc.edu.cn/homebrew-cask.git

PHP与golang之urlencode空格加号踩坑

url中如果带有特殊字符,正常处理一般都是urlencode,但对于空格,会有些特别奇葩的情况。

  • PHP

    先看一下php的处理:

<?php
    $url = 'http://www.abc.com/apple iphone+ipad';
    $encode_url = urlencode($url);
    echo 'encode_url:'.$encode_url.PHP_EOL;
    $decode_url = urldecode($encode_url);
    echo 'decode_url:'.$decode_url.PHP_EOL;
?>

输出:

encode_url:http%3A%2F%2Fwww.abc.com%2Fapple+iphone%2Bipad
decode_url:http://www.abc.com/apple iphone+ipad

可以看到字符串中的空格urlencode后变成了+加号。

  • golang

    golang提供了两种escape标准实现方法,区别在于

url.PathEscape:空格会转为 %20
url.QueryEscape:空格会转为 +
url.Values.Encode:内部是QueryEscape

看下效果:

PathEscape:
    var str string = "http://www.abc.com/apple iphone+ipad"
    str = url.PathEscape(str)
    fmt.Println(str)
    str, err := url.PathUnescape(str)
    fmt.Println(str)
    fmt.Println(err)

输出:

apple%20iphone+ipad
apple iphone+ipad%android
<nil>
QueryEscape:
    var str string = "http://www.abc.com/apple iphone+ipad"
    str = url.QueryEscape(str)
    fmt.Println(str)
    str, err := url.QueryUnescape(str)
    fmt.Println(str)
    fmt.Println(err)

输出:

http%3A%2F%2Fwww.abc.com%2Fapple+iphone%2Bipad
http://www.abc.com/apple iphone+ipad
<nil>
注意点

PathUnescape、QueryUnescape解析不出时会报err,跟php不一样,比如

    str := "100%power"
    str, err := url.QueryUnescape(str)
    fmt.Println(str) //空字符串
    fmt.Println(err) //invalid URL escape "%po"

需要判断err不是nil是返回原字符串,不然str会变成空值了

    str := "100%power"
    if res, err := url.QueryUnescape(str); err == nil {
        str = res
    }
    fmt.Println(str) //100%power

踩坑坑坑坑

当php的urlencode后的字串,在golang中PathUnescape解析时,会出现偏差

    str := "http%3A%2F%2Fwww.abc.com%2Fapple+iphone%2Bipad" //php中urlencode后的地址
    str, err := url.PathUnescape(str)
    fmt.Println(str)
    fmt.Println(err)

输出:

http://www.abc.com/apple+iphone+ipad
<nil>

期望值是http://www.abc.com/apple iphone+ipad,结果空格没有解出来

建议

当与php互相传输的数据需要url处理时,建议都使用url.QueryEscape。

某些特殊情况,比如某些验签,需要空格号转为%20再加密时,就会用到url.PathEscape。

wordpress下载插件,安装失败,无法创建目录问题

网上查了好多,很多都说是目录权限问题,但是将目录改为777权限,并没有解决问题,而且这么改还会伴随其他问题和风险。

下面说下我的解决办法:
出现这问题主要是目录用户组错误,ll命令查看下当前站点目录的用户组,我的是root,不同人的可能不一样。

drwxr-xr-x 5 root root    xxxxxxxxx   wordpress

但是更新和安装插件的程序用户组不是root,需要查看nginx.conf(本人是lnmp环境,在/etc/nginx/nginx.conf)第一行:

user  nginx;

可以看到用户组是nginx,不同人的可能不一样。
将自己的站点目录用户组改为nginx:

chown -R nginx:nginx wordpress

再次安装更新,成功!

新手从0搭建wordpress个人博客

一、服务器

服务商:首先选个自己的云服务器吧,国内几个大服务商,当然还有其它好多服务商(AWS、google、金山等等),有兴趣的可以多了解些。
感觉个人用的话选腾讯云比较好,可以微信登陆,有完善的小程序可以查看服务器状态;而且学习教程、论坛都比较全面,特别适合个人新手用户。

配置:配置用2核2G或4G,对新手个人用户来说完全够用。可以对比下各家价格,经常会有新用户优惠、学生优惠、节日优惠,根据个人需要选择。

系统:如果服务商有wordpress镜像,可以直接选用,不需要配置环境(直接看第四步);动手能力强的小伙伴,可选则ubuntu、centos系统,自行搭建环境。

二、域名

三、环境搭建

步骤1:登陆服务器

大部分服务商都会提供WebShell登录(通过后台的网页端直接登陆),我们也可以选择本地ssh软件进行登录:PuTTY、secureCRT等都可以,mac系统可以用自带的ssh配置。为了更好的安全性,建议使用密钥登陆。

步骤2:环境搭建

步骤3:创建wordpress数据库

  1. 登录数据库 执行命令
    mysql -u root -p此处是您的数据库密码,注意p后面无空格
  2. 设置权限
    GRANT ALL PRIVILEGES ON wordpress.* TO 'user'@'localhost';
  3. 刷新配置,使权限生效
    FLUSH PRIVILEGES;
  4. 退出mysql
    \q

四、安装wordpress

  1. 进入nginx站点根目录
    cd /usr/share/nginx/html
  2. 下载wordpress压缩包
    wget https://cn.wordpress.org/wordpress-5.0.4-zh_CN.tar.gz
  3. 解压
    tar zxvf wordpress-5.0.4-zh_CN.tar.gz
  4. 找到配置文件
    cd /usr/share/nginx/html/wordpress
    cp wp-config-sample.php wp-config.php
    vim wp-config.php
  5. 修改配置文件中的数据库配置

    /** The name of the database for WordPress */
    define('DB_NAME', 'wordpress');
    
    /** MySQL database username */
    define('DB_USER', 'user');
    
    /** MySQL database password */
    define('DB_PASSWORD', '123456');
  6. 验证
    浏览器打开地址 http://服务器的公网ip/wordpress
    跳转至wordpress安装页,说明安装成功,可以按提示开始配置 wordpress

mac ssh密钥登录服务器

文中只讲述了本地ssh的登录配置,密钥生成及服务端配置未描述

1、配置config文件:

编辑文件:

vi ~/.ssh/config
Host  myserver(ssh登陆名)
HostName 127.1.1.1(服务器ip)
Port 22
User root(用户名)
IdentitiesOnly yes
IdentityFile 此处填私钥文件绝对路径

保存退出

2、登录:

终端直接输入,即可快速登录服务器

ssh myserver