好的,我按照以下指南配置了数字海洋液滴:
总结:我有一个LAMP服务器,我有一个指向我的LAMP服务器的域,它现在是https,我可以使用我创建的帐户(不是root)进入它,并且它具有启用UFW的功能。
目标: 我想从github设置一个webhook,这样当事物被合并到master中时,会被转发到droplet。
配置:
我的webroot位于:/var/www/domain-name.com/public_html
我在github repo和我的DO服务器之间有一个有效的ssh连接。
~/.ssh
(这是我的用户,而不是root,如果这很重要的话)。它崩溃的地方:
这是两种截然不同的方法。但实质上,有人说使用deploy.php
文件而另一个说不同配置使用webhook.php
。它们看起来彼此截然不同。实质上,我将它们加载到服务器上,配置它们(例如 - 更改路径等),然后将github指向它们。
在两种情况下,github都会看到它们(它会变成绿色的)。但在这两种情况下,我都无法让他们真正工作。我通过将更改从localhost推送到github进行测试,并将其合并到master(也尝试直接提交到master以防万一)。我没有得到任何服务器端,没有变化。我应该提一下,开始我用一个git克隆将repo放到我的服务器上(确保我使用ssh而不是https)。此外,我的服务器已配置为知道我的git用户名和电子邮件。
最后,我应该补充一点,我使用的两个指南似乎都希望我对www-data采取行动,但它们并没有描述为什么甚至如何。他们告诉我运行的一些命令实际上并不起作用。此外,Portent指南要求我将.ssh键保存在一个奇怪的位置(在我看来,我几乎认为这是一个错误)。
结论/要求:
谢谢。我非常接近于开发网站的更实用的方法。很想得到最后一件作品。你能提供的任何帮助都会令人惊叹。
很抱歉没有数字海洋文档的链接,作为一个新手,我只限于两个链接。
答案 0 :(得分:0)
我最终选择了什么:
第1步
通过Digital Ocean设置带有SSL加密的Ubuntu 16.04 x64 Droplet
总结 - 您现在已经完全配置了数字海洋水滴。
第2步
通过SSH - 配置Droplet
在.ssh
中创建一个/var/www
目录并授予www-data用户权限:
sudo mkdir /var/www/.ssh
sudo chown www-data /var/www/.ssh
将用户切换到www-data:
sudo -u www-data bash
cd /var/www/.ssh
生成一个ssh密钥对,用于连接您的服务器(通过www-data)和您的Github项目:
ssh-keygen -t rsa -C "IDENTIFY THE KEY BY REPO"
我也想将其命名为id_rsa_REPONAME.pub,以便更容易识别密钥对
cat id_rsa_REPONAME.pub
复制并将其粘贴为Github Repos设置中的部署密钥。
您还需要将此密钥对添加到config
文件
vim config
将创建或允许您编辑此文件(如果该文件已存在)。您需要此配置来帮助您的服务器匹配来自github的传入ssh请求。
添加代码块:
Host REPONAME github.com
Hostname github.com
IdentityFile /var/www/.ssh/id_rsa_REPONAME
保存并退出。
ssh -T git@github.com
应输出Hi YOURGITUSERNAME/REPONAME! You've successfully authenticated, but GitHub does not provide shell access.
这确认了github可以找到特定的部署密钥。您还可以在github端看到它以绿色突出显示。
exit
(这会使您退出www-data并返回到您的用户帐户)
chown www-data:www-data /the/path/to/public_html
切换回www-data进行repo的初始克隆:
sudo -u www-data bash
cd /the/path/to/public_html
克隆之前
确保您的回购根
中有一个名为githubdeploy.php
的文件
<?php `git pull`;?>
git clone THE_REPO_SSH_URL
exit
(这会使您退出www-data并返回到您的用户帐户)
在Github上:
将githubdeploy.php的url路径添加为Github Repos设置中的webhook。
DONE