Lemp + Wordpress 快速搭建个人博客

<span class="begin">在</span>开始前,可以先准备好用于搭建个人博客的服务器和域名,或者使用虚拟机练习搭建。服务器选择1cpu 1g内存 1M带宽的最低配置即可,后续若有需要可再升级。购买服务器时请查看平台当前正在进行的活动,通常能以非常低廉的价格购买。系统镜像这里推荐ubuntu,安装软件相对比较简单,centos则需要一定的门槛。另外,选择国内的服务器搭建网站是需要备案的,如不过不打算备案可选择香港或海外的服务器。

我的博客地址: 蓝月枫 Aitsuki

通过博客查看此教程

MySql

sudo apt install mysql-server
sudo mysql
# 创建wordpress数据库、账户、并授权。
create database wordpress;
create user username identified with 'password';
grant all privileges on wordpress.* to username;
flush privileges;
exit

将上面的username和password替换成你想要的用户名和密码,记住这个数据库和账户,之后需要写入到wordpress配置中。

Nginx

sudo apt install nginx

此时用浏览器你的网站就可以看到Nginx的默认首页了。

配置Gzip:https://kinsta.com/blog/enable-gzip-compression/

sudo vim /etc/nginx/nginx.conf

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
gzip_buffers 16 8k;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

# 或者使用 sudo service nginx reload
sudo nginx -s reload

PHP

sudo apt install php-fpm
# 安装扩展,这些扩展都是wordpress必备或推荐的。
sudo apt install php-mysql php-gd php-curl php-dom php-mbstring php-imagick php-zip php-gmp php-bcmath
# 7.4是目前最新版本,请替换成你安装的版本,尽量使用7.2以上的。
sudo vim /etc/php/7.4/fpm/php.ini

修改php配置:

# Nginx + PHP CGI的一个可能的安全漏洞,https://www.laruence.com/2010/05/20/1495.html
cgi.fix_pathinfo = 0
# 配置文件上传大小限制(上传媒体库,插件时)
upload_max_filesize = 128M
post_max_size = 128M
# 重启fpm让配置生效
sudo service php7.4-fpm restart

phpMyAdmin

phpMyAdamin是数据库管理工具,某些情况下非常有用。

# 下载phpMyAdamin
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.7/phpMyAdmin-4.9.7-all-languages.tar.gz
# 解压
tar -xf phpMyAdmin-4.9.7-all-languages.tar.gz
# 重命名
mv phpMyAdmin-4.9.7-all-languages phpMyAdmin
# 移动到html目录
sudo mv phpMyAdmin /var/www/html
# 修改目录归属
sudo chown -R www-data:www-data /var/www/html/phpMyAdmin/

配置phpMyAdmin

cd /var/www/html/phpMyAdmin
sudo cp config.sample.inc.php config.inc.php
sudo vim config.inc.php
// 在这里输入32位以内的密码,用于cookie加密,增加安全性。不用记住,尽量设置长点。
$cfg['blowfish_secret'] = '请随意输入32位以内密码';

配置phpMyAdmin的Nginx服务

