CentOS7+Oneinstack+WordPress搭建个人博客

CentOS7+Oneinstack+WordPress搭建个人博客

术语解释

CentOS7一种Linux系统,Linux服务器大多都使用CentOS系统。
Oneinstack一个集成脚本,可快速搭建php网站运行环境或java网站运行环境。
WordPress最流行的一个博客系统,使用php语言编写。

安装前准备

  • 1、你需要一台买一台服务器。
  • 2、你需要一个域名,如果你没有,推荐在Freenom注册,免费一年。
  • 3、把域名添加两条A记录,都指向你的服务器,一条是www,一条是default,下图是CloudFlare的域名解析,如果你是阿里云腾讯云什么的都有对应的地方添加的,自己找找:
    Xnip2019-06-08_02-57-48.jpg
    添加后你就有了两个域名,一个是“www.xxxx.com”,一个是“default.xxxx.com”。

确定两个域名能ping通(注意“xxxx.com”要换成你自己申请的域名):

ping www.xxxx.com
ping default.xxxx.com

安装wordpress网站运行环境

先设置一下系统本地化:

echo "LANG=zh_CN.utf-8" >> /etc/environment && \
echo "" && \
echo "LC_ALL=zh_CN.utf-8" >> /etc/environment 

使配置生效:

source ~/.bashrc

安装和更新一些需要用到的工具:

yum -y install epel-release nss curl libcurl wget screen

执行以下命令下载oneinstack

wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz

解压oneinstack-full.tar.gz:

tar -zxvf oneinstack-full.tar.gz

进入解压出来的文件夹中:

cd oneinstack

创建screen会话窗口:

screen -S oneinstack

这是防止安装时间长了中途会中断,如果因为电脑睡眠、断网等原因中断了是可以恢复的,怎么恢复查看这里:Linux技巧 – 使用 screen 管理你的远程会话

运行安装脚本,运行后它可能会先更新一下yum仓库(不用管,等它停了你再操作):

./install.sh

按以下现张图填写对应数字(点击图片可放大,数据库密码设置后要记下来):
Xnip2019-06-07_21-32-34.jpg

Xnip2019-06-07_21-37-45.jpg

到了HHVM那一步选择n之后,就会开始安装了,整个安装时间看不同机器性能,大概要25分钟左右,最多不会超过半小时

安装完成会提示你是否要重启,我们输入n,选择不重启:
Xnip2019-06-08_02-03-00.jpg

获取https证书

在获取证书之前,先保证你要获取证书的域名能ping通,ping不通是无法获取证书的。

你的域名在哪里解析,就在哪里获取证书,因为以下获取证书工具需要用到这些网站的api,比如你的域名可能是阿里云注册的,有可能是freenom注册的,也有可能在阿里云或freenom注册后使用了CloudFlare的cdn,这时候阿里云或freenom那边的解析就没用了,而是交给CloudFlare来解析了,所以你就要在CloudFlare上来申请证书了。

以下我申请证书的例子就是在CloudFlare申请,如果你的域名不是用CloudFlare解析,而是用阿里云或者freenom之类的,阿里云可以用我下边说到的acme.sh,请看:https证书自动续订(renew)问题,但freenmon不行,因为freenom没有提供接口,需要手动申请,手动申请请看:为你的网站配置免费的HTTPS支持

当然,如果你是阿里云或freenom注册的域名,但又想用我现在这种方法也可以,但你得先把你的域名解析先转到CloudFlare,怎么转?请看使用CloudFlare免费cdn隐藏服务器ip(防风)

点击CloudFlare的右上角头像→点击下拉菜单中的My Profile,滚到差不多到底部,你就可以看到一个“Global API Key”和一个“Origin CA Key”,“Global API Key”就是我们要的Key:
Api keys

在你的~/.bashrc文件中添加CloudFlare的这两个变量(如果你用的是zsh那就添加到~/.zshrc),其中的CF_Email是你注册CloudFlare的邮箱,CF_Key就是你刚才拿到的“Global API Key”:

echo '' >> ~/.bashrc && \
echo "export [email protected]" >> ~/.bashrc && \
echo "export CF_Key=8530fsdfifsdfsdfsdf2dfdb46" >> ~/.bashrc

安装自动证书管理工具“acme.sh”:

curl https://get.acme.sh | sh

重新加载配置以生效:

source ~/.bashrc

运行以下命令获取通配符证书(注意要把两个“example.com”改成你的域名,不要带www或者其他开头,就纯粹的“xxxx.com”,“xxxx.top”等等),注意执行该命令前保证域名能ping通(命令哪执行就在哪ping):

acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'

在nginx目录内创建存放https证书的目录:

mkdir /usr/local/nginx/letsencrypt

获取的时候,要等待一会儿(有倒计时),等获取成功后,使用以下命令进行安装(还是一样,“example.com”改成你的域名“xxxx.com”):

acme.sh --install-cert -d 'example.com' \
--key-file       /usr/local/nginx/letsencrypt/private.pem  \
--fullchain-file /usr/local/nginx/letsencrypt/fullchain.pem

关于配置https证书,详见https证书自动续订(renew)问题

下载wordpress

进入以下目录:

cd /data/wwwroot

下载wordpress:

wget https://wordpress.org/latest.tar.gz

解压“latest.tar.gz”,解压出来是一个名为“wordpress”的文件夹:

tar -zxvf latest.tar.gz

设置wordpress文件夹的所有者和所属组为www:www

chown -R www:www wordpress

删除“latest.tar.gz”压缩包(如果你硬盘够的话也可以留着):

