搭建博客-Ubuntu20-LAMP-WordPress

博客是网际空间属于自己的一小片天地。

本文并不是从底层代码实现博客的搭建,而是利用Wordpress这个网络框架。配合主题和插件建站,可以零代码编辑博客。除了可以搭建博客,还可以建立企业网站,网上商城等。互联网上有4成以上的网站使用的都是WP框架,足以见其强大的功能。

搭建网站,需要有服务器(768M带不动我这个WP)和域名(域名并非必须,但没有的话,只能以ip访问,如http://82.157.53.75/)。
推荐一下本站的文章:购买服务器和域名

WordPress官网:Blog Tool, Publishing Platform, and CMS | WordPress.org

待处理LCMP搭建WordPress | 小荷 (tccmu.com)

CDN加速-隐藏真实IP-复活IP (laoda.de)

从能用到好用-快速搭建高性能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的用户信息,就可以使用了。

如果遇到问题,可以到最下面寻找解决办法。

拓展

以下不能纯靠复制命令

一个服务器部署多个独立的wordpress实例,各自拥有不同域名

参考网址,这个很详细:https://docmiao.com/community/tutorials/how-to-set-up-multiple-wordpress-sites-on-a-single-ubuntu-vps

使用的是LAMP环境,让多个域名指向vps的ip地址。以下是同时3个网页的例子。

MySQL

先列一下需要的数据库、用户名、密码,方便一会使用和日后管理。

Site Nameblog.ahfei.toptafm.ahfei.topfamily.ahfei.top
Database NameWPblogWPmarketWPfamily
Database UserWPbloguserWPmarketuserWPfamilyuser
Database Password11235813114795841313526875083
左侧依次是:域名,数据库名,数据库里的用户,他的密码
#登录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)

迁移 WordPress 至其他服务器

发现一个一键插件迁移: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

直接在数据库更改域名:interconnectit/Search-Replace-DB: This script was made to aid the process of migrating PHP and MySQL based websites.

简易流程,有局限:先在新服务器上走一遍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

更安全的WordPress设置:修改后台网址、文件读写权限

修改后台网址

安装 WPS Hide Login,来到后台设置选项,单击WPS Hide Login,这里有两个选项,”登录 地址” 和”Redirection url”,

  • 登录 地址 ,必须在 Web 浏览器中输入才能找到登录区域的地址。例如,可以将默认的“登录”更改为“taobao”,这意味着将访问:
  • Redirection url (重定向网址),重定向 URL 是用户在输入默认登录 URL 时将转到的位置。默认情况下,当输入默认登录 URL 时,这会将任何人发送到 404 错误屏幕。这可以单独保留,或者可以加倍努力并为此特定重定向创建一个页面,但这完全取决于。将重定向 URL 更改为想要的任何内容。

如果我忘记了我的登录 URL 怎么办?
最简单的方法是登录您的 cPanel,登录信息由虚拟主机提供给您,然后删除 WPS 隐藏登录插件。这会将您的登录 URL 恢复到默认页面。

利用Docker搭建

插件与主题推荐

最好的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

PageSpeed Insights (web.dev) 。谷歌的

Dotcom-Monitor: Website Monitoring and Performance Testing

其他问题的解答

官方的:常见问题解答疑难解答 – WordPress.org 论坛

修复和解决最常见的WordPress错误的终极指南(65多个问题)-WP建站 (wpjian.com)

WordPress安装插件需要ftp登录的解决办法

这是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的运行用户改为你的当前用户

WordPress修改最大上传文件大小

编辑现有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

健康检查,Php模组安装

方法一:直接利用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

网址只能用朴素—ubuntu Apache2 下为WP设置伪静态URL

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

WordPress数据库 所有数据表、字段的作用详细解释_猪机博客 (pigji.com)

留下评论