WordPress 通过nginx代理访问配置

0、基本参数

假定你的域名是abc.com

Apache服务端口8080

nginx和Apache同在一台机器

代理后端口为80

1、配置nginx

server{
	listen 80;
	server_name abc.com;
	location / {
		#下面这两行获取真实地址,避免跳转127.0.0.1
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
		proxy_pass http://127.0.0.1:8080;
	
	}
}

2、修改wordpress

由于配置了nginx代理后,系统会自动跳转127.0.0.1,导致无法登录,无法通过页面进行修改域名配置。

此时可以通过数据库进行直接修改

登录数据库,找的wp_options表修改

MariaDB > select * from wp_options where option_name='home' or option_name='siteurl';
+-----------+-------------+--------------------------------------+----------+
| option_id | option_name | option_value                         | autoload |
+-----------+-------------+--------------------------------------+----------+
|         2 | siteurl     | https://abc.com                      | on       |
|         3 | home        | https://abc.com                      | on       |
+-----------+-------------+--------------------------------------+----------+

修改option_value 为域名即可。

wordpress常用函数

the_tags是WordPress中的一个内置函数,用于获取文章的标签(Tag)信息并将其显示在文章页面上。本文和大家一起学习下the_tags的基本知识及实例应用。

一、函数语法

the_tags( string $before = ”, string $sep = ”, string $after = ” )

二、参数说明

1、$before(可选):在标签列表之前输出的字符串,默认为空。

2、$sep(可选):标签之间的分隔符,默认为空格。

3、$after(可选):在标签列表之后输出的字符串,默认为空。

三、实例应用

假设我们有一篇文章,其标签为”技术”、”编程”、”WordPress”。我们可以使用the_tags函数来在文章页面上显示这些标签。

<?php
    // 在主题的单篇文章模板文件(例如single.php)中使用the_tags函数
    if (have_posts()) {
        while (have_posts()) {
            the_post();
            ?>
            <div class=”entry-content”>
                <?php the_content(); ?>
            </div>
            <div class=”tag-list”>
                <?php the_tags(‘标签:’, ‘, ‘, ”); ?>
            </div>
            <?php
        }
    }
?>

以上代码将会在文章内容下方显示类似以下的标签列表:

标签:技术, 编程, WordPress

我们也可以根据需要自定义$before、$sep和$after参数的值来调整标签列表的外观和样式。

在修改和制作Wordpress主题时经常为不知道内置函数而苦恼,而wordpress官方的文档看起来又不是那么方便。所搜集并且整理了一下放这,以备后用。

判断页面函数

is_home() : 是否为主页

is_single() : 是否为内容页(Post)

is_page() : 是否为内容页(Page)

is_category() : 是否为Category/Archive页

is_tag() : 是否为Tag存档页

is_date() : 是否为指定日期存档页

is_year() : 是否为指定年份存档页

is_month() : 是否为指定月份存档页

is_day() : 是否为指定日存档页

is_time() : 是否为指定时间存档页

is_archive() : 是否为存档页

is_search() : 是否为搜索结果页

is_404() : 是否为 “HTTP 404: Not Found” 错误页

is_paged() : 主页/Category/Archive页是否以多页显示

Header部分常用到的PHP函数

<?php bloginfo(’name’); ?> : 博客名称(Title)

<?php bloginfo(’stylesheet_url’); ?> : CSS文件路径

<?php bloginfo(’pingback_url’); ?> : PingBack Url

<?php bloginfo(’template_url’); ?> : 模板文件路径

<?php bloginfo(’version’); ?> : WordPress版本

<?php bloginfo(’atom_url’); ?> : Atom Url

<?php bloginfo(’rss2_url’); ?> : RSS 2.o Url

<?php bloginfo(’url’); ?> : 博客 Url

<?php bloginfo(’html_type’); ?> : 博客网页Html类型

<?php bloginfo(’charset’); ?> : 博客网页编码

<?php bloginfo(’description’); ?> : 博客描述

<?php wp_title(); ?> : 特定内容页(Post/Page)的标题

模板常用的PHP函数及命令

<?php get_header(); ?> : 调用Header模板

<?php get_sidebar(); ?> : 调用Sidebar模板

