2
0

More than 3 years have passed since last update.

さくらVPSにgithubから自動デプロイしようとしてハマった話

Posted at

はじめに

Web初心者がハマった問題を共有します。
より良いソリューションがあれば、有識者の方どんどんコメントください。

やろうとしたこと

さくらのVPS上に自作のWebサイトを作るにあたって、GithubにPushしたタイミングでサーバー側にも自動で反映させたかった。

以下の記事を参考にしています。
https://qiita.com/misskabu/items/fb70d59deb02ae0efb12

この記事通りにやっている前提で書きます。

ハマったこと

エラーコードが出ていないのにVPS側で反映されない

deploy.php
<?
echo "<p>webhook start</p>";
exec('cd /home/アカウント名/www/gitpullしていたディレクトリ名/',$op);
print_r($op); 
exec('git pull');
echo "<p>webhook finish</p>";
?>

_#参考にしたページより

github側では特にエラーもはかず、こんなログを出してくる。

<p>webhook start</p>Array
(
)
<p>webhook finish</p>

echoできているのでphpは叩けているっぽい.
VPS側にSSHした時にphpを実行するとpullできているので、エラー系に落ちて何も表示できていないのかと考えた。

エラー出力してみた

deploy.php
<?
echo "<p>webhook start</p>";
exec('cd /home/アカウント名/www/gitpullしていたディレクトリ名/');
exec('git pull2>&1'$log);#エラー出力を標準出力へ
print_r($log);
echo "<p>webhook finish</p>";
?>

結果

<p>webhook start</p>Array
(
    [0] => error: cannot open .git/FETCH_HEAD: Permission denied
    [1] => 
)
<p>webhook finish</p>

権限がないらしい

じゃあお前誰やねん

deploy.php
<?php
$user = exec('whoami');
$group = exec('groups ' .$user);
echo "user:{$user}<br>";
echo "group:{$group}<br>";
echo "<p>webhook start</p>";
chdir('cd /home/アカウント名/www/gitpullしていたディレクトリ名/');
exec('git pull 2>&1', $op);
print_r($op);
echo "<p>webhook finish</p>";
?>

結果

user:apache<br>group:apache : apache

アッ、apache~~~~~~www

何わろてんねん。
適切な管理権限をapache君にも分けてあげてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0