2020-11-22

Wordpress的坑

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

——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,无法超过这个尺寸。所以你的图片有超过该尺寸的需求,请向社区提问。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容