建站随笔-从零开始搭建WordPress

想有一个自己的网站已经很长时间了。最开始是在微软的MSN上写博客,后来被迁移到WordPress上面,从此因为网络所限访问很不稳定,结果最后彻底消失了。后面试过几个不同的网络服务,无一例外的被满屏的广告劝退。至此,决定自己搭建,我自己的网站总能说了算了吧。

搭建平台还是决定选择WordPress。原因嘛,无他,唯顺手而。

一、服务器和域名

首先需要一台服务器,如果是自娱自乐那么无所谓,自己电脑上弄个虚拟机都行。但我想可以公网访问,所以最后选了阿里云的服务器,新春活动优惠差不多100块一年,看介绍可以这个价格续费3次,所以说可以用个3、4年的样子。先用着,如果到时候涨价了,数据导出跑路换服务器呗。

域名更好解决,顺路在阿里云上申请个域名,顶级的.com也就60多块一年,便宜的一年5块钱就能解决。申请完域名一定要备案,毕竟我把服务器搭建在国内,守法那还是必须的。流程也很简单,阿里云里面有详细介绍,按照步骤一步一步填好资料,提交第二天就会接到阿里的确认信息电话,确认无误后,会给你发个验证码,按照链接进去验证一下,再等个1周左右就可以收到备案成功的通知。然后,将你的域名解析到你的服务器IP上就可以了。

二、系统和支持环境按照

说到这里,小小吐糟一句,网上能搜到的教程全都是坑,估计全是写给IT专业人士看的,完全不让零基础还有点想法的人活啊。我写这篇的决定就是由此而来,我要争取从小白的角度写个流程,目标是:哪怕Copy/Paste命令和代码,也能完成建站。

截止建站日期,WordPress的最新版本是5.7,系统需求如下:

  • PHP version 7.4+
  • MySQL version 5.6+ or MariaDB version 10.1+
  • HTTPS support(Apache或者Nginx)

我的服务器的OS是CentOS 8.2,本着省时省事的原则,能不自己编译就不自己编译。我决定全部手动安装,不用阿里云的一键部署。(其实是嫌弃阿里云部署的版本太低)

方法一:手动安装(Nginx,PHP7.4,MariaDB)

这就是我用的安装方法,下面按顺序一一列出:

1、Nginx的安装

如果您想安装较为稳定的Nginx,可以直接使用下面的命令:(默认root用户,否则每个命令前面都要加上sudo)

dnf -y upgrade
dnf -y install nginx

安装完先不用配置,等后面PHP装好一起弄。(这就是个坑,很多教程在这里就让写配置文件,还要把调用PHP的一起写进去,但只要写了,累死你也启动不了Nginx。)

2、安装PHP

先运行下面这个命令看一下软件库里面php的版本

dnf module list php

会发现预设 AppStream 软体仓库(repo,repository)提供的 PHP 版本为 7.4(正好满足要求):

接下来依次运行以下命令:

dnf module enable php:7.4
dnf install php
dnf install php-mysqlnd.x86_64

至此,Nginx和PHP安装完成,下面开始配置这2个软件。

3、配置PHP和Nginx

我们先来配置PHP。这里有一个注意事项:如果是用上面的命令安装的Nginx,那么安装过程会自动建立名字为nginx的用户名和用户组(这是默认的运行网站的用户名),所以我们后面写配置文件全部以上述用户名和用户组进行。想确定自己的用户名信息可以查看以下配置文件的第一行的user后面写的是什么,想我的就是这个样子“user nginx;“。文件路径:/etc/nginx/nginx.conf

配置PHP需要修改 php-fpm 的相关配置以支持 Nginx。

编辑 /etc/php-fpm.d/www.conf,替换以下相关配置:

user = nginx
group = nginx
listen = /run/php-fpm/www.sock
listen.allowed_clients = /run/php-fpm/www.sock
listen.owner = nginx 
listen.group = nginx
listen.mode = 0660

以下参数要注释掉:就是在前面打上“;”。因为:listen.acl_users 会覆盖 listen.owner,listen.acl_groups 会覆盖 listen.group。

;listen.acl_users = nginx
;listen.acl_groups = 

然后运行以下命令启动PHP:

systemctl enable php-fpm      #设置开机自启动
systemctl start php-fpm

使用以下命令查看运行状态:

systemctl status php-fpm

像下图这样显示绿色的active就是正常的了。

PHP配置好了,下面我们来配置nginx,我这里直接贴出配置文件,可以修改的地方我在#后面注明。照着修改就行。

首先是/etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 20m;

