搭建wordpress的多种方法

1. 原生搭建wordpress

不要任何搭建面板,有手就行。做到小白都能搭建。

准备前提条件:

  1. vps一台
  2. 域名一个

下面开始正题

更新程序
apt autoremove && apt-get dist-upgrade && apt install -y curl wget sudo socat
安装docker
curl -fsSL https://get.docker.com | sh
  • curl: 这是一个命令行工具,用于获取或发送数据,包括HTTP,HTTPS等。
  • -fsSL: 这是curl命令的选项。
  • -f--fail:这将会让 curl 在HTTP请求失败时结束,例如当服务器返回404状态码(即,网页不存在)时。
  • -s--silent:使得 curl 在传输过程中减少必要的输出,让过程看起来更平滑,错误信息也不会被直接打印出来。
  • -S--show-error:与 -s 选项相反,即使在 -s/--silent 模式下,错误信息也会被打印出来。
  • -L--location: 如果服务器报告该页面有其他地方,那么这个选项将使curl对服务器返回的所有“Location:”引导的页面做进一步的处理,也就是curl 会重新定向到新的位置。
  • https://get.docker.com: 这是要获取的文件或资源的网址。
  • |: 这是管道符号,它会把左边命令的输出作为右边命令的输入。
  • sh: 这是一个shell命令解释器,sh命令会读取命令输入,再执行相应的命令。
  • 总结一下,这条命令的作用是:curl会安静地从指定网址下载数据,如果发现页面有重定向,curl会自动跟踪重定向,即使有错误也会显示出来。然后输出的数据会通过管道传递给 sh,由 sh 执行这些数据中的命令。因此这条命令会下载并执行 https://get.docker.com 网页中的脚本,那个脚本是用来安装 Docker 的。
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • curl -L: curl 命令用于从网络上下载数据,-L 选项让 curl 在遇到服务器返回的重定向是会自动的去目标地址下载。
  • "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)": 这是你想要使用 curl 命令下载的 Docker Compose 二进制文件的 URL。$(uname -s) 和 $(uname -m) 是 shell 命令,分别用于获取你的操作系统名称和硬件架构名称,并且会被替换为你的实际操作系统名称和硬件架构名称。所以,这个 URL 总的来说是根据你的操作系统和硬件架构动态确定的。
  • -o /usr/local/bin/docker-compose: -o 选项让 curl 将下载下来的数据写入到指定的文件,这里指定的文件是 /usr/local/bin/docker-compose。这个路径通常会被包含在系统的环境变量 PATH 中,所以放在这里的二进制文件可以在任何位置运行。
  • 因此,这个命令总体在做的是,下载适合你的操作系统和硬件架构的 Docker Compose 的最新版,然后将下载下来的文件保存到 /usr/local/bin/docker-compose,从而你可以直接使用 docker-compose 这个命令。
chmod +x /usr/local/bin/docker-compose
  • chmod:这是一个 Unix 命令,用于改变文件或目录的权限。
  • +x:这是一个操作符,表示增加“执行”权限。当对一个文件或目录执行此操作时,会为其添加“执行”的权利,即意味着此文件可以被系统运行或者此目录可以被访问。
  • /usr/local/bin/docker-compose: 这就是你想改变权限的文件,该文件是你刚刚使用 curl 命令下载并保存的 Docker Compose 文件。
  • 因此,命令chmod +x /usr/local/bin/docker-compose的作用就是给/usr/local/bin/docker-compose这个文件添加执行权限,这样就可以直接运行它了,而不需要像sh /usr/local/bin/docker-compose这样去运行。

配置文件

进入/home/web目录。配置docker-compose.yml和nginx.conf文件

  1. docker-compose.yml文件配置

     version: '3.8'
     services:
       nginx:
         image: nginx
         container_name: nginx
         restart: always
         ports:
           - 80:80
           - 443:443
         volumes:
           - ./nginx.conf:/etc/nginx/nginx.conf
           - ./certs:/etc/nginx/certs
           - ./html:/var/www/html
    
       php:
         image: php:fpm
         container_name: php
         restart: always
         volumes:
           - ./html:/var/www/html
    
       mysql:
         image: mysql
         container_name: mysql
         restart: always
         volumes:
           - ./mysql:/var/lib/mysql
         environment:
           - MYSQL_ROOT_PASSWORD=webroot
           - MYSQL_DATABASE=web
           - MYSQL_USER=adcd       #数据库登录名称
           - MYSQL_PASSWORD=1234   #数据库登录密码
    