<?php get_footer(); ?> : 调用Footer模板

<?php the_content(); ?> : 显示内容(Post/Page)

<?php if(have_posts()) : ?> : 检查是否存在Post/Page

<?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page则予以显示

<?php endwhile; ?> : While 结束

<?php endif; ?> : If 结束

<?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册

<?php comments_popup_link(); ?> : 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开

<?php the_title(); ?> : 内容页(Post/Page)标题

<?php the_permalink() ?> : 内容页(Post/Page) Url

<?php the_category(’, ‘) ?> : 特定内容页(Post/Page)所属Category

<?php the_author(); ?> : 作者

<?php the_ID(); ?> : 特定内容页(Post/Page) ID

<?php edit_post_link(); ?> : 如果用户已登录并具有权限,显示编辑链接

<?php get_links_list(); ?> : 显示Blogroll中的链接

<?php comments_template(); ?> : 调用留言/回复模板

<?php wp_list_pages(); ?> : 显示Page列表

<?php wp_list_categories(); ?> : 显示Categories列表

<?php next_post_link(’ %link ‘); ?> : 下一篇文章链接

<?php previous_post_link(’%link’); ?> : 上一篇文章链接

<?php get_calendar(); ?> : 日历

<?php wp_get_archives() ?> : 显示内容存档

<?php posts_nav_link(); ?> : 导航,显示上一篇/下一篇文章链接

<?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件

其他函数

<?php _e(’Message’); ?> : 输出相应信息

<?php wp_register(); ?> : 显示注册链接

<?php wp_loginout(); ?> : 显示登录/注销链接

<!–next page–> : 将当前内容分页

<!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容

<?php timer_stop(1); ?> : 网页加载时间(秒)

<?php echo get_num_queries(); ?> : 网页加载查询量

Nginx 反向代理https配置

/etc/nginx/sites-available/default

server{

       listen 443 ssl;  #ssl不能少,否则报错

       server_name  abc.com (域名,下同);

        ssl_certificate /home/abc.com/fullchain.pem; #证书位置

        ssl_certificate_key /home/abc.com/privkey.pem;

        ssl_session_timeout 5m;

        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

        ssl_ciphers “HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES”;

        ssl_prefer_server_ciphers on;

       location / {

          proxy_pass   https://127.0.0.1;

       }

}

或者

server{

       listen 80;

           server_name  127.0.0.1 localhost  abc.com;

        #  rewrite ^(.*)$  https://$host$1 permanent;

       location / {

          proxy_pass   https://127.0.0.1;

       }

}

#注意:wordpress需修改 设置》站点地址和wordpress地址 为https

刷新

systemctl reload nginx

wordpress忘记用户登录密码

参考地址 https://wordpress.org/documentation/article/reset-your-password/
1、登录数据库,找到users结尾的表,如wp_users
2、使用新密码生成MD5 hash 在线生成工具 https://www.miraclesalad.com/webtools/md5.php
或者通过下面的命令生成
python

import hashlib
m = hashlib.md5()
m.update(b’123′)
m.hexdigest()
‘202cb962ac59075b964b07152d234b70’

On Unix/Linux:
  1. Create a file called wp.txt, containing nothing but the new password.
  2. tr -d ‘\r\n’ < wp.txt | md5sum | tr -d ‘ -‘
  3. rm wp.txt
On Mac OS X:
  1. Create a file called wp.txt, containing nothing but the new password. Then enter either of the lines below
  2. md5 -q ./wp.txt; rm ./wp.txt (If you want the MD5 hash printed out.)
3. md5 -q ./wp.txt | pbcopy; rm ./wp.txt (If you want the MD5 hash copied to the clipboard.)
3 、修改表
update wp_users set user_pass='md5 hash' where id=1;--改成你的id

WordPress 通过nginx代理后跳转127.0.0.1

由于配置了nginx代理后,系统会自动跳转127.0.0.1,导致无法登录,无法通过页面进行修改域名配置。此时可以通过数据库进行直接修改。

登录数据库,找的wp_options表

修改

MariaDB > select * from wp_options where option_name=’home’ or option_name=’siteurl’;

