分类目录归档:未分类

手动搭建WoldPress

心血来朝,想要使用woldpress来写博客了。要说由头的话,是为了细致研究下SEO的一些细节和技巧。WoldPress作为一款老牌的博客系统,这方便肯定是特别完善的。作为一个标的,可以方便对对比我的其他项目的一些SEO的问题和策略。

我这次是使用手动搭建WoldPress,主要原因是我的VPS上面已经部署了12个Demo产品,而磁盘次有65GB,现在已经有点告急了。如果你也想在VPS上搭建woldpress,不少云系统厂商带了worldpress预装系统,直接安装就可以使用了。如果你还需要安装其他的一些服务,也可以选择预先安装Panel的镜像,比如宝塔面板和1Panel面板等。宝塔面板是传统的建站面板,可以方便的管理Nginx FTP PHP Mysql等,而1Panel是构建于docker上来搭建生态额。如果你对docker不太了解,还是建议使用宝塔面板。

我这里采用的手动方式,之所以啰嗦这么多,是为了确保读者不会被我说误导。手动搭建需要的知识和面对的困难,比你想的要多很多。

1.第一步是安装Nginx
这里使用Ubuntu 24.04为示例,记录安装的步骤:
sudo apt install nginx
这里补充一些其他nginx知识,后续过程会用得到
管理:
sudo systemctl start nginx
sudo systemctl reload nginx
sudo systemctl enable nginx

开启防火墙,这一部是可选的,有些vps没有开启防火墙,可以不做这一步,另外一些云厂商的vps是在后台控制防火墙的,需要在后台开启80和443接口。
sudo ufw allow 'Nginx Full'
相关目录:
配置文件:/etc/nginx/nginx.conf
站点配置:/etc/nginx/sites-available/
启用的站点:/etc/nginx/sites-enabled/
网站默认根目录:/var/www/html/
日志文件:/var/log/nginx

2.安装PHP
安装php的步骤也是类似的,使用系统自带的apt安装即可
sudo apt install php8.3 php8.3-cli php8.3-common php8.3-fpm php8.3-mysql php8.3-curl php8.3-xml php8.3-zip php8.3-gd php8.3-mbstring php8.3-intl
这里需要注意一下php的版本好,后续会用到
一些常用的拓展,可以选择进行安装
sudo apt install php8.3-bcmath php8.3-sqlite3 php8.3-redis php8.3-imagick
配置管理:
sudo apt install php8.3-fpm
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm

3.安装Mysql
我们需要使用mysql来存储和管理我们的数据,安装命令如下:
sudo apt install mysql-server
安装只有,需要执行初始化
sudo mysql_secure_installation
他会提示设置root密码,禁止root登陆之类的安全操作,更具提示来即可
创建数据库和用户
CREATE DATABASE yourdbname; CREATE USER ‘yourusername’@’localhost’ IDENTIFIED BY ‘yourpassword’; GRANT ALL PRIVILEGES ON yourdbname.* TO ‘yourusername’@’localhost’; FLUSH PRIVILEGES;
注意需要替换里面的yourdbname,yourusername,yourpassword三个字端,这里可以为worldpress建立对应的数据库,用户和密码。
使用下面命令可以重启mysql
sudo systemctl restart mysql

4.下载WoldPress镜像
我们需要下载最新的worldpress版本
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
在/tmp目录下就得到了wordpress最新额版本
新建站点目录, 然后将worldpress拷贝到其中
sudo mkdir -p /var/www/wordpress
sudo cp -R /tmp/wordpress/* /var/www/wordpress/
设置好对应的权限
sudo chown -R www-data:www-data /var/www/wordpress
sudo chmod -R 755 /var/www/wordpress
设置好配置:
cd /var/www/wordpress
cp wp-config-sample.php wp-config.php
编辑配置文件,将之前创建的数据库配置写入其中
sudo nano wp-config.php
define( ‘DB_NAME’, ‘wordpress’ );
define( ‘DB_USER’, ‘wpuser’ );
define( ‘DB_PASSWORD’, ‘strong_password’ );

5.配置站点
上面的操作配置好了worldpress,但是想让他通过web来进行访问,还需要执行一些操作
创建站点的nginx配置:
sudo nano /etc/nginx/sites-available/zsai001.com
写入内容:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name zsai010.com;
    root /var/www/zsai010;
    index index.php index.html index.htm;

    # SSL 配置
    ssl_certificate /etc/nginx/ssl/zsai010.com.pem;        # 放置你的 SSL 证书
    ssl_certificate_key /etc/nginx/ssl/zsai010.com.key;    # 放置你的 SSL 密钥
    
    # SSL 优化配置
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    
    # 现代 SSL 配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # HSTS 配置 (可选,如果你确定只使用 HTTPS)
    add_header Strict-Transport-Security "max-age=63072000" always;
    
    # 只允许来自 Cloudflare 的连接
    if ($cloudflare_ip = 0) {
        return 403;
    }
   
    # 验证 Cloudflare 连接
    if ($http_cf_visitor !~ '.*"scheme":"https".*') {
        return 403;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;

这个nginx配置设置了跟目录为/var/www/zsai010,证书目录为/etc/nginx/ssl/zsai010.com.pem和zsai010.com.key,关于证书,我这里使用的cloudflare进行反项代理访问,使用了cloudflare的严格模式和原站点证书。好处是方便和免费,坏处是国内访问速度不佳。

5.持续集成
这部分是为了方便修改wordpress来做的,而且我自己对代码比较熟悉,更倾向于自动手动修改代码而不是使用worldpress的后台进行管理。我们在站点创建新的git目录,然后将代码上传到github。
作为一个私有的git repo,也不用担心代码和mysql密码泄漏。
创建好repo,还需要配置git Action,创建action脚本,让代码在更新的时候,直接在vps上使用git clone同步代码就可以了。这样每当我在本地改动main分支的代码,就会出发git action,git aciton就会将代码同步到vps,用户访问的时候就是新代码模式了。
由于cloudflare带有缓存,wordpress也带有缓存,新代码可能会延迟才会生效。虽然有办法,但是代码改动并不频繁,更多是发表文章,所以这里不再多少了。