rm -f latest.tar.gz

配置nginx

安装完成后,创建虚拟主机配置文件夹:

mkdir /usr/local/nginx/conf/vhost/

然后创建虚拟主机文件,注意要把“www.example.com”改成你的域名(要保持“.conf”后缀结尾):

vim /usr/local/nginx/conf/vhost/www.example.com.conf

英文输入法下,按“shift+冒号”进入底行模式,输入“set paste”回车进入粘贴模式(不会显示什么,但已经进入了),按i进入编辑模式,然后把以下配置文件粘贴进去,最后按esc→“shift+冒号”→“输入w”→按回车保存:

# 虚拟主机
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com example.com;

    access_log /data/wwwlogs/www.example.com_nginx.access.log combined buffer=1k;
    error_log /data/wwwlogs/www.example.com_nginx.error.log error;

    if ($scheme = http){
        return 302 https://$host$request_uri; 
    }
    if ($host = example.com){
        return 302 $scheme://www.$host;
    }

    index index.html index.htm index.php;
    root /data/wwwroot/wordpress;

    #https start
    ssl_certificate /usr/local/nginx/letsencrypt/fullchain.pem;
    ssl_certificate_key /usr/local/nginx/letsencrypt/private.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHellA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
    #https end

    #=======gzip start =======
    #gzip on; #在http模块已经统一设置gzip
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    #=======gzip end =======

    location /youcannotfindme {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:32875;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location / {
      try_files $uri $uri/ /index.php?$args;
    }
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;

    location ~* ^/wp-content/uploads/.*\.php$ {
      deny all;
    }
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv|mp4)$ {
      valid_referers none blocked *.xiebruce.xyz www.xiebruce.xyz *.example.com www.example.com;
      if ($invalid_referer) {
          return 403;
      }
    }
    location ~ [^/]\.php(/|$) {
      #fastcgi_pass remote_php_ip:9000;
      fastcgi_pass unix:/dev/shm/php-cgi.sock;
      fastcgi_index index.php;
      include fastcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
      expires 30d;
      access_log off;
    }
    location ~ .*\.(js|css)?$ {
      expires 7d;
      access_log off;
    }
    location ~ /\.ht {
      deny all;
    }
}

注意,如果你只是单纯的搭建网站,那么以下这部分配置是可以删掉的:

location /youcannotfindme {
    proxy_redirect off;
    proxy_pass http://127.0.0.1:32866;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

这部分配置的作用是转发websocket请求到另外的服务端的,如果你没有这个需要,就可以删除,当然不删除也不会影响网站的使用。

把配置中的所有“example.com”都替换成你的域名,比如你的域名是zhangsan.com的话,那么可以先“shift+冒号”进入底行模式,输入%s/example.com/zhangsan.com/g回车即可替换,然后“shift+冒号”,输入x回车即可保存并退出,还是不会的话请看:vi/vim基础使用教程

创建一个软链,以便把nginx包含在环境变量中:

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

平滑重载nginx(让配置文件生效):

nginx -s reload

访问default.xxxx.com,看到以下界面说明成功了一半:
Xnip2019-06-08_03-17-49.jpg

点击上图中的“phpMyadmin”可进入到这里,账号是root,输入之前安装时的数据库密码:
Xnip2019-06-08_03-18-25.jpg

如图,输入数据库名为“wordpress”,选择数据库默认编码类型为“utf8mb4_general_ci”,然后点击右侧的“创建”:
Xnip2019-06-08_03-23-06.jpg

然后打开www.xxxx.com(再说一遍,xxxx.com要换成你自己注册的域名),正常的话会看到以下界面。

选择自己想要的语言,点击继续:
Xnip2019-06-08_13-21-45.jpg

点击“现在就开始”:
Xnip2019-06-08_13-22-09.jpg

填上数据库信息,按下图填写即可,除了密码要改成你自己的(还记得前面安装的时候的密码吗?):
Xnip2019-06-08_13-30-26.jpg

点击现在安装:
Xnip2019-06-08_13-23-22.jpg

填写你博客的信息(主要是用户名和密码,这是用来登录你的博客后台的):
Xnip2019-06-08_13-27-29.jpg

安装完成,点登录进入后台登录页面:
Xnip2019-06-08_13-33-07.jpg

输入刚才设置的用户名和密码登录吧:
Xnip2019-06-08_13-34-03.jpg

登录进去后可以看到博客后台:
Xnip2019-06-08_13-34-45.jpg

点左上角这里,可以进入你的博客前台:
Xnip2019-06-08_13-35-26.jpg

博客前台页面:
Xnip2019-06-08_13-36-01.jpg

本教程只涉及安装博客,涉及如何使用,如果有什么不明白,自己网上搜索吧,Wordpress的资料非常多,好了,现在你可以开始使用你的博客了!!

给nginx添加http认证

如果你有留意,你会发现刚才的default.xxxx.com直接就能打开,也不用密码,而且这并不是你才能打开,任何人只要知道你的域名,或者猜测前面是default等等都能打开,这就把你很多配置信息,包括数据库管理工具phpMyAdmin的入口都暴露在外,所以你需要给你nginx配置文件中的“default”对应的配置添加一个密码认证(配置文件在/usr/local/nginx/conf/nginx.conf),这样当你打开default.xxxx.com时,就需要输入账号密码了,注意你的网站可别加这个,可了别人就无法访问你网站了。

添加的方法请查看这篇文章:Nginx添加HTTP密码认证

打赏
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

CentOS7+Oneinstack+WordPress搭建个人博客