注意:将数据库名称密码配置好后,其它无需修改。也可根据自己需求修改。文章中数据库名称和密码都是示例,请使用强密码。

  1. nginx.conf文件配置

     events {
         worker_connections 1024;
     }
    
     # HTTP
     http {
         include       /etc/nginx/mime.types;
         default_type  application/octet-stream;
         sendfile        on;
         keepalive_timeout  65;
         client_max_body_size 1000m;  
         #上传限制参数1G以内文件可上传
    
         # HTTP server
         server {
             listen 80;
             server_name 域名;
             # Redirect all HTTP requests to HTTPS
             return 301 https://$host$request_uri;
         }
    
         # HTTPS server
         server {
             listen 443 ssl ;
             server_name 域名;
             # http2 on;
             ssl_certificate /etc/nginx/certs/cert.pem;
             ssl_certificate_key /etc/nginx/certs/key.pem;
             root /var/www/html;
             index index.php;
    
             # rewrite ^/vip.php(.*)$ /vip.php?s=$1 last;
             try_files $uri $uri/ =404;
    
             # PHP-FPM configuration
             location ~ \.php$ {
                 fastcgi_pass php:9000;
                 fastcgi_index index.php;
                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                 include fastcgi_params;
             }
         }
     }
    

注意:域名是输入自己的域名。示例:www.boke.asia。其它无需修改。

申请证书

curl https://get.acme.sh | sh
  • 下载安装
~/.acme.sh/acme.sh --register-account -m xxxx@gmail.com
  • ~/.acme.sh/acme.sh: 这是 acme.sh 脚本的位置。这个脚本用来处理和 Let’s Encrypt SSL 证书相关的所有事宜。
  • --register-account: 这个选项表示你想要注册一个新的 Let’s Encrypt 账号。
  • -m xxxx@gmail.com: -m 选项后面的是你想要与账号关联的电子邮件地址。Let’s Encrypt 会使用这个邮件地址来向你发送重要的通知,比如你的 SSL 证书即将到期等。
  • 这条命令的意思是:在你的系统中,用 acme.sh 脚本来注册一个新的 Let’s Encrypt 账号,并把 xxxx@gmail.com 这个邮件地址与新账号关联起来。
~/.acme.sh/acme.sh --issue -d xxx.com --standalone
  • ~/.acme.sh/acme.sh: 这是acme.sh脚本在你的系统上的路径。acme.sh脚本用于处理所有与Let’s Encrypt SSL证书相关的任务。
  • --issue: 这个参数意味着你希望申请(issue)一个新的证书。
  • -d xxx.com: -d参数后面是你希望为之申请SSL证书的域名,在这里,该域名是xxx.com。
  • --standalone: 这个参数告诉acme.sh脚本使用独立模式(standalone mode)来验证你对上述域名的所有权。这通常会启动一个暂时的服务器用于完成验证,常在运行服务的服务器上完成。
  • 整条指令的大意是:使用acme.sh脚本为域名xxx.com申请一个新的Let’s Encrypt SSL证书,并启动一个临时的服务器来验证你对该域名的所有权。

安装证书

~/.acme.sh/acme.sh --installcert -d www.h-b-b.asia --key-file /home/web/certs/key.pem --fullchain-file /home/web/certs/cert.pem
  • ~/.acme.sh/acme.sh: 这是 acme.sh 脚本的位置,acme.sh 脚本用于处理与 Let’s Encrypt SSL 证书相关的所有任务。
  • --installcert: 这个参数表示你要安装一个证书。
  • -d xxx.com: -d 参数后面的是你要安装 SSL 证书的域名,在这种情况下,就是 xxx.com。
  • --key-file /home/web/certs/key.pem: 这个参数用于指定私钥文件应该存放的位置,这里是 /home/web/certs/key.pem。
  • --fullchain-file /home/web/certs/cert.pem: 这个参数用于指定完整证书链文件应该存放的位置,这里是 /home/web/certs/cert.pem。
  • 整条命令的意思是:使用 acme.sh 脚本安装在 xxx.com 上的证书,同时指定私钥和完整证书链应该存放的位置。