#下面一堆fastcgi开头的代码是优化PHP的,删掉也没影响。
    fastcgi_cache_path /usr/share/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
    fastcgi_cache_key "$request_method://$host$request_uri";
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 128k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    fastcgi_cache TEST;
    fastcgi_cache_valid 200 302 1h;
    fastcgi_cache_valid 301 1d;
    fastcgi_cache_valid any 1m;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;


        server {
        listen       80;
        listen       [::]:80;
        server_name  blog.flyneutron.com;                     #根据你自己的域名修改
        root         /usr/share/nginx/html/wordpress;         #网站的根目录,根据你自己的修改


        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            root   /usr/share/nginx/html/wordpres;            #网站的根目录,根据你自己的修改
            index  index.php index.html index.htm;
            try_files $uri $uri/ /index.php?args;
            if (-f $request_filename/index.html){
                   rewrite (.*) $1/index.html break;
            }
            if (-f $request_filename/index.php){
                   rewrite (.*) $1/index.php;
            }
            if (!-f $request_filename){
                   rewrite (.*) /index.php;
            }

        }

        rewrite /wp-admin$ $scheme://$host$uri/ permanent;

        error_page 404 /404.html;
            location = /40x.html {               #404错误提示的网页地址,你如果自己做了404网页,可以指向自己的。
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {            #50系列错误提示的网页地址,你如果自己做了,可以指向自己的
        }
    }
}

依次输入下面命令,启动nginx

systemctl enable nginx      #设置开机自启动
systemctl start nginx       #启动
systemctl status nginx      #查看状态

像下面这样,显示绿色的active就行了。

4、安装MariaDB

CentOS 8默认采用MariaDB 10.3,可以通过下面的方法直接安装:

dnf install mariadb-server
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb

安装成功后,如果出现绿色的active(running),说明安装成功。

之后启动MariaDB的一个安全脚本:

mysql_secure_installation

In order to log into MariaDB to secure it, we’ll need the current password for the root user. If you’ve just installed MariaDB, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.

输入已有root密码,没设过密码敲回车。

Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.
Set root password? [Y/n]

是否设置root密码?(Y,并输入密码)

By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Remove anonymous users? [Y/n]

默认情况下,MariaDB安装有一个匿名用户,允许任何人登录MariaDB而不必为他们创建用户帐户。这仅用于测试目的,并使安装更顺利。在进入生产环境之前,应该先删除它们。
删除匿名用户?(强烈建议选Y)

Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]

通常,只允许root用户从“localhost”连接。这可以确保有人无法从网络猜出root密码。
不允许远程root登录?(我选Y)

By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it? [Y/n]

默认情况下,MariaDB附带一个名为“test”的数据库,任何人都可以访问该数据库。这也仅用于测试,在进入生产环境之前应该删除。
删除test数据库和对它的访问权限?(选Y)

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
Reload privilege tables now? [Y/n]

按照默认选Y

至此,MariaDB已经安装完成,下面配置相关的用户和数据表。

首先登陆数据库:

mysql -u root -p

接着创建Wordpress专用数据库用户,并创建对应数据库。注意,这个用户的账户和密码会以明文写在Wordpress配置文件中,因此不能使用root用户。依次输入以下命令:

CREATE DATABASE [你自己的WordPress数据库名];     # 创建你的WordPress数据库
CREATE USER [访问WordPress用户名]@localhost IDENTIFIED BY '[WordPress数据库用户的密码]';
GRANT ALL PRIVILEGES ON [数据库名].* TO [访问WordPress用户名]@localhost IDENTIFIED BY '[WordPress数据库用户的密码]';
FLUSH PRIVILEGES;                       # 刷新数据库设置
EXIT;                                   # 退出数据库

范例如下:

CREATE DATABASE wordpress;
CREATE USER user@localhost IDENTIFIED BY '123456';       # 创建用户名为user,密码为123456的用户
GRANT ALL PRIVILEGES ON wordpress.* TO user@localhost IDENTIFIED BY '123456';  # 赋予user访问wordpress数据库的权限
FLUSH PRIVILEGES;
EXIT;

OK,至此支持环境大功告成。下面就可以安装WordPress了。一定要记住上面这些用户名和密码信息啊,下面安装WordPress系统的时候还会用到。

方法二:安装LNMP环境

这是最省事的方法,安装LNMP,一个命令全部解决(以安装1.7版为例):(这是完整教程

wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp

但是,上述办法需要服务器自己编译安装所有软件,费时比较长。我们远程连接的时候窗口经常会被各种原因掐断,所以一定要用上Screen命令。用法见这里:使用screen安装LNMP

三、安装WordPress

还记得上面设置Nginx时候,配置文件中写的网站根目录吗?在这里我用的是/usr/share/nginx/html/wordpress

在wordpress.org网站下载最新的安装包。目前最新版本是5.7。解压后将所有文件用WinScp上传至上述目录中。(这样速度最快,在阿里云的服务器用wget下载文件,如果阿里云没有对应的镜像,那简直就是折磨)

下面设置文件和文件夹的权限,依次执行以下命令:

cd /usr/share/nginx/html     #此目录一定要替换成你的网站目录
chown -R nginx:nginx wordpress
chmod 0755 wordpress
chcon -R system_u:object_r:httpd_sys_content_t:s0 wordpress
cd wordpress
chcon -R system_u:object_r:httpd_sys_rw_content_t:s0 wp-content

至此,WordPress后台所有安装完成。下面开始设置WordPress。在浏览器输入你的域名,你会看到以下界面:

还记得你前面安装MariaDB数据库时候的那些信息吗?点击“现在就开始!”输入那些数据,然后提交继续创建网站前端的管理员用户名和密码,最后用创建的账户登录信息登录就大功告成了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部