2020-11-22

Wordpress的坑

写在前面:这篇是给纯纯的新手看的,看完这篇建一个安全的自有站完全ok。

——muyu1900

1.建站

1.1服务器

国内服务器可选择的有阿里云、腾讯云、华为云、青云等,阿里云现在市场份额国内第一,相比其他家各个节点都是价格最便宜。但是目前阿里云亚太地区服务器会绕道日本、新加坡,就比较烦,偶尔丢包,平均下来80ms。我有提交工单给到阿里那边,对方反馈是运营商问题。腾讯、青云这两家亚太区是直连,非常赞,当然价格就会贵一些。

国外能选谷歌、亚马逊这些大牌,谷歌有墙。亚马逊能免费一年。如果要vps还能选搬瓦工。当然只是国内业务的话最好就选国内服务器。不想备案就选亚太区点。如果是准备做个跨境独立站这种,建议再仔细对比下价格跟服务,我推荐亚马逊云。

1.2环境

想完全省事的看这里:现在选服务器配置前一般会有个镜像选择,系统、环境一应俱全,你只需要下一步下一步完成付款就能得到一个wordpress安装完成且环境配置好的服务器。具体参照各提供商云服务器选购页面。这里特别说下,镜像提供一般都是免费的,但个别会有个每月服务费显示收费,字很小,不明显,大家选择的时候注意下即可。因为手动安装确实没什么难度,随便搜搜到处都是方法。

想一般省事的看这里:利用宝塔windows面板一键安装IIS组件、PHP环境、MySQL数据库。阿里云有步骤,照着来就行了。为什么说一般省事呢,因为环境安装完后期调试修改的时候,直接在面板里修改就好了,对于不熟悉命令行操作,也不知道怎么改的小伙伴非常方便。并且相关的方案搜索起来也很多。

想稍微折腾下的看这里:手动部署LNMP环境,手动部署LAMP环境。L代表linux, N代表nginx , A代表apache, M代表mysql, P 代表php。这些都是配置一个web环境所需的。以上链接都是阿里云官方的帮助链接,更新日期为2020年9月,蛮新的,而且非常详细,照着一步步来就好了。

因为涉及到手动部署,这里写几个可能会常用到的linux命令。

创建一个在aaaa/bbbbb路径下名叫ccccc的文件夹:mkdir /aaaa/bbbbb/ccccc

查找名叫php.ini的文件:find / -name php.ini

在aaaa目录下查找以.php后缀名结尾的文件:find /aaaa -iname ".php"

scp远程上传下载:

scp username@servername:/aaa/bbbb/wenjian.txt /111/2222

把servername上的/aaa/bbbb/wenjian.txt文件下载到本地的/111/2222

scp /111/2222/wenjian.txt username@servername:/aaa/bbbb/

把本地的路径为/111/2222/的wenjian文件上传至服务器为servername的/aaa/bbbb/下

vi编辑模式:用vi 命令打开文件后,按 i 开始编辑文档,按 esc 退出编辑状态,接着输入

:q! 表示不保存文档,退出vi

:wq 表示保存文档,退出vi

1.3安装

同样的,阿里云有最完整的教程,这里是链接。

2.优化

到这里,wordpress已经安装完成,如果你有域名并且解析至服务器,那么现在输入域名已经可以访问了。(国内节点请先域名备案)。没有域名的同学可以使用公网IP访问,能打开即表示安装成功。那么在使用前我们还需对它变更一些设置、优化,方便日后能安全便捷的使用及维护。

2.1安全

2.1.1不用默认设置

比如默认后台登陆地址:wp-admin wp-login

wordpress的后台默认登陆地址均为:你的域名/wp-login.php,我们需要改变它,毕竟你自己的网站,后台登陆地址你自己知道就好。我们需要修改主题文件下的functions.php文件,这里就需要find命令。

find / -name functions.php

窗口就会列出所有名为functions.php的文件。找到wordpress主题下的 即/themes下。

vi命令打开,按 i 进入编辑状态,添加如下代码:

add_action('login_enqueue_scripts','login_protection');  
function login_protection(){  
    if($_GET['自定义'] != '自定义1')header('Location: https://随便什么域名/');  
}

意思就是,登陆地址变为 https://你的域名/wp-login.php?自定义=自定义1

如果不是这个地址,那么将跳转到 https://随便什么域名/ 这个地址。

按 esc 退出编辑,输入 :wq 保存并退出。

数据库默认前缀 : wp_ 及 默认用户名:admin在 wordpress安装过程中可更改,参考前文。

2.1.2保持wordpress更新

如果点击更新提示,无法创建目录,这是由于权限问题。千万不要按照网上写的 给予目录 777 权限。解决办法是

1.参考FTP创建,在后台更新那里输入你创建好的FTP账号。

2.手动更新。备份完成后,停用插件。下载新版本wordpress 解压。删除其中wp-content文件及子文件。将新版本复制上传至原网站根目录,替换所有。再次登陆后台,会提示更新数据库,更新即可。

如果FTP没有弄好,手动上传也没做好,那么建议宁可不更新也不要给予777权限更新。

2.1.3定期备份

如果之前服务器选择了宝塔面板的,备份功能会自动含在里面。如果是手动安装环境,建议用插件来满足数据定期备份需求。

2.1.4静态化

打开nginx配置文件: vim /etc/nginx/nginx.conf

location位置下 添加如下

Location / {

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;
}

}

重启nginx : systemctl restart nginx

2.2https