option_idoption_nameoption_valueautoload
2siteurlhttps://abc.com on
3homehttps://abc.com on

修改option_value 为域名即可。

WordPress 升级php踩坑日志

wordpress收到了php升级提醒,由于操作系统比较旧,官方源并未提供php7.4版本,从网上搜了好多教程,一步步做下来,还是遇到了两个报错“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”、“此站点遇到了致命错误。”,心情顿时奔溃。

多个教程加上踩坑经历整理出安装教程如下

第 0 步:禁用旧版本

a2dismod php7.0
service apache2 restart 

注意是 restart 不是start。第一次安装由于没有注意重启导致安装后找不到mysql模块

第 1 步:添加 PHP PPA 存储库

我们将使用 PPA 存储库,其中包含最新的 PHP 构建包。但要先安装依赖包。

sudo apt update
sudo apt -y install software-properties-common

添加存储库:

sudo add-apt-repository ppa:sergey-dryabzhinsky/php74
sudo add-apt-repository ppa:sergey-dryabzhinsky/php7-modules
sudo add-apt-repository ppa:sergey-dryabzhinsky/backports
sudo add-apt-repository ppa:sergey-dryabzhinsky/packages

步骤2:在Ubuntu 18.04/16.04上安装PHP 7.4

使用以下命令在 Ubuntu 上安装 PHP 7.4:

sudo apt -y install php7.4

检查安装的版本:

$ php -v
PHP 7.4.33-SergeyD/6.1 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

使用以下命令安装其他软件包:

sudo apt install php74p-mod-{mysqlnd,bcmath,bz2,gd,intl,mbstring,zip,json} 

注意应该是mysqlnd,mysql不行,许多文档写的是mysql

与Apache相关的PHP配置存储在/etc/php74/apache2/php.ini

安装完确认PHP版本:

$ php –version
PHP 7.4.33-SergeyD/6.1 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

将 PHP 7.4 与 Apache 结合使用

安装 Apache PHP 模块。

sudo apt install libapache2-mod-php74

安装完执行

a2enmod php74 && service apache2 restart 重要

问题解决:

1、安装完成后启动apache 访问wordpress 报“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展

php -m 没有mysqli mysqlnd的相关内容

~# php -m
[PHP Modules]
bcmath
bz2
Core
ctype
date
filter
gd
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
zip
zlib
[Zend Modules]

或者在wordpress 根目录创建phpinfo.php 文件

<? php phpinfo(); ?>

浏览器访问查看是否有mysql模块

按上面的步骤重装了N遍还是找不到mysql模块,考虑可能是卸载不干净,然后使用彻底删除(见彻底删除php

最后找到原因竟然是由于没有service apache2 restart导致

2、解决mysql后报此站点遇到了致命错误。

开启调试模式

一、开启 WP Debug 模式访问主页显示错误详情Call to undefined function json_decode()

开启 DEBUG 模式显示详细的错误信息。

打开 WordPress 配置文件 wp-config.php,将 WP_DEBUG 这一行修改为如下代码即可:

// 开启WP_DEBUG模式

define( ‘WP_DEBUG’, true);

// 开启DEBUG日志,一定要记得关闭这个日志功能并清理这个日志文件哦,产生的日志文件在: /wp-content/debug.log

define( ‘WP_DEBUG_LOG’, true);

// 显示errors and warnings

define( ‘WP_DEBUG_DISPLAY’, true);

@ini_set( ‘display_errors’, ‘On’);

调试好后,请千万记得关闭 DEBUG 模式,即将上述内容改回:

define( ‘WP_DEBUG’, false);

二、开启json

修改/etc/php74/apache2/php.ini

追加 extension=json

然后重启apache2,正常访问


Ubuntu彻底删除PHP7.0

一、删除php的相关包及配置

sudo apt-get autoremove php7.0* 注意修改为实际要删除版本

二、删除关联

sudo find /etc -name “*php7.0*” |xargs  rm -rf 

三、清除dept列表

sudo apt purge `dpkg -l | grep php7.0 | awk ‘{print $2}’ |tr “\n” ” “`

四、检查是否卸载干净(无返回就是卸载完成)

 dpkg -l | grep php7.0

WordPress 添加备案号

AI通讯