# 进入sites-available目录
cd /etc/nginx/sites-available/
# 开始为phpMyAdmin配置Nginx服务
sudo vim phpMyAdmin
server {
        # 输入你希望的端口
        listen 8100 default_server;
        listen [::]:8100 default_server;

        root /var/www/html/phpMyAdmin;

        index index.php;

        server_name _;

        location / {
                try_files $uri $uri/ =404;
        }

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

让配置生效

# sites-available 目录保存我们可用的服务配置,而sites-enabled目录则相当于一个开关。
# 将我们想开启的服务软链接到sites-enabled目录即可
sudo ln -s /etc/nginx/sites-available/phpMyAdmin /etc/nginx/sites-enabled/phpMyAdmin
# 检查配置(每次修改配置后都推荐此命令检查)
sudo nginx -t
sudo nginx -s reload

现在登陆网站的8100端口(记得在服务器的安全组中放开对应端口)即可看到phpMyadmin的登陆界面,登陆时的账号密码就是前面MySql命令新建的。

phpMyAdmin 高级功能(可选)

另外phpMyAdmin首页底部可能会提示“phpMyAdmin 高级功能尚未完全设置,部分功能未激活”,不知道所谓的高级功能究竟是什么,如果感兴趣的话可以尝试开启:

sudo mysql
# 执行sql:创建了一个phpmyadmin数据库并创建若干张表
source /var/www/html/phpMyAdmin/sql/create_tabls.sql;
# 创建phpmyadmin数据库的管理账户,将pma和pmapass替换成你需要的
create user pma identified by 'pmapass';
grant all privileges on phpmyadmin.* to pma;
flush privileges;
exit

配置高级功能:

sudo vim /var/www/html/phpMyAdmin/config.inc.php
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
# 这里输入刚刚创建的用户名和密码
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
# 放开下面注释
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

重新登陆phpmyadmin即可。

Wordpress

# 下载wordpress中文版
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
# 解压
tar -xf latest-zh_CN.tar.gz
# 移动到html目录
sudo mv wordpress /var/www/html/
# 更改wordpress的owner和group,与nginx相同(www-data)
# 这是为了避免日后出现各种各样的权限问题
sudo chown -R www-data:www-data /var/www/html/wordpress

配置wordpress的Nginx服务

cd /etc/nginx/sites-available/
sudo vim wordpress
# https://www.digitalocean.com/community/tutorials/how-to-implement-browser-caching-with-nginx-s-header-module-on-ubuntu-16-04
# Expires map
map $sent_http_content_type $expires {
        default off;
        text/html epoch;
        text/css max;
        application/javascript max;
        ~image/ max;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # 增加上传文件限制大小
        client_max_body_size 128m;
        client_body_buffer_size 128m;

        # 缓存头
        expires $expires;

        root /var/www/html/wordpress;

        index index.php;

        # 输入你的域名
        server_name yourdomain.com www.yourdomain.com;

        location / {
                # 伪静态
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
}
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress
sudo nginx -t
sudo nginx -s reload

现在只需要登录你的网站,即可根据wordpress向导完成后续操作。

配置SSL证书(可选)

免费证书可以到 https://freessl.cn/ 这个网站申请,最终你能获得名为xxx.crt, xxx.key 的证书文件和密钥。

将证书和密钥上传到服务器,并放置在/etc/nginx/ssl目录,目录本身不存在需要创建。也可以放到/etc/ssl目录,或者其他目录,没有规定。

配置ssl

sudo vim /etc/nginx/sites-available/wordpress

添加以下规则:(原来的80端口改成443端口,然后重新声明一个80端口的服务重定向到443端口的服务)

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name yourdomain.com www.yourdomain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 http2;

        ssl_certificate /etc/nginx/ssl/xxx.crt;
        ssl_certificate_key /etc/nginx/ssl/xxx.key;

        add_header Strict-Transport-Security "max-age=31536000";
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5';

        ...
}
sudo nginx -t
sudo nginx -s reload

现在证书已部署,访问主页可能出现问题,需要到wordpress后台的设置-常规 配置wordpress地址和站点地址的前缀为https。

文件权限的注意事项

wordpress是部署Nginx上的,用户组是www-data。所以前面教程中就有了更改wordpress目录用户组的操作 sudo chown -R www-data:www-data wordpress,否则wordpress后台会出现很多权限导致的问题。

另外有的做法是将wordpress的读写权限放开给所有用户chmod 777,本质上和修改用户组没什么区别,但是前者更安全。

推荐插件

  • WP Mail SMTP by WPForms,邮件服务。
  • UpdraftPlus,备份。推荐只备份数据库和上传目录。
  • WP-Optimize – Clean, Compress, Cache.
  • WP Statistics,统计插件,可配合Sakura主题使用。
  • WP Githuber MD,markdown编辑器。
  • Wordfence Security,安全插件。
  • Akismet Anti-Spam,垃圾评论过滤。
  • AMP,生成AMP 页面,有利于提升 Google 排名。
  • Rank Math SEO,搜索引擎优化。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345