博客是网际空间属于自己的一小片天地。
本文并不是从底层代码实现博客的搭建,而是利用Wordpress这个网络框架。配合主题和插件建站,可以零代码编辑博客。除了可以搭建博客,还可以建立企业网站,网上商城等。互联网上有4成以上的网站使用的都是WP框架,足以见其强大的功能。
搭建网站,需要有服务器(768M带不动我这个WP)和域名(域名并非必须,但没有的话,只能以ip访问,如http://82.157.53.75/)。
推荐一下本站的文章:购买服务器和域名
WordPress官网:Blog Tool, Publishing Platform, and CMS | WordPress.org
待处理:LCMP搭建WordPress | 小荷 (tccmu.com)
从能用到好用-快速搭建高性能WordPress指南 | sleele的博客
换下主题试试:极客公园 – 玩的精彩! (gitcafe.net)
推荐一个支持全站编辑的古腾堡 WordPress 主题 – WordPress 果酱 (wpjam.com)
zhuige-com/jiangqie_theme: 酱茄Free主题由酱茄( www.jiangqie.com )开发的一款免费开源的WordPress主题,主题专为WordPress博客、资讯、自媒体网站而设计。 (github.com)
WordPress设置绑定多个域名,wordpress如何更换域名教程_猪机博客 (pigji.com)
纯复制命令式建站,10分钟
如果不了解linux的话,复制命令就不会出错。了解的随意。为了简便,以下都是以root用户执行的。
配置LAMP环境
下面是一键安装方法。
检查更新
sudo apt update && sudo apt upgrade
安装tasksel
sudo apt install tasksel #中间需要输入 y 确认
一次性安装LAMP套件
sudo tasksel
上下键移动,移动到LAMP server,然后“空格键”选中,选中后会显示*。最后”Enter键”确认。LAMP部署的很快。

(如果有这样的报错:tasksel: apt-get failed (100)
可以添加源,然后两次up,就会自动安装未完成的。如果还不行,可能会提示:apt –fix-broken install,运行应该就好了)
开放端口
添加80和3306端口。(说明:80端口用于web访问,3306端口用于MySQ3306)
腾讯、阿里、vultr除了要在官网上设定防火墙规则,还要在系统内开放一些端口(sudo ufw allow 80),如Ubuntu20.04默认只开放22端口。
测试LAMP是否安装成功
1.测试Apache
用浏览器访问http://<公网ip>
出现it works!说明apache2安装成功。
2.测试MySQL
service mysql status
显示active(running)说明正常运行
3.测试PHP
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
访问http://<公网ip>/phpinfo.php
出现PHP Version XXX说明PHP安装成功

MySQL
登录MySQL
mysql -u root #出现 mysql > # 说明登录成功
创建WordPress数据库
CREATE DATABASE <数据库名称>; # 分号不可缺少
# 如 CREATE DATABASE wp_blog;
创建wordpress数据库用户
CREATE USER '<用户名>'@'%' IDENTIFIED BY '<密码>';
# 如 CREATE USER 'ahfei_ofb'@'%' IDENTIFIED BY 'A23456..';
为用户配置数据库权限
GRANT ALL ON <数据库名称>.* TO '<用户名>'@'%' WITH GRANT OPTION;
# 如 GRANT ALL ON wp_blog.* TO 'ahfei_ofb'@'%' WITH GRANT OPTION;
生效配置及退出MySQL
FLUSH PRIVILEGES;
exit
如果按照“如”后面设置,那么 创建了:数据库:wp_blog,用户:ahfei_ofb,密码:A23456..,且用户ahfei_blog能完全控制这个数据库。
WordPress
内容管理系统(CMS)是帮助用户在网站上创建,管理和修改内容而无需专业技术知识的软件。
WordPress是一个开源内容管理系统(CMS),它允许用户构建动态网站和博客。
下载WordPress
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
解压WordPress
tar -xzvf latest-zh_CN.tar.gz
移动wordpress
由于PHP默认访问 /var/www/html/ 文件夹,若服务器不准备用于干其他事情,那就可以把 wordpress 文件夹里的文件都移动到 /var/www/html/ 文件夹(这样会影响“代理”流量)。如果想用一台服务器搭建多个网站,可以看下面的拓展,让文件层次更清晰。
sudo mv wordpress/* /var/www/html/
设置html权限和wp文件夹权限
sudo chmod -R 777 /var/www/html/
sudo chown -R www-data /var/www/html
将apache移动到index.html?不理解,学习
sudo mv /var/www/html/index.html /var/www/html/index~.html
重启 Apache 服务:
sudo systemctl restart apache2.service
测试WordPress
浏览器访问:http://<公网IP或域名> 如图即成功了。后面只需填入wp的用户信息,就可以使用了。


如果遇到问题,可以到最下面寻找解决办法。
拓展
以下不能纯靠复制命令
使用的是LAMP环境,让多个域名指向vps的ip地址。以下是同时3个网页的例子。
MySQL
先列一下需要的数据库、用户名、密码,方便一会使用和日后管理。
Site Name | blog.ahfei.top | tafm.ahfei.top | family.ahfei.top |
Database Name | WPblog | WPmarket | WPfamily |
Database User | WPbloguser | WPmarketuser | WPfamilyuser |
Database Password | 11235813 | 1147958413 | 13526875083 |
#登录MySQL
mysql -u root -p
#出现mysql >说明登录成功
#创建WordPress数据库
CREATE DATABASE WPblog;
CREATE DATABASE WPmarket;
CREATE DATABASE WPfamily;
#创建wordpress数据库用户
CREATE USER 'WPbloguser'@'%' IDENTIFIED BY '11235813';
CREATE USER 'WPmarketuser'@'%' IDENTIFIED BY '1147958413';
CREATE USER 'WPfamilyuser'@'%' IDENTIFIED BY '13526875083';
#为用户配置数据库权限
GRANT ALL ON WPblog.* TO 'WPbloguser'@'%' WITH GRANT OPTION;
GRANT ALL ON WPmarket.* TO 'WPmarketuser'@'%' WITH GRANT OPTION;
GRANT ALL ON WPfamily.* TO 'WPfamilyuser'@'%' WITH GRANT OPTION;
#生效配置及退出MySQL
FLUSH PRIVILEGES;
exit
配置站点根目录
# 开始时,不妨把当前目录设置为用户根目录,即 ~。
cd ~
# 下载并解压wp的源文件
wget http://wordpress.org/latest.tar.gz #英文
wget https://cn.wordpress.org/latest-zh_CN.tar.gz #中文
tar xzvf latest.tar.gz #解压,中文换后面的文件名
# 打开放置网站目录的根目录
cd /var/www
# 为我们的每个网站创建一个目录:
sudo mkdir blog
sudo mkdir TAFM
sudo mkdir family
# 将wp的原文件夹中的配置文件进行修改,这在后面就不必修改3个。(这一步也可不做,在web端可以自动生成)
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
# 将WP文件复制到您在服务器的Web根目录下创建的目录
sudo rsync -avP ~/wordpress/ /var/www/blog/
sudo rsync -avP ~/wordpress/ /var/www/TAFM/
sudo rsync -avP ~/wordpress/ /var/www/family/
# 将目录所有权授予Apache Web用户
sudo chown www-data:www-data * -R
# 然后将Linux用户名添加到Web组
sudo usermod -a -G www-data <用户名>
WordPress配置
如果刚才那步没做,这步就跳过。做了的话,必须走这步。
编辑每个网站目录下的wp-config.php文件
如第一个:sudo vi /var/www/blog/wp-config.php

数据库更详细的信息,可以看:WordPress基础配置文件wp-config.php详解
Apache虚拟主机配置
#通过配置Apache,以将流量从每个域引向各自的目录。为此,我们将为每个域创建单独的虚拟主机文件。
#Apache的可用站点目录:
cd /etc/apache2/sites-available
#复制默认虚拟主机文件为每个站点创建一个新的虚拟主机文件:
#先复制一个:
sudo cp 000-default.conf blog.conf
#然后编辑:
sudo vi blog.conf
(省略了注释行)

ServerAdmin vgamebox@outlook.com
ServerName blog.ahfei.icu
DocumentRoot /var/www/blog
#ServerAlias
<Directory "/var/www/blog">
Options FollowSymLinks
AllowOverride All
#Require all denied
Require all granted
</Directory>
方便复制

#然后再以第一个文件为模板,复制后编辑,改变对应信息即可。
sudo cp blog.conf TAFM.conf
sudo cp blog.conf family.conf
#在sites-enabled目录下建立符号链接。
# 法一,利用apache2自带指令:
sudo a2ensite blog.conf
sudo a2ensite TAFM.conf
sudo a2ensite family.conf
# 法二,命令创建符号链接
sudo ln -s /etc/apache2/sites-available/blog.conf /etc/apache2/sites-enabled/blog.conf
sudo ln -s /etc/apache2/sites-available/TAFM.conf /etc/apache2/sites-enabled/TAFM.conf
sudo ln -s /etc/apache2/sites-available/family.conf /etc/apache2/sites-enabled/family.conf
#上面的指令,a2ensite和a2dissite在Apache中启用和禁用站点。它实质是创建一个从/etc/apache2/sites-enabled到/etc/apache2/sites-available的符号链接
#重新加载Apache
sudo service apache2 reload
#如果用的命令创建符号链接,也许需要修改 /etc/hosts 文件
# 打开查看 /etc/hosts 文件,开头是:
127.0.0.1 localhost
# 我们在该行后面添加:
127.0.0.1 blog.ahfei.icu
127.0.0.1 tafm.ahfei.icu
127.0.0.1 family.ahfei.icu
#保存退出
同域名下,通过访问不同的端口获得不同的站点:https://www.linuxidc.com/Linux/2017-05/143590.htm
WordPress站点更换域名的正确方式(踩了无数坑) 、 (nanzl.com)
发现一个一键插件迁移:All-in-One WP Migration 。使用方法:WordPress备份还原插件All-in-One WP Migration使用教程 – 奶爸建站笔记 (naibabiji.com) 。
通过插件backupwordpress定时备份整站文件和数据库文件。(其实整站文件就是/var/www/html里的文件(包括“.h…”那个隐藏apache2规则文件) 和数据库文件,打包压缩一起的),将其放回原位,再将域名更改(没变就不改)就可以了。
同一系统版本,相同的软件环境,wp不管服务器有没有变,还是按照原本服务器的配置来。那么要改的就是新旧服务器的差别:ip地址或是域名,配置(无所谓)。综上,数据放回原位后,只需把域名解决就行了。
备份前做个标记,方便迁移后检查是否最新。
思想分析
具体步骤
官网上帮助文档:Changing The Site URL – WordPress.org Forums。这是改变域名的,以下我的方法似乎有缺陷,只是临时一用,要想完全转移,还需看文档。
很详细:进行最终编辑 | WordPress 托管 – GoDaddy 帮助 SG
简易流程,有局限:先在新服务器上走一遍wp第一次部署流程,要与备份的这个当初一样,数据库一样。再把文件归位,在wp-config.php
里添加两行代码,最后重启数据库:systemctl restart mysql
define( 'WP_HOME', 'http://trya.ahfei.blog' );
define( 'WP_SITEURL', 'http://trya.ahfei.blog' );
# 改域名,最后不能有'/'
一般流程:先创建一个新数据库,任意即可。
修改备份文件中的wp-config.php
中的数据库内容,见上面那条,再加上两条代码。考虑一条。
define( 'WP_HOME', 'http://trya.ahfei.blog' );
define( 'WP_SITEURL', 'http://trya.ahfei.blog' );
# 改域名,最后不能有'/'
# 找到 $table_prefix 并进行编辑以反映导入的数据库的正确前缀。修改为原本数据库上的前缀。一个数据库下,下一级就是前缀,没有更小的了。
还原数据库:mysql -uroot -p ‘要还原的数据库名’ < ‘要还原的sql文件’。
需要输入用户和密码,是新的那个。
mysql -uroot -p WPblog < myblog.sql
最后重启:systemctl restart mysql
修改后台网址
安装 WPS Hide Login,来到后台设置选项,单击WPS Hide Login,这里有两个选项,”登录 地址” 和”Redirection url”,
- 登录 地址 ,必须在 Web 浏览器中输入才能找到登录区域的地址。例如,可以将默认的“登录”更改为“taobao”,这意味着将访问:
- Redirection url (重定向网址),重定向 URL 是用户在输入默认登录 URL 时将转到的位置。默认情况下,当输入默认登录 URL 时,这会将任何人发送到 404 错误屏幕。这可以单独保留,或者可以加倍努力并为此特定重定向创建一个页面,但这完全取决于。将重定向 URL 更改为想要的任何内容。
如果我忘记了我的登录 URL 怎么办?
最简单的方法是登录您的 cPanel,登录信息由虚拟主机提供给您,然后删除 WPS 隐藏登录插件。这会将您的登录 URL 恢复到默认页面。
后期……
关联邮箱的头像服务,在支持的网站加载预定的头像:Gravatar – Globally Recognized Avatars
使用中国 Cravatar 彻底解决 Gravatar 头像无法访问的问题 | WordPress大学 (wpdaxue.com)
http://m.news.xixik.com/content/66fc5ad9f0f2354a/
https://www.321tool.com/web/cyColor.html
插件与主题推荐
最好的WordPress表格插件推荐 (10besty.com)
我正在用的Wordpress插件-WP SEO,CDN,缓存,图片,邮件,论坛插件 – 挖站否-挖掘建站的乐趣 (wzfou.com)
- Highlighting Code Block。代码高亮区块。
- BackUpWordPress。自动备份文件。
- GutenTOC – Table of Content Gutenberg Block。自动为文章创建目录区块。
- WP ULike。统计访问人数。
- 2em。首行缩进区块。
- Imagify。减小上传图片体积。
- Password Protected。访问必须输入设定密码,用于不公开的博客。
- Snow Monkey Editor。
- Stackable – Gutenberg Blocks。有很多好的区块。
- TablePress。创建表格。
- WP Editor.md。一个markdown编辑器。
- WPS Hide Login。改变默认登陆后台的网址。
优化网站
WordPress 一键式全站优化插件:WPJAM-Basic – WordPress 果酱
两方面,对服务器优化,对网站本身优化(主要是SEO)。
前者推荐本站文章:让服务器-更安全-更快速-更稳定。
SEO,我不是很看重,搜索引擎完全掌握主导权,况且小站,志向大站的自有办法。
优化网站打开速度。
在网站右键查看浏览器检查/审查元素,或者直接按F12切换到Network,然后F5 刷新页面,就可以看到每个文件的加载时间,观察网站首页加载的总容量和首页加载的主要内容,查阅有什么错误的状态码,看看关于网速的状态码200(无缓存)和304(有缓存),然后你就知道哪些没有缓存拖慢了网站速度,哪些要配置缓存。
检测速度的网站工具:
Website Speed Test | Pingdom Tools 。注意:这个工具第二次使用必须要使用无痕浏览器使用,不然他会给你限制功能结果。
GTmetrix | Website Performance Testing and Monitoring 。
其他问题的解答
官方的:常见问题解答疑难解答 – WordPress.org 论坛
修复和解决最常见的WordPress错误的终极指南(65多个问题)-WP建站 (wpjian.com)
这是WordPress与服务器的权限问题,因为apache2的运行用户是www-data,而不是你的当前用户,即便你当前的用户是root。所以我们要更改WordPress文件夹的权限。
解决办法:
第一种,给wordpress文件夹所在路径所有者设置给服务器www-data
sudo chown -R www-data /var/www/html
或改变文件夹权限
sudo chmod -R 775 /var/www/html
第二种。把你的当前用户添加到www-data用户组
第三种。在WordPress的wp-config.php文件里加入下面代码,
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
第四种。把apache2的运行用户改为你的当前用户
编辑现有PHP.INI文件或创建新的。vim操作请自行查阅,或敬请期待。
对于 apache 的php.ini配置文件,可以通过看 http://<公网ip>/phpinfo.php 得知,在这个栏目后面:Loaded Configuration File。(这个如果没有,看上面“纯复制命令式建站”安装过程就明白了)
也可以搜索php.ini,命令如下:find / -name php.ini
vim /etc/php/7.4/apache2/php.ini
法1:
# 修改这两项,具体大小随意
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
# 修改完后重启 apache
service apache2 restart
法2:
# 在根目录下,即/,创建或编辑PHP.INI,写入
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
# 重启apache
方法一:直接利用apt-get安装。
可先查询软件源是否有对应安装包:
sudo apt-cache search php|grep zip #这里php看作源,搜叫zip的,其他模组类比。
然后安装即可:
sudo apt-get install php-zip
# 以前我是搜php7.4源,7.4应该是老版本的。
写时,在上述教程下,需要安装的模组有:curl、dom、imagick、mbstring、zip、gd、intl。
需要的安装命令如下:
sudo apt -y install php-curl php-fdomdocument php-imagick php-mbstring php-zip php-gd php-intl
记得重启apache:sudo systemctl restart apache2.service
方法二:下载模组,自行解压,链接,安装等等,如http://yige.org/p/834
https://blog.csdn.net/weixin_34310561/article/details/115595086
1.先执行加载rewrite模块
sudo a2enmod rewrite
2.打开Apache2.conf
sudo vi /etc/apache2/apache2.conf

3、重点在这里!wordpress提示在.htaccess加入它提示的规则语句,这里的.htaccess不是wordpress文件中存在的那个,而是需要在Apache网站根目录下创建,并写入规则语句。(不懂)不需要这步也可以,跳过就行
4、重启apache2
sudo service apache2 restart
WordPress系统站点的所有数据都由MySQL(或其他分支)数据库存储,然后使用PHP语言来检索和存储来自该数据库的信息。错误原因:
1、数据库连接信息错误。在WordPress根目录下有一个名为 wp-config.php 的文件,里面包含了数据库连接信息,修改正确即可。

2、MySQL数据库停掉了
重启
3、数据库表损坏,无能为力
4、某些PHP文件损坏,无能为力
原网址:https://www.wpdaxue.com/error-establishing-a-database-connection.html