拉去官方代码(二选一)

maccms10

苹果CMS(maccms10)主要是一个用于创建和管理网站内容的开源内容管理系统。它被广泛用于创建、管理电影、电视剧、动漫、综艺节目等多媒体内容的网站。

cd /home/web && wget https://github.com/magicblack/maccms_down/raw/master/maccms10.zip && sudo apt-get install -y unzip && unzip maccms10.zip -d html && rm maccms10.zip && mv /home/web/html/maccms10-master/* /home/web/html/
  • cd /home/web: 切换当前工作目录到 /home/web
  • wgethttps://github.com/magicblack/maccms_down/raw/master/maccms10.zip:从Github下载maccms10的zip压缩包。
  • sudo apt-get install -y unzip: 安装unzip工具,用于解压zip压缩的文件。
  • unzip maccms10.zip -d html: 使用unzip命令将下载的maccms10.zip解压到html目录下。
  • rm maccms10.zip: 删除下载的maccms10.zip压缩包。
  • mv /home/web/html/maccms10-master/* /home/web/html/: 将解压后的所有文件,从maccms10-master目录移动到html目录下。有可能文件进行压缩时,所有文件都被放置在一个maccms10-master文件夹里,通过这个命令,可以将文件放置在html根目录下。
wordpress

WordPress是一个使用PHP语言开发的开源博客及CMS(内容管理系统)平台,它让用户能够轻易地创建和维护自己的网站或博客。市面30%的网站都是用的这家。

cd /home/web && wget https://cn.wordpress.org/wordpress-6.4.3-zh_CN.zip && sudo apt-get install -y unzip && unzip wordpress-6.4.3-zh_CN.zip -d html && rm wordpress-6.4.3-zh_CN.zip && mv /home/web/html/wordpress/* /home/web/html/
  • cd /home/web: 将当前工作目录切换到 /home/web
  • wget https://cn.wordpress.org/wordpress-6.4.3-zh_CN.zip: 使用 wget 工具,从WordPress官方网站下载WordPress的压缩文件。
  • sudo apt-get install -y unzip: 使用 apt-get 命令和 sudo 权限来从标准Linux仓库安装 unzip 工具。
  • unzip wordpress-6.4.3-zh_CN.zip -d html: 解压下载下来的WordPress压缩文件,解压到html目录。
  • rm wordpress-6.4.3-zh_CN.zip: 删除WordPress压缩文件,因为它已经被解压并不再需要了。
  • mv /home/web/html/wordpress/* /home/web/html/: 将WordPress文件从wordpress目录移动到上一层的html目录。
  • 这条命令的作用是下载,并解压安装WordPress,然后进行必要的文件移动来组织你的目录结构。

运行docker-compose并设置访问权限

cd /home/web && docker-compose up -d
docker exec -it nginx chmod -R 777 /var/www/html
docker exec -it php chmod -R 777 /var/www/html

安装PHP扩展

docker exec php apt update && docker exec php apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick
docker exec php docker-php-ext-install mysqli pdo_mysql zip exif gd intl bcmath opcache
docker exec php pecl install imagick && docker exec php sh -c 'echo "extension=imagick.so" > /usr/local/etc/php/conf.d/imagick.ini'
docker exec -it php sh -c 'echo "upload_max_filesize=50M \n post_max_size=50M" > /usr/local/etc/php/conf.d/uploads.ini'
docker restart php

到此处网站已经搭建成功了。

跳过FTP更新主题插件的限制(可选)

注意:此条指令不可重复运行!如果执行此条指令导致页面出现异常,检查编辑 vim /home/web/html/wp-config.php 这个文件最下面一行这个参数《define(‘FS_METHOD’, ‘direct’);
》如果有两个这样相同的参数,就只保留一个就行。

echo "define('FS_METHOD', 'direct');" >> /home/web/html/wp-config.php
  • echo "define('FS_METHOD', 'direct');"echo 是用来输出信息的命令。在这段指令中,echo 将输出 "define('FS_METHOD', 'direct');" 这段文字。
  • >> /home/web/html/wp-config.php>> 是一个重定向操作符,它代表将前面 echo 命令的输出添加到 /home/web/html/wp-config.php 这个文件的末尾。如果文件不存在,此命令会创建一个。
  • 所以整条指令的意思是:把 define('FS_METHOD', 'direct'); 这行代码追加到 /home/web/html/wp-config.php 文件的末尾。
  • 此行代码的作用是在 WordPress 配置文件(wp-config.php)中设定了文件系统的访问方式为直接方式(’direct’)。这通常被用于解决 WordPress 在尝试安装、更新插件、主题或者自身时,需要 FTP 或者 FTPS 凭据的问题。这是因为 WordPress 在某些主机环境中不能直接访问文件系统,需要设定一个访问方式。设定为 ‘direct’ 就是告诉 WordPress 可以直接访问文件系统,无需再询问 FTP 凭据。不过,这样做可能会有一些安全风险,因为如果网站被攻击,攻击者也可以直接访问文件系统。所以,除非有必要,或者对系统安全性有足够的信心,否则不建议这样设置。

站点数据迁移备份

cd /home && tar -czvf web.tar.gz web/
  • cd /home &&:这部分命令首先会将当前工作目录更改为/home目录,cd /home表示进入/home目录。&&是逻辑运算符,表示前一个命令成功执行后才会执行下一个命令。
  • tar:这是一个用于打包文件的命令。
  • -czvf:这是tar命令的选项参数的组合含义:
    • -c:创建一个新的打包文件。
    • -z:使用gzip压缩打包文件。
    • -v:显示详细的打包过程。
    • -f:指定打包后的文件名。
  • web.tar.gz:这是指定打包后生成的压缩文件的名称为web.tar.gz.tar.gz是常见的压缩文件扩展名。
  • web/:这部分是指定要打包和压缩的目标目录或文件。在这个命令中,web/表示将web目录及其内容打包压缩。
  • 综合起来,这条命令的作用是在进入/home目录后,将web目录及其内容打包并使用gzip压缩,生成一个名为web.tar.gz的压缩文件。
cd /home && tar xvzf web.tar.gz
  • cd /home &&:这部分命令首先会将当前工作目录更改为/home目录,cd /home表示进入/home目录。&&是逻辑运算符,表示前一个命令成功执行后才会执行下一个命令。
  • tar:这是一个用于解压缩文件的命令。
  • xvzf:这是tar命令的选项参数的组合含义:
    • -x:解压缩打包文件。
    • -v:显示详细的解压缩过程。
    • -z:表示使用gzip解压缩。
    • -f:指定要解压缩的文件。
  • web.tar.gz:这部分是指定要解压缩的压缩文件名称为web.tar.gz.tar.gz是常见的压缩文件扩展名。
  • 综合起来,这条命令的作用是在进入/home目录后,解压缩名为web.tar.gz的压缩文件,并将其内容解压缩到当前目录下。

2. 本地搭建wordpress

准备条件

  • 一个ubunt或者其它liunx系统环境

安装docker

curl -fsSL https://get.docker.com | sh

安装composer

sudo apt-get install composer
  • Composer 是一个 PHP 的依赖管理工具。它使得你可以声明你项目中所依赖的其它外部工具库,并将它们引入到你的项目中。Composer 也会自动将这些依赖关联到一起,你只需要专注于你的项目

新建目录编辑配置文件

mkdir wordpress && cd wordpress && touch docker-compose.yml && vim docker-compose.yml

新建目录编辑配置文件

version: "3.8"
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: lockdate    #请记住
      MYSQL_USER: lockdate        #请记住
      MYSQL_PASSWORD: lockdate    #请记住

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: lockdate
      WORDPRESS_DB_PASSWORD: lockdate
      WORDPRESS_DB_NAME: lockdate

volumes:
  db_data: {}
  wordpress_data: {}

启动docker

docker-compose up -d

注意:如果启动不成功,执行如下指令后重启启动docker(二选一)

snap install docker
apt install docker-compose

访问网址

网址就是本地IP和8000端口。示例:
http://192.168.155.110:8000

总结

借助第三方平台可以有更多中方法。