写之前先回答几个问题:
1,网上类似的教程非常多,为什么写这篇教程?
答:博客网站我搭建过好几次,但是每次搭建都需要再去网上搜教程;然而网上的教程坑很多,甚至有些是错误的,不能完美解决自己的问题,有时候自己踩过的坑还会再踩一次,所以想通过这篇文章记录下来;我会力求把自己遇到的坑全写出来,避免其它人再踩进去。这篇文章我会写的非常详细,所以叫保姆级教程。
2,为什么选择WordPress框架搭建,而不用Hexo,Typecho?
答:并不是不想用Hexo,或者是Typecho;相反我很喜欢这两个框架,它们相对WordPress非常的轻量,加载速度很快,并且原生支持MarkDown编辑器,对于MarkDown爱好者(我)非常有吸引力。但是作为初学者,我第一个接触到的CMS系统就是WordPress,它作为免费的开源项目,已经发展多年,功能强大,插件众多,有非常多免费的主题,安装使用都很方便,很适合初学者使用。
3,为什么在云服务器上自己搭建博客网站,在CS某N,开源中国上写不行吗,或者在GitHub page或者Gitee page上白嫖不香吗?
答:可以,行,白嫖很香;但是在别人的平台写东西多少会有限制,不如在自己的平台上来的随便。我之前在CS某N上写的教程阅读过五万,结果被举报后直接给我删除了。并且云服务器不光可以搭建网站,还可以做很多其它有意思的东西,现在云服务器也非常便宜了,买一个有公网IP的云服务器我觉得是更香的。
废话不多说了,下面开始本篇教程,既然是保姆级教程,肯定是针对之前没用过或玩过服务器的小白的,各位大佬看到请绕过哈(狗头饶命)。
文章的写作框架是:
如果安装过程中遇到错误,先去错误汇总里看看是不是类似的错误;不是再去网上搜索。
这是我搭建好的博客网站:十一维智子
这篇教程同步更新在我的博客上,如果你在电脑上可以直接访问我的博客搭建。
欢迎大家访问收藏,未来我持续更新更多有意思的教程。
首先是购买云服务器,现在各种云服务器的大小厂商非常多,这里还是推荐大厂比较保险一些;毕竟小公司说不定哪天就倒闭了,那么你的网站也就没了;这里你可以选择腾讯云或者阿里云,这两家应该是目前国内最大的两家云服务提供商了;两家目前对新用户都有很大的优惠,相信看这篇教程很大一部分之前都没用过云服务器吧;这里我用的是阿里云的轻量服务器。2核4G内存的服务器,新用户三年只需要200元,这是我目前见多最大的优惠了;
阿里云入口:购买链接
由于我是老用户,于是用女朋友的号注册,果断入手三年;这里我算了一下,新用户一年是68元,但是续费需要99元(能续费两次),直接买三年是204元,还是这样划算哈哈。
购买完服务器后,如果你想通过域名访问的话,你还需要购买一个域名,如果暂时不想购买域名,可以先跳过这一步。
域名可以在万网购买,万网链接,可以选择.top域名,首年只要5元,后面续费也不贵。
买过域名,需要备案了,这个可能需要好几天了,可以在阿里云直接备案,下面是具体的备案流程;推荐在阿里云app上备案,好像更快一点。
假设现在你云服务器和域名都准备好了,现在开始搭建网站;阿里云轻量服务器可以直接选择wordpress应用镜像,也就是阿里云直接帮你搭建好了。这里为了学习搭建,我们选择系统镜像:CentOS 8.2,从零开始搭建wordpress。
背景信息:
当你选择好服务器系统镜像后,阿里云就会为你生成实例了,然后进入到你的控制台(右上角)页面,找到你的轻量服务器实例,这时候你就需要通过SSH远程连接了,这里推荐Xshell或者Finalshell进行连接。
我这里用的是Finalshell进行的连接;主机位置输入你的公网IP,然后输入用户名和密码就可以了。
实例内需要安装并配置的软件版本如下所示。当您使用不同软件版本时,可能需要根据实际情况调整命令和参数配置。
Nginx版本:Nginx 1.16.1
MySQL版本:MySQL 8.0.17
PHP版本:PHP 7.3.5
远程连接Linux实例。
关闭防火墙。
1)运行systemctl status firewalld命令查看当前防火墙的状态。
如果防火墙的状态参数是inactive,则防火墙为关闭状态。
如果防火墙的状态参数是active,则防火墙为开启状态。本示例中防火墙为开启状态,因此需要关闭防火墙。
2)关闭防火墙。如果防火墙为关闭状态可以忽略此步骤。
如果您想临时关闭防火墙,运行命令 systemctl stop firewalld。
说明:这只是暂时关闭防火墙,下次重启Linux后,防火墙还会开启。
如果您想永久关闭防火墙,运行命令systemctl disable firewalld。
说明: 如果您想重新开启防火墙,请参见firewalld官网信息。
关闭SELinux。
1)运行getenforce命令查看SELinux的当前状态。
如果SELinux状态参数是Disabled,则SELinux为关闭状态。
如果SELinux状态参数是Enforcing,则SELinux为开启状态。本示例中SELinux为开启状态,因 此需要关闭SELinux。
2)关闭SELinux。如果SELinux为关闭状态可以忽略此步骤。
如果您想临时关闭SELinux,运行命令setenforce 0。
说明 :这只是暂时关闭SELinux,下次重启Linux后,SELinux还会开启。
如果您想永久关闭SELinux,运行命令vim /etc/selinux/config编辑SELinux配置文件。回车后,把光标移动到SELINUX=enforcing这一行,按i键进入编辑模式,修改为SELINUX=disabled,按Esc键,然后输入:wq并按Enter键以保存并关闭SELinux配置文件。 最后重启系统使设置生效。
说明 :如果您想重新开启SELinux,请参见开启或关闭SELinux。
运行以下命令安装Nginx。
本教程将选用Nginx 1.16.1版本。
dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm
运行以下命令查看Nginx版本。
nginx -v
查看版本结果如下所示。
mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
运行以下命令安装MySQL。
dnf -y install @mysql
运行以下命令查看MySQL版本。
mysql -V
查看版本结果如下
mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
dnf -y install epel-release
dnf update epel-release
dnf clean all
dnf makecache
dnf module enable php:7.3
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
php -v
查看版本结果如下所示。
PHP 7.3.5 (cli) (built: Apr 30 2019 08:37:17) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
cat /etc/nginx/nginx.conf
在http大括号内,查看include配置项。即配置文件的默认路径。
cd /etc/nginx/conf.d
cp default.conf default.conf.bak
vi default.conf
i
进入编辑模式location
大括号内,修改以下内容。location / {
#将该路径替换为您的网站根目录。
root /usr/share/nginx/html;
#添加默认首页信息index.php。
index index.html index.htm index.php;
}
location ~ \.php$
大括号内容前的#
,并修改大括号的内容。修改完成如下所示。location ~ \.php$ {
#将该路径替换为您的网站根目录。
root /usr/share/nginx/html;
#Nginx通过unix套接字与PHP-FPM建立联系,该配置与/etc/php-fpm.d/www.conf文件内的listen配置一致。
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
#将/scripts$fastcgi_script_name修改为$document_root$fastcgi_script_name。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#Nginx调用fastcgi接口处理PHP请求。
include fastcgi_params;
}
说明 Nginx与PHP-FPM进程间通信方式有两种。
TCP Socket:该方式能够通过网络,可用于跨服务器通信的场景。
UNIX Domain Socket:该方式不能通过网络,只能用于同一服务器中通信的场景。
Esc
键,并输入:wq
保存退出文件。systemctl start nginx
systemctl enable nginx
systemctl enable --now mysqld
systemctl status mysqld
查看返回结果中Active: active (running)
表示已启动。
3.运行以下命令执行MySQL安全性操作并设置密码。
mysql_secure_installation
命令运行后,根据命令行提示执行如下操作。
Y
并回车开始相关配置。2
并回车。策略0
表示低,1
表示中,2
表示高。建议您选择高强度的密码验证策略。MySQL
的新密码并确认。本示例设置密码PASSword123!
。Y
并回车继续使用提供的密码。Y
并回车移除匿名用户。MySQL
。
Y
并回车。test
库以及对test
库的访问权限。vi /etc/php-fpm.d/www.conf
i
进入编辑模式user = apache
和group = apache
,将apache
修改为nginx
Esc
键,并输入:wq
保存退出文件。PHP-FPM
。systemctl start php-fpm
systemctl enable php-fpm
mysql -uroot -p
create database wordpress;
WordPress
库,提高安全性。MySQL
在5.7版本后默认安装了密码强度验证插件validate_password
。您可以登录MySQL
后查看密码强度规则。show variables like "%password%";
在本教程中创建用户user
,新用户密码为PASSword123.
。
create user 'user'@'localhost' identified by 'PASSword123.';
grant all privileges on wordpress.* to 'user'@'localhost';
flush privileges;
exit;
cd /usr/share/nginx/html
wget https://wordpress.org/wordpress-5.4.2.zip
说明 下载过慢或失败时,可以尝试运行命令
wget https://cn.wordpress.org/latest-zh_CN.zip
下载WordPress(cn.wordpress.org为WordPress简体中文网站,通过该命令下载的WordPress默认为中文版本)。同时您需要注意,后续操作中压缩包的名称必须替换为latest-zh_CN.zip。
unzip wordpress-5.4.2.zip
cd /usr/share/nginx/html/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php
i
键切换至编辑模式,根据已配置的WordPress数据库信息,修改MySQL相关配置信息,修改代码如下所示。WordPress网站的数据信息将通过数据库的user用户保存在名为wordpress的数据库中。// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'user');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'PASSword123.');
/** MySQL主机 */
define('DB_HOST', 'localhost');
Esc
键,并输入:wq
保存退出文件。vi /etc/nginx/conf.d/default.conf
i
键进入编辑模式。在location /大括号内,将root后的内容替换为WordPress根目录。本示例中根目录为/usr/share/nginx/html/wordpress。在location ~ .php$
大括号内,将root
后的内容替换为WordPress根目录。
修改完成后按Esc
键,输入:wq
保存并退出配置文件。
systemctl restart nginx
在本地物理机上使用浏览器访问ECS实例公网IP
,进入WordPress安装页面。
填写网站基本信息,然后单击安装WordPress。填写信息参数说明
单击登录。
输入在安装WordPress时设置的用户名testwp
和密码Wp.123456
,然后单击登录。
成功进入您个人的WordPress网站。
此时,你已经进入到wordpress后台了,网站有默认的主题,但是不好看,你可以点击外观>主题>安装主题。挑选你喜欢的主题。这里我的主题用的是Blocksy。
你还可以点击插件安装一些必要的插件。
如图,这里推荐你安装这几个插件。
Elementor编辑器支持拖拽网站,实现可视化网站开发。
1,当你安装完成wordpress后,后台会让你更新,你点击更新后,会让你连接ftp,但是这个是连不上的。
解决方案:
在网站安装根目录下,找到wp-config.php这个文件,本篇教程是如下目录;
cd /usr/share/nginx/html/wordpress
修改:在wp-config.php中添加下列三行代码:
vim wp-config.php
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
然后按Esc后,输入:wq
退出编辑器
执行如下操作,由于我将网站名由wordpress改成foxkee了,你应该将foxkee换成wordpress。
然后回车,就可以正常更新了。