在 OneinStack 上安装 WordPress

2019-12-12 0 条评论 609 次阅读 0 人点赞

本文将帮助大家在 OneinStack 配置的 lnmp 上部署调试 WordPress

一、准备工作

  • 一台使用 OneinStack 安装 lnmp 环境的阿里云 CES 云服务器(这块不会的可以看我之前写的“ Ubuntu 安装 OneinsStack 教程 ”)
  • WordPress 安装包
  • ssh 和 sftp 客户端,这里我用的是 Termius 和 winSCP

二、将代码纳入版本控制并上传云端仓库

有人就问了,为啥俺得用 git 来传代码到服务器上,可视化的 FTP 客户端复制粘贴不香么?当然,手动传代码没问题,但是有时候使用 FTP 传东西有漏传的可能性,让你在关键时刻抓狂,假设你本地不断的进行版本迭代,你每次都复制粘贴的,既不方便版本管理,也不方便部署代码,包括之后的教程,我们部署首推 git,当然,我们也要根据实际变通,假设客户电脑就是内网,你云端代码没法 clone 或者 pull 下来,那你就得手动 FTP 了,用规范作为行动标杆,根据实际灵活变通

1.下载

首先去 git 官网( https://git-scm.com/downloads )下载安装包并安装,一路 next 就完事儿了。

在桌面空白处右键,选择“Git Bash Here”,打开一个 shell,然后我们需要配置一下自己的 git 信息,输入如下两行指令:

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

其中”Your Name”和”email@example.com”根据自己喜好修改即可

2.将文件夹纳入 Git 控制中

打开我们想进行版本控制的文件夹,这里使用解压后的 WordPress 文件夹,在文件夹空白处右键,选择“Git Bash Here”,打开一个 shell,然后开始初始化本地 git 仓库

git init

用命令 git add 告诉 git,把 WordPress 代码添加到仓库

git add -A

用命令 git commit 告诉 git,把文件提交到本地仓库

git commit -m "初始化 wp 项目"

3.新建一个云端 Git 仓库

我们必须用腾讯云开发者平台(原 Coding)作为云端 Git 仓库,点击该链接进入( https://dev.tencent.com/ )

进入后注册一个你的账号,并完善自己的账户信息,记住你的账号邮箱和密码,后面会用到

然后新建一个项目,填写项目名、地址(会自动生成)、描述(非必选),点击新建项目并进入新建好的项目中

然后再该项目中找到刚新建的云端 Git 仓库的地址,格式就像下面这个地址格式一样:

https://git.dev.tencent.com/JunyAn-CYW/123.git

这就是之后 WordPress 代码存放的云端仓库地址,将这个地址复制,然后我们进行接下来的操作

4.将代码推送(pull)到云端

我们回到第二步的阶段,我们已经执行 git commit 了,现在为当前初始化的仓库添加远端仓库位置

git remote add origin https://git.dev.tencent.com/JunyAn-CYW/123.git

然后推送到云端

git push -u -f origin master

上面的指令就用一次,之后使用 git push 就可以将你之后修改的代码 pull 上去了

这个过程,要是密码输错了,我们可以按照我之前的教程修改一下(点我查看

5.之后的操作

我们已经推送一次代码到云端了,当我们修改代码后,需要执行git add -Agit commit -m "巴拉巴拉"

然后当觉得需要传到云端的时候,就git push一下

三、将云端仓库代码部署到服务器

上一步我们的线上 git 仓库已经有了 WordPress 代码了,现在我们将这个代码整到服务器上,首先我们使用 Termius 链接到我们的云服务器上

1.创建二级域名

为了之后创建虚拟主机并访问我们的 WordPress 博客,我们最好的方式是解析一个二级域名到我们的服务器上,我们这里使用的是阿里云的域名服务,当然其他服务商的操作大同小异,进入阿里云域名服务,添加一个新的解析,选择如下配置:

  • 记录类型:A
  • 主机记录:wp.wkarrow.top
  • 解析路线:默认
  • 记录值:(你云主机的外网 IP)
  • TTL:10 分钟

其中

  • 主机记录这里需要填写的为你自己个性的耳机域名,你完全可以填写一个 stupid 啥的进去,到时候访问 stupid.wkarrow.top 就可以访问你的虚拟主机了,没问题后点击,几分钟后全球的 DNS 服务器就知道你这波操作了

2.创建虚拟主机

创建虚拟主机之前,我们首先可以打开阿里云的安全组将我们常用的几个端口打开,之后当用到这些端口的时候就方便了,我们首先进入阿里云云服务器控制台,找到我们的云服务器并进入

如下图所示,打开当前服务器的安全组

我们点击如图下的几步快速创建安全规则,我们这里创建的是入网方向的安全规则

这里我们快速新建的常用规则如下图所示,这里注意,授权对象填写“ 0.0.0.0/0 ” ,确认无误后,点击确认

至此,我们的安全组就配置完毕了

还记得我们当时安装 OneinStack 的位置吗?我们打开 Termius ,进入我们已经连接云服务器的 ssh 终端里,然后我们首先 cd 过去,cd 是 linux 中打开文件夹的操作

cd ~/oninstack

然后执行新建虚拟主机的指令

./vhost.sh

届时会出现如下的交互式终端页面

根据提示我们开始一步步操作即可,下面是我的操作,大家可按照该操作进行:

#######################################################################
#       OneinStack for CentOS/RedHat 6+ Debian 8+ and Ubuntu 14+      #
#       For more information please visit https://oneinstack.com      #
#######################################################################

What Are You Doing?
        1. Use HTTP Only
        2. Use your own SSL Certificate and Key
        3. Use Let's Encrypt to Create SSL Certificate and Key
        q. Exit
Please input the correct option: 3

Please input domain(example: www.example.com): wp.wkarrow.top
domain=wp.wkarrow.top

Please input the directory for the domain:wp.wkarrow.top :
(Default directory: /data/wwwroot/wp.wkarrow.top): 
Virtual Host Directory=/data/wwwroot/wp.wkarrow.top

Create Virtul Host directory......
set permissions of Virtual Host directory......

Do you want to add more domain name? [y/n]: n

Do you want to redirect all HTTP requests to HTTPS? [y/n]: y

Let's Encrypt Verify error! DNS problem: NXDOMAIN looking up A for wp.wkarrow.top
[Thu Dec 12 10:54:32 CST 2019] Create account key ok.
[Thu Dec 12 10:54:32 CST 2019] Registering account
[Thu Dec 12 10:54:35 CST 2019] Registered
[Thu Dec 12 10:54:35 CST 2019] ACCOUNT_THUMBPRINT='93VnH9X3mMGJo1_PxDavyQce_97DOaapQuDwcnq6IKg'
[Thu Dec 12 10:54:35 CST 2019] Creating domain key
[Thu Dec 12 10:54:35 CST 2019] The domain key is here: /root/.acme.sh/wp.wkarrow.top/wp.wkarrow.top.key
[Thu Dec 12 10:54:35 CST 2019] Single domain='wp.wkarrow.top'
[Thu Dec 12 10:54:35 CST 2019] Getting domain auth token for each domain
[Thu Dec 12 10:54:37 CST 2019] Getting webroot for domain='wp.wkarrow.top'
[Thu Dec 12 10:54:37 CST 2019] Verifying: wp.wkarrow.top
[Thu Dec 12 10:54:42 CST 2019] Success
[Thu Dec 12 10:54:42 CST 2019] Verify finished, start to sign.
[Thu Dec 12 10:54:42 CST 2019] Lets finalize the order, Le_OrderFinalize: https://acme-v02.api.letsencrypt.org/acme/finalize/73621753/1732999094
[Thu Dec 12 10:54:43 CST 2019] Download cert, Le_LinkCert: https://acme-v02.api.letsencrypt.org/acme/cert/0362a64583dbdca9cf19e59210e4ca33a33d
[Thu Dec 12 10:54:44 CST 2019] Cert success.
-----BEGIN CERTIFICATE-----
MIIFVDCCBDygAwIBAgISA2KmRYPb3KnPGeWSEOTKM6M9MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTEyMTIwMTU0NDJaFw0y
MDAzMTEwMTU0NDJaMBkxFzAVBgNVBAMTDndwLndrYXJyb3cudG9wMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwW5xm/PsiEOv2DqW325ufUJ8yjqAk/N6
ykfGyhfDiwnkFQ37wln3I38nVBZcLuiDERMS2nlNvJkPhhD0JyJTwCP9hAFxB8YH
5OdpebsncxjAz8tTODuuGwLVbCOVl5cCYHst1iv0DXOU/m0/tKJ8qLLaGkLWfP0V
wjL7MDdLCiB+rzWb1tEvjp6hVe4jLTXg1Yb1ofAD1xLfmP5EwbncyqVf88MSmxpE
lwR3qVdTofkg9QL0QDs6lve+xFu/ZyrITlCFJjaf5tdpiOWngm6H6wESTUMoNRU3
b+Wh4v5vPcj3pGPdul5eFnX4M7O9YoAxNeCTcp6fPt1FVF2LEc60cQIDAQABo4IC
YzCCAl8wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQA9vDesXVXVONGc7CCkxp4r2Hu
bDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj
MGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v
cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v
cmcvMBkGA1UdEQQSMBCCDndwLndrYXJyb3cudG9wMEwGA1UdIARFMEMwCAYGZ4EM
AQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0
c2VuY3J5cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHcAXqdz+d9WwOe1
Nkh90EngMnqRmgyEoRIShBh1loFxRVgAAAFu+AetaQAABAMASDBGAiEAnAcre/9Y
QQ1OO21qpKig1/oG+EJxRNaVvfoCx7tDARgCIQCJSXwJLuD6TCDrfCQDKlARJ2Vi
qCu9J7c9I1k8XbMapwB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5Be
AAABbvgHrUAAAAQDAEYwRAIgaySpm0Hq8IidX/qIf5GJbhuLP1WSt/xkyY4K+ht0
VK0CIHP/GrBq+M40rLZF0Y2B/hMj4y/Afi/j4b15Kr+Giw/pMA0GCSqGSIb3DQEB
CwUAA4IBAQBDVg/ohTrggKMybz1bUX+UcZKQ/LmibKfMvRLSgd5ZozXRNZoJ/2sn
AAyt+7p0zcAlJ88kmbVVHT8lfsqGXSUq5j4FggnxrInSpuzEJO0sePumXsMqP9Px
R0LAZNIUWF8j6HnXIbKwh9tHftrVrvnZn4QwQ5Tp0+aQKN7Ov59QE/1Eh9WXBGMk
5qYQl55MMs7NnL1yMLyOhoHDpXTMsv6nGd5tjlXbKqQu4g0shcYKquJi7ZFmur1D
mhl9GMEyZDQFp967SpXR9QGB63hGKBQJdgks6EIbcaas9m6WBP2JRVHnaeKBJooM
TYBiDVFai/+/RTgIFB/Seu6eEb79cgos
-----END CERTIFICATE-----
[Thu Dec 12 10:54:44 CST 2019] Your cert is in  /root/.acme.sh/wp.wkarrow.top/wp.wkarrow.top.cer 
[Thu Dec 12 10:54:44 CST 2019] Your cert key is in  /root/.acme.sh/wp.wkarrow.top/wp.wkarrow.top.key 
[Thu Dec 12 10:54:44 CST 2019] The intermediate CA cert is in  /root/.acme.sh/wp.wkarrow.top/ca.cer 
[Thu Dec 12 10:54:44 CST 2019] And the full chain certs is there:  /root/.acme.sh/wp.wkarrow.top/fullchain.cer 

Do you want to add hotlink protection? [y/n]: n

Allow Rewrite rule? [y/n]: y

Please input the rewrite of programme :
wordpress,opencart,magento2,drupal,joomla,codeigniter,laravel
thinkphp,pathinfo,discuz,typecho,ecshop,nextcloud,zblog,whmcs rewrite was exist.
(Default rewrite: other): wordpress
You choose rewrite=wordpress

Allow Nginx/Tengine/OpenResty access_log? [y/n]: y
You access log file=/data/wwwlogs/wp.wkarrow.top_nginx.log

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Reload Nginx......

#######################################################################
#       OneinStack for CentOS/RedHat 6+ Debian 8+ and Ubuntu 14+      #
#       For more information please visit https://oneinstack.com      #
#######################################################################
Your domain:                  wp.wkarrow.top
Virtualhost conf:             /usr/local/nginx/conf/vhost/wp.wkarrow.top.conf
Directory of:                 /data/wwwroot/wp.wkarrow.top
Rewrite rule:                 /usr/local/nginx/conf/rewrite/wordpress.conf
Let's Encrypt SSL Certificate:/usr/local/nginx/conf/ssl/wp.wkarrow.top.crt
SSL Private Key:              /usr/local/nginx/conf/ssl/wp.wkarrow.top.key

我来解释一下其中的几步:

What Are You Doing?
        1. Use HTTP Only
        2. Use your own SSL Certificate and Key
        3. Use Let's Encrypt to Create SSL Certificate and Key
        q. Exit
Please input the correct option: 3

这里第 3 个是建立 HTTPS 项目,并且 Let's Encrypt 将会免费给站点颁发一个合法的 ssl 证书,我们就选这个

当然,我们得有一个解析过了的域名才行,否则无法给你下发 ssl 证书

当然,你也可以选择 1,就是不用 ssl 证书认证的站点,不影响你的学习,适合我们开发测试用,但是我们不提倡网站不上 ssl 证书认证

Please input domain(example: www.example.com): wp.wkarrow.top
domain=wp.wkarrow.top

这是提示让我们输入域名,这时候填写我们刚才解析的域名,wp.wkarrow.top

Please input the directory for the domain:wp.wkarrow.top :
(Default directory: /data/wwwroot/wp.wkarrow.top): 
Virtual Host Directory=/data/wwwroot/wp.wkarrow.top

让我们确定代码在服务器本地文件夹的名,直接回车,默认按照域名作为文件夹名即可,之后的项目也这样弄,方便统一管理

Do you want to add more domain name? [y/n]: n

这是问我们要不要添加指向当前主机的其他域名,我们一个就够了,这里不需要

Do you want to redirect all HTTP requests to HTTPS? [y/n]: y

这里是问我们是否将全部请求都转为 HTTPS请求,当然了。若你之前选择建立一个 http 站点,则没有这个选项

Do you want to add hotlink protection? [y/n]: n

这里是问我们是否添加防盗链,不需要

Allow Rewrite rule? [y/n]: y

Please input the rewrite of programme :
wordpress,opencart,magento2,drupal,joomla,codeigniter,laravel
thinkphp,pathinfo,discuz,typecho,ecshop,nextcloud,zblog,whmcs rewrite was exist.
(Default rewrite: other): wordpress
You choose rewrite=wordpress

这里是问是否添加静态规则,这里我们选择是,并填写添加的规则为 WordPress

大家也可以看到这里有很多静态规则,当我们学会部署 WordPress 后,像 Laravel 项目、typecho 博客等都是类似的操作,这里对应修改相关参数即可

Allow Nginx/Tengine/OpenResty access_log? [y/n]: y
You access log file=/data/wwwlogs/wp.wkarrow.top_nginx.log

这里询问是否允许创建日志文件,当然需要了,便于后期运维分析

#######################################################################
#       OneinStack for CentOS/RedHat 6+ Debian 8+ and Ubuntu 14+      #
#       For more information please visit https://oneinstack.com      #
#######################################################################
Your domain:                  wp.wkarrow.top
Virtualhost conf:             /usr/local/nginx/conf/vhost/wp.wkarrow.top.conf
Directory of:                 /data/wwwroot/wp.wkarrow.top
Rewrite rule:                 /usr/local/nginx/conf/rewrite/wordpress.conf
Let's Encrypt SSL Certificate:/usr/local/nginx/conf/ssl/wp.wkarrow.top.crt
SSL Private Key:              /usr/local/nginx/conf/ssl/wp.wkarrow.top.key

最后 OneinStack 会给刚刚新建的虚拟主机的信息,我们后面会用到的

3.创建数据库

打开浏览器,在地址栏输入服务器的公网 IP,就可以进入OneinStack 后台,选择 phpMyAdmin,输入咱们当时配置的数据库的 root 账户登陆进去,忘了?点这里

phpMyAdmin 的可视化后台就展示在我们的眼前了,我们可以在这里进行数据库的可视化管理,非常方便,大家可以自行体验,我们打开它里面的控制台,如图

接下来就开始建立针对我们 WordPress 博客的数据库账户和数据库了,这里就可以参考上我之前写的“ MySQL新建用户和数据库的代码 ”

先创建用户。这里建立了一个名为“ wordpress ”,密码为“ wordpress123”的账户,你们自己定就行,无所谓,注意密码复杂度,保证安全

create user wordpress@'%' identified by 'wordpress123'

然后建库,这里建立了一个名为 wordpress 的数据库

create database wordpress

然后授权

grant all privileges on wordpress.* to wordpress@'%' with grant option

最后,你会得到如下的提示,数据库就准备完毕了

4.代码部署

万事俱备,只欠东风。开始将代码通过 Git 部署到服务器上吧!

我们使用 OneinStack 新建的全部虚拟站点都在 /data/wwwroot 下,我们 cd 过去

cd /data/wwwroot
ll

ll 指令就是列出当前文件夹下的文件,其他的类似指令大家可以自己尝试

看到我们刚才新建的 wp.wkarrow.top了吗?当我们访问域名的时候,Nginx 会将访问请求指向到对应的虚拟主机上,然后访问到对应的文件上

其实我们解析域名,就是让域名与服务器绑定起来,让域名的访问能够正确的指向到服务器上;因为一天服务器可以建立理论上无数多的虚拟站点,这时候我们使用 OneinStack 建立虚拟主机,新建后Nginx就会区分每个指向本服务器的请求并将其引导到正确的位置上

我们 cd 进去

cd wp.wkarrow.top

进来后,里面应该是空空如也的,这时候就可以将云端的代码 clone 下来了,执行如下代码

git clone https://e.coding.net/nightingalewk/wp.git .

注意一下几点

  • 代码最后输入完云端 Git 地址后还有一个空格和英文句号,否则将会在 wp.wkarrow.top 文件夹下又建立一个包含代码的文件夹,不需要这个多余的“外壳”,加上空格和点就不会了
  • 这个云端 git 仓库地址为 https 地址,clone 时需要输入密码,这里指的就是你通讯云开发者平台的邮箱和密码,大家可以了解一下 ssh 地址,可以实现免密推拉,后期我会出教程教大家的

完成后执行 ll 指令会看到我们 clone 下来的代码

部署就这些,就这么简单、优雅、省心

至此,我们的域名可以正确的访问到我们的博客系统上了,我们访问 wp.wkarrow.top ,就会看到如下画面

大功告成

四、配置 WordPress

是不是激动了,别急,完成最后一步,我们给刚刚部署的代码提权,否则很多操作会提示无权限,当前我们是在 wp.wkarrow.top 文件夹上,我们 cd 到上一层,也就是 wwwroot 文件夹上

cd ..
ll

开始提权

sudo chown -R www wp.wkarrow.top
sudo chmod -R 777 wp.wkarrow.top

完成提权

然后回到浏览器,我们开始配置 wordpress,还记得我们在 phpMyAdmin 中创建的用户和数据库了吗?,在如图界面填写上去,这一步报错的基本上是数据库信息写错误

若有下图提示,则表明 WordPress 与数据库的连接完成

下一步我们继续配置博客站点信息,自己写就行,一定记住你写的东西哦,别忘了

填写完毕后点击“安装 wordpress”,wp 会根据你填写的信息自动安装,这个过程用不了多久

接下来,我们登录

好了, WordPress 的大门已经为你打开了,这是后台管理界面

访问域名就可以看到我们的站点的前端界面了

之后建议大家自己体验调教自己的 WordPress,尝试自己换个主题,发个文章,将自己的网站打造一番

成功建站的同学在本文章下面留下你的域名吧!

荆轲刺秦王,我们下一期再见

萌芽创想

这个人太懒什么东西都没留下

文章评论(0)