现在谷歌浏览器已经把没有ssl证书的网站标记为不安全网站了,所以哪怕是为了好看,你的网站也必须要有ssl证书。ssl证书有付费免费的。这里只说免费的。

2.2.1阿里云

阿里云仅提供免费的单域名https证书,免费版一年有效期,不支持自动化申请和部署,也就是说快到期了你要自己重新申请然后部署。这是申请链接。

2.2.2腾讯云

和阿里云一样,免费版提供单域名,最长一年,不支持自动化。这是申请链接。

2.2.3certbot

certbot是一个脚本类型的Let's Encrypt证书申请客户端,需要有命令行使用经验,有效期90天。支持自动化,但是需要添加额外插件,对新手来说有一定难度。这是申请链接。

2.3.4acme.sh

acme.sh也是申请的Let's Encrypt证书。它支持自动化,有效期90天,相比certbot操作起来要简单一些。这里是项目地址。其中有中文社区。

2.3.5ohttps.com

ohttps.com类似于acme.sh,但是更加友好。可自动部署至多个节点,这点比acme.sh强。所以最推荐的是ohttps.com。这是申请链接。

以上只是证书申请,申请下来后还需要做配置安装。这里以acme.sh在nginx上为例:

安装到home目录下:~/.acme.sh/

生成有两种方式:http和DNS

acme.sh 会智能的从nginx服务器中完成验证 无需指定网站根目录:

acme.sh --issue -d 你的域名 --nginx

DNS方式:先acme.sh --issue --dns -d 你的域名 然后会生成解析记录,将这条记录添加至域名控制面板txt记录中,等待解析完成。

再重新生成证书:acme.sh --renew -d 你的域名

安装证书:一开始我们安装时在home目录下,我们不直接使用该目录下文件,因此需要拷贝出来。这里需要新建文件夹命令:mkdir 假设在ssl文件夹下: mkdir /etc/nginx/ssl

以nginx为例:

acme.sh --install-cert -d 你的域名 \
--key-file       /etc/nginx/ssl/key.pem  \
--fullchain-file /etc/nginx/ssl/cert.pem \
--reloadcmd     "service nginx force-reload"

这里对应之前生成的填写即可。

升级acme.sh到最新版:acme.sh --upgrade

自动升级:acme.sh --upgrade --auto-upgrade

关闭自动更新:acme.sh --upgrade --auto-upgrade 0

debug:acme.sh --issue ..... --debug

nginx配置:

确认开通443接口

打开nginx配置文件:vim /etc/nginx/nginx.conf nginx已经写好了ssl格式,只要把注释取消掉,指定网站根目录地址,指定证书地址即可。

对照修改即可:

server {
    listen       443 ssl http2 default_server;
    listen       [::]:443 ssl http2 default_server;
    server_name  你的域名 www.你的域名;
    root         /usr/share/nginx/html/wordpress;#你网站根目录

    ssl_certificate "/etc/nginx/ssl/域名.cer";
    ssl_certificate_key "/etc/nginx/ssl/l域名.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    include /etc/nginx/default.d/*.conf;

    location / {
    index index.php index.html index.htm;

    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;
    }
    }
    location ~ .php$ {
        root /usr/share/nginx/html/wordpress;   
        fastcgi_pass 127.0.0.1:9000;   
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;   #Nginx调用fastcgi接口处理PHP请求。
        client_max_body_size 500m;
        }

    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

这里比较容易出错,比如配置完了发现ssl成功了,但是首页403,甚至自动下载index。比较坑的地方在于nginx调用fastcgi接口处理php,如果不在443下写上,那么就会打不开网站。

2.3插件

推荐几个常用插件:

Akismet Anti-Spam* 恶评管理

Autoptimize 优化css js 等 加速网站

*Phoenix Media Rename 图片重命名

*ShortPixel 图像优化器 图片优化

*UpdraftPlus-备份/恢复 备份恢复

*Yoast SEO * SEO相关

*wp101.net中文下载镜像 中文下载镜像

当然诸如前文中提到的隐藏wp-admin \wp-login 也有插件来解决

3.维护

到这一步网站已经完全能用了,接下来你可以根据想法自行填充网站内容,做SEO准备。你可能的日常为上传内容、维护用户、打击黑站、做好收录、勾搭友链等等。不要经常更换网站主题,首页风格不要频繁做大的调整,因为这些都会影响SEO,关于SEO以后再写。

4.补充

4.1修改默认上传大小

wordpress默认新媒体上传大小为2m,这显然不够。我们需要在php.ini中修改默认上传大小。

find / -name php.ini

vi 路径/php.ini

i进入编辑:

upload_max_filesize = 200M

post_max_size = 200M

upload_max_filesize = 200M

esc退出,输入 :wq 保存退出。

重启php:service php-fpm restart

这样即可修改为默认200m上传。

4.2图片上传自动裁剪2560pix

Wordpress5.3之后的版本增加了一项功能,它会把用户上传的超过2560的图片自动裁剪至最大2560.这种一刀切的做法显然不适合所有人。当你的网站需要清晰展示高质量甚至是原图时,自动裁剪无疑是个麻烦。推荐使用Jonathan Desrosiers的Disable "BIG Image" Threshold插件。简单方便且直接。

激活插件后上传图片将不会再有自动裁剪的情况出现,但是经过测试,最大像素为13000,无法超过这个尺寸。所以你的图片有超过该尺寸的需求,请向社区提问。

你可能感兴趣的:(2020-11-22)