0

完全にオフラインの環境でWebサイトを開発しています。また、Laravelオフライン環境でGitlab-runnerとの継続的な統合(CentOS 7)

CentOSの7.私はCIのためのgitlabランナーを使用して、ホストがある問題がgitlabランナーがlaravelを実行するためapacheユーザーを使用していますlaravelアプリケーションとApacheを展開するためのCentOS上でgitlab-runnerユーザーを使用していることです。 ファイルの所有権を変更するまで、私はPermission deniedエラーが発生しました。その後私は、Apacheのログに、このエラーを取得する:

Uncaught UnexpectedValueException: The stream or file "storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

monologのようないくつかのベンダー・ライブラリがstorage/logs/laravel.logにエラーまたはデバッグログを書きたいようだが、それは許可拒否取得します。 :(

.gitlab-ci.yml

stages: 
    - build 
    - test 
    - deploy 

buildBash: 
    stage: build 
    script: 
    - bash build.sh 

testBash: 
    stage: test 
    script: 
    - bash test.sh 

deployBash: 
    stage: deploy 
    script: 
    - sudo bash deploy.sh 

build.sh

#!/bin/bash 

set -xe 

# creating env file from production file 
cp .env.production .env 

# initializing laravel 
php artisan key:generate 
php artisan config:cache 

# database migration 
php artisan migrate --force 

deploy.sh

#!/bin/bash 

PWD=$(pwd)'/public' 
STG=$(pwd)'/storage' 

ln -s $PWD /var/www/html/public 
chown apache.apache -R /var/www/html/public 
chmod -R 755 /var/www/html/public 
chmod -R 775 $STG 

私はgitlabの実行を使用しています正しい?パーミッション拒否エラーを修正するにはどうすればよいですか?

答えて

0

SELinuxの

私は問題を発見し、それは、SELinuxだった、いつものようにそれは、SELinuxだったと私は問題何


初めでそれを無視:

あなたはls -lZコマンドでファイルのselinuxコンテキストを見ることができます。デフォルトでは、wwwのすべてのファイルはhttpd_sys_content_tです。問題はselinuxだけですapacheがこれらのファイルを読み込めるようにします。 storagebootstrap/cacheのコンテキストを書き込み可能に変更する必要があります。

は4 Apacheのコンテキストタイプがあります。

  • のhttpd_sys_content_t:読み取り専用のディレクトリとファイル
  • httpd_sys_rw_content_t
  • httpd_log_tアパッチ
  • で使用される読み書き可能なディレクトリとファイル: Apacheでログファイルとディレクトリに使用されます。
  • http d_cache_t:何をするキャッシュファイルやディレクトリ

のためのApacheが使用する:policycoreutils-pythonsemanageコマンドをインストールした後、すべての優れたコマンドに対してpolicycoreutils-pythonをインストール

yum install -y policycoreutils-python

最初利用可能なので、次のようにファイルのコンテキストを変更することができます:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?"

このコマンドで変更をコミットすることを忘れないでください:

restorecon -Rv /var/www/html/laravel/storage restorecon -Rv /var/www/html/laravel/bootstrap/cache 問題が解決され

:)

REF:http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/

関連する問題