搭建wordpress的多种方法
1. 原生搭建wordpress
不要任何搭建面板,有手就行。做到小白都能搭建。
准备前提条件:
- vps一台
- 域名一个
下面开始正题
更新程序
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文件
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 #数据库登录密码
注意:将数据库名称密码配置好后,其它无需修改。也可根据自己需求修改。文章中数据库名称和密码都是示例,请使用强密码。
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
总结
借助第三方平台可以有更多中方法。