Code Monkey home page Code Monkey logo

stack's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stack's Issues

php 기본을 7.1로 업그레이드

라라벨 5.6 설치조건이 php 7.1 이고
php 7.0, 7.1, 7.2가 릴리즈 되고 있으므로
default php를 7.1로 변경하심이 좋을 것 같습니다.

방화벽이 막혀 있어서...

기본 방화벽 포트는 apm 설치시에 풀어줘야 할 것 같습니다.

CentOS 7 - public zone에 80/443 2개 넣으면 됩니다.
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp

I would like to install it in RAM 512MB environment. - RAM 512MB 환경에서도 설치가 되었으면 합니다.

English

I would like to install it in RAM 512MB environment.
When I install DigitalOcean's RAM on a 512MB server, the below error occurs.


Korean

안녕하세요.
먼저, 이렇게 훌륭한 것이 있나 깜짝 놀랐습니다.
단숨에 왕 팬이 되었습니다.^^

이렇게 좋은 프로젝트는 영문으로도 구성되어 글로벌로 나가야 한다는 생각입니다.!!

요청사항

  • RAM 512MB 환경에서도 설치되었으면 합니다.

테스트 환경

  • DigitalOcean
  • CentOS 7.3
  • RAM 512MB

테스트 설정

  • MariaDB 4G이 상태 그대로 설치시 아래와 같은 에러 발생
  • stack.conf 에서 MARIADB_RAM=128M 적용후 설치해도 아래와 똑같은 메세 발행

같은 서버의 RAM 8G 환경에서는 깔끔하게 설치 됨.

에러 메세지

[root@PHP79 stack]# ./install.sh 

php79 stack version 0.9.10
  * PHP 5.3-7.0 + Nginx + MariaDB installer

Install options:
  - Install EPEL repo / http://fedoraproject.org/wiki/EPEL
  - Install PHP 7.0 from Remi repo / http://rpms.famillecollet.com/
  - Set PHP CLI version ( /usr/bin/php ) : 70
  - Install Nginx 1.10 from Nginx repo (stable) / http://nginx.org/en/linux_packages.html
  - Install MariaDB 10.1 from MariaDB repo (stable) / https://mariadb.com/kb/en/mariadb/yum/
      Use memory config : 128M
  - Install smartmontools (physical server only)
  - Install lm_sensors (physical server only)
  - Install developer tools (wget, rsync, nslookup, ...)
  - Change time zone Asia/Seoul for /etc/localtime, php.ini
  - Interactive mode

Do you want to install? (위 패키지들을 설치하시겠습니까?) [n/Y] y

### PHP CLI (/usr/bin/php) 를 PHP 70 버전으로 설정합니다. ###

'/usr/bin/php' -> '/usr/bin/php70'

### MariaDB 10.1 을 설치합니다. ###

Job for mariadb.service failed because a fatal signal was delivered to the control process. See "systemctl status mariadb.service" and "journalctl -xe" for details.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

stty: standard input: Inappropriate ioctl for device
Enter current password for root (enter for none): 
stty: standard input: Inappropriate ioctl for device
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory")
stty: standard input: Inappropriate ioctl for device
Enter current password for root (enter for none): 
stty: standard input: Inappropriate ioctl for device

# (무한반복)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory")
stty: standard input: Inappropriate ioctl for device
Enter current password for root (enter for none): 
stty: standard input: Inappropriate ioctl for device

php53 다운로드를 위한 kr1.php.net 사이트 접속 불가.

`--2018-03-16 17:33:44-- http://kr1.php.net/distributions/php-5.3.29.tar.bz2
Resolving kr1.php.net (kr1.php.net)... 115.68.110.81
Connecting to kr1.php.net (kr1.php.net)|115.68.110.81|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-03-16 17:33:45 ERROR 404: Not Found.

PHP 컴파일이 실패하였습니다.

Exiting installer. (설치를 중단합니다.)
다음 명령이 실패하여, 설치가 중단되었습니다. (exit code: 1)

scripts/centos7-php53-install.sh

`

위와 같이 에러가 나네요.
kr1.php.net 이 접속되지 않을 경우를 대비한 미러링 사이트 몇개를 추가해두는 것이 좋지 않을까 합니다.
저는 jp2 로 변경하여 설치 진행했습니다.

PHP 7.1 설치 테스트

  • CentOS 7 VM 테스트 완료
  • TODO: CentOS 6 VM 테스트
  • TODO: 운영 서버
  • TODO: v0.9.11 정식 배포

MariaDB 기본 설정 갱신

# FullText index 에서 2자 검색 지원(기본 3자 이상)
innodb_ft_min_token_size=2
ft_min_word_len = 2

# 바이너리 로그가 과도하게 늘어나지 않도록, 보관 기간(일)을 제한하면 오래된 로그가 자동 삭제됩니다.
#expire_logs_days = 180

[info] php 72로 업글했을 때 나오는 permission error 대응

기존 php70에서도 동일한 메시지가 나오기 때문에
긴 호흡으로 수정을 해주는 것이 필요할거 같습니다.

/var/log/nginx/error.log 메시지

2018/06/06 02:03:31 [crit] 12718#12718: *30 connect() to unix:/var/run/php72_opencode.sock failed (13: Permission denied) while connecting to upstream, client: 112.154.xxx.xxx, server: opencode.vps.phps.kr, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php72_opencode.sock:", host: "opencode.vps.phps.kr"

stackoverflow에 대응
https://serverfault.com/questions/777994/permission-denied-for-fastcgi-pass-using-php7

실제조치

/var/opt/remi/php72/php-fpm.d/www.conf 파일에서 아래처럼 수정

listen = /var/run/php72_opencode.sock

listen.owner = nobody
listen.group = nobody
listen.mode = 0660

/etc/nginx/conf.d 에서 opencode.conf를 만들어서 아래처럼 upstream을 정의

upstream opencode_backend {
server unix:/var/run/php72_opencode.sock;
}

ps -ef를 해보면

[root@opencode run]# ps -ef | grep nginx
root 12717 1 0 00:56 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nobody 12718 12717 0 00:56 ? 00:00:00 nginx: worker process
root 16238 16108 0 10:56 pts/4 00:00:00 grep --color=auto nginx

/var/run 디렉토리에서
srw-rw---- 1 nobody nobody 0 6월 6 10:39 php72_opencode.sock

CentOS 7.2 에서 MariaDB 설치 과정에서의 오류 메시지

Installing : MariaDB-server-10.1.17-1.el7.centos.x86_64                                          13/16
touch: cannot touch `/var/lib/mysql/localhost.localdomain.err': 그런 파일이나 디렉터리가 없습니다
chmod: cannot access `/var/lib/mysql/localhost.localdomain.err': 그런 파일이나 디렉터리가 없습니다
touch: cannot touch `/var/lib/mysql/localhost.localdomain.err': 그런 파일이나 디렉터리가 없습니다
chown: 잘못된 사용자: `mysql'
chown: 잘못된 사용자: `mysql'
2016-10-01  7:07:39 *** [Note] /usr/sbin/mysqld (mysqld 10.1.17-MariaDB) starting as process 2885 ...
2016-10-01  7:07:39 *** [Note] InnoDB: Using mutexes to ref count buffer pool pages
2016-10-01  7:07:39 *** [Note] InnoDB: The InnoDB memory heap is disabled

CentOS 7.2 로 테스트 필요. OS 에 기본 포함된 mysql/mariadb가 설치된 상태에서 stack 실행도 테스트 해봐야 할 듯...

php-fpm 로그 디렉토리의 소유자 문제

현재 PHP 7.0 기준 로그 디렉토리 소유자

# ls -l /var/opt/remi/php70/log/           
drwxrwx--- 2 apache root 122  3월 30 15:59 php-fpm

문제

  • nginx와 여러 php-fpm 간의 소유자 통일을 위해 nobody 로 모두 변경된 상태
  • /etc/opt/remi/php70/php-fpm.d/www.conf 에서 에러 로그가 php_admin_value[error_log] = /var/opt/remi/php70/log/php-fpm/www-error.log 로 지정되어 있어, PHP 단 에러 로그가 남지 않는 현상 발생.

수동 해결

php-fpm 디렉토리에서 apache(48) 소유자인 것만 찾아 nobody 로 변경하면 바로 해결됨.

# find /var /opt /etc -uid 48
/var/log/php-fpm
/var/opt/remi/php70/log/php-fpm
/opt/remi/php56/root/var/log/php-fpm
/opt/remi/php54/root/var/log/php-fpm
/opt/remi/php55/root/var/log/php-fpm

@ find /var /opt /etc -uid 48 -name php-fpm -type d -exec stat {} \; -exec chown nobody {} \;

신규 설치시 반영 예정

업데이트 예정

이미 운영중인 서버에 업데이트하므로, 소유자를 임의로 자동 수정하는 것은 바람직하지 않음.

따라서 patch/0.9.9-to-0.9.10.sh 형태의 패치 스크립트를 수동 실행하도록 README.md 에서 안내.

설치시 ntpdate 실패시 경고만 보여주고, 설치 계속 진행

상황

#13, #30 ntpdate 실패로 인한 설치 중단.

우선 설치를 완료하고 나서 ntpdate 는 별도로 해결하는 형태로 변경.

대책

  1. https://github.com/php79/stack/wiki/ntpdate 문서에 문제 해결 사례를 만듬.

  2. ntpdate 과정을 scripts/init.sh 에서 ntpdate 명령만 scripts/ntpdate-sync.sh 로 분리

  3. ntpdate-sync.sh 실패시 경고 문구 + 위키 링크 + 설치를 계속 진행하시겠습니까? (Y/n) 만 표시하여 계속 진행을 사용자가 선택.

참고

DOCUMENT_ROOT 를 변경하려 합니다

안녕하세요. 현재 DOCUMENT_ROOT 가 /home/aaa/public 으로 public 뒤에 슬러쉬를 붙게 수정하려 합니다.

vi /etc/nginx/conf.d/aaa.conf 에서 수정을 해보았지만 적용이 되지 않아, 혹 다른곳에서 수정을 해야 하는건지 여쭤봅니다.

수정전:

server {
    set $APP_BACKEND php56_backend;
    #set $APP_BACKEND php70_backend;

    listen       80;
    server_name aaa.net www.aaa.net;
    root   /home/aaa/master/public;
...

수정후:

server {
    set $APP_BACKEND php56_backend;
    #set $APP_BACKEND php70_backend;

    listen       80;
    server_name aaa.net www.aaa.net;
    root   /home/aaa/master/public/;
...

centos6 PHP 5.3 ioncube 설치시 에러

에러

# ./php/ioncube-loader-install.sh 53

### PHP ionCube loader 모듈을 설치합니다. ###


해당 PHP 버전이 설치되지 않았습니다.  /usr/bin/php53

원인

CentOS 6 + PHP 5.3 은 기본 저장소에서 yum 으로 설치됨.

이로 인해 /usr/bin/php53 이 존재하지 않음...

수동 해결

ln -s /usr/bin/php /usr/bin/php53

신규 & 업데이트시 #6 참고하여 반영

PHP 7.1 추가 지원

PHP 7.1.0 정식 출시

http://php.net/releases/7_1_0.php

remi repo 지원

https://blog.remirepo.net/post/2016/12/02/PHP-version-7.1.0-is-released

  • 2016-12-02 기준, remi repo 엔 RC6 설치 가능.
# /usr/bin/php71 -v
PHP 7.1.0RC6 (cli) (built: Nov  9 2016 08:59:00) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies

TODO:

  • develop-php71 브랜치

  • PHP 7.0 과 7.1 설정 등 구조 차이 확인

  • PHP 7.1 설치 및 nginx 설정 등 추가

  • PHP 7.1 기반 라라벨 등 주요 앱들 설치 테스트

  • PHP 7.1 정식 배포

사이트별 설정에서 client_max_body_size 수정시 에러

에러

/etc/nginx/conf.d/아이디.conf 에서 client_max_body_size 을 선언시 문제

nginx[22600]: nginx: [emerg] "client_max_body_size" directive is duplicate in /etc/nginx/conf.d/아이디conf:33

대응 방안

client_max_body_size 옵션을 /root/stack/apps/laravel51/common.conf 에 넣은 것은 nginx 에서 설정 중복시 에러를 미리 테스트하지 못한, 설계상 오류임.

따라서 common.conf 에서 client_max_body_size 와 중복 가능한 항목을 모두 확인 하여 개선 예정.

기존 사용자 고려

0.9 버전이므로 별도 스크립트를 제작하는 것보다, 수정 방안을 README 하단에 업데이트 안내로 안내하는 것으로 고려.
향후 1.0 이후에는 별도 업데이트 스크립트 제작하는 방향으로 고려.

Let's Encrypt - certbot 설치 및 nginx 연동

CentOS 6/7

https://certbot.eff.org/#centos6-nginx

cd /usr/bin \
&& wget https://dl.eff.org/certbot-auto \
&& chmod ug+x certbot-auto
# certbot-auto --version
certbot 0.18.1

root 권한으로만 실행 가능하므로, /root/bin 에 설치? rpm 설치시와 같은 경로인 /usr/bin/ 사용. (crond 에선 전체 경로 입력이 필요하므로)

CentOS 7

https://certbot.eff.org/#centosrhel7-nginx

yum install certbot-nginx
# /usr/bin/certbot --version  
certbot 0.14.1

인증서 발급

  • app-install.sh 기본 옵션으로 SSL 인증서 발급되도록 추가
  • app-install.sh 와 별개로 이미 설치된 사이트에 대해서도 SSL 인증서 발급 가능하도록 함
  • nginx 설정이 이미 있는 경우와 없는 경우 각각 고려

./status.sh 명령 입력후 상태정보가 나오지 않습니다.

우선 저만 너무 질문을 드리는거 같아서 죄송스럽습니다;
(다른분들은 잘 사용하고 계신데..저만 ;;)

본론으로 들어가자면,
정확히 언제부터인지는 모르겠습니다. 분명한것은 상태정보가 나왔었다는..

언제부터인지 ./status.sh 입력을 해도 스샷처럼 저 상태에서 멈춰있더라구요.

혹시 살펴봐야할 부분이 있을까요?..

ps.추후 대중적인(?)모듈를 추가 하실 계획이 혹시 있으신지요.
캐시관련 플러그인인 apc, redis, memcache, memcached 와 같은...

stack 업데이트시 nginx 설정 확인 및 롤백 기능 고려

배경

서버 스택의 우선 고려 대상은 안정성임.
#2 이슈와 관련하여, git 을 통해 현재 운영중인 서버와 충돌이 발생하는 nginx 설정이 배포되었을 경우 대응이 필요함.

대응

self-update.sh 실행전 nginx 설정 테스트. 오류시 중단.

git 업데이트후 nginx 설정 테스트. 오류시 git pull 롤백.

단, 업데이트가 없을 경우는 롤백이 이루어지지 않아야 함.

install 관련 제안

  1. PHP 5.3, 5.4는 더 이상 업데이트 되지 않는 위험한 버전입니다. 설치하려고 할 경우 경고를 띄워주는건 어떨까요?
  2. CentOS만 지원하는 것은 OS 다양성 측면에서 좋지 않다고 생각하는데 타 OS를 지원할 계획은 없으신가요?

문의 드립니다. MSSQL

안녕하세요 좋은 사이트를 만나서 설치하면서 많이 공부하고 있습니다.
문의드릴게 있는데요.
php53으로 설치하였고, MSSQL 연결을 하려고 하는데 freetds 설치까지는 했는데
막상 php.ini 에 적용하려고 하니 너무 막막하네요.
어떻게 해야 할까요...?
질문이 너무 초보스러워서 죄송합니다.

XE에서 첨부파일 업로드 시 첨부파일이 사라집니다.

어제 mysql data 경로 변경에 대해 질문하고 잘 해결되었습니다.
그 후에 정상적으로 운영중이던 사이트가 갑자기 게시판에 파일 첨부가 안되고 있습니다. ㅠㅠ (XE 1.8버전대를 사용중입니다.)
files폴더의 소유권한도 확인했고 따로 설정을 변경한 것이 없는데..
혹시 data경로가 변경될 경우 이런 문제가 발생할 수 있나요?

my sql data 경로를 변경하고 싶습니다.

구글에서 검색한 방법대로 하려고 하니 구성이 달라서 어디를 수정해야할지 모르겠네요.
기본적으로 my.cnf 파일의 datadir 경로를 변경하면 된다고 되어 있는데요.
stack으로 설치한 mysql 설정 파일은 my.cnf.d 폴더에 있는 것 같습니다.
여러 파일 중에 어느 파일을 수정해야 할까요?

Let's Encrypt - auto renew

크론 데몬에서 매일 새벽 갱신?

certbot-auto renew

인증서가 갱신된 경우만 nginx 재시작

  • nginx 재시작전 nginx -t 성공시에만 재시작

z-php79.ini 의 에러 레벨설정이 적용되지 않는거 같습니다.

z-php79.ini 에서 에러 출력 레벨를 아래처럼 설정했습니다.

error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR

변수가 없어서 나오는 warning 문구를 제외하려 하거든요.

php-fpm 재시작과 nginx 재시작을 했는데도 여전히 에러 로그에 기록되더라구요.

/opt/remi/php56/root/var/log/php-fpm/www-error.log

또 다른부분을 설정해야 하는지요?

ionCube loader 설치후 php-fpm 재시작 누락

#16 제보

소스 확인 결과 PHP 5.3 에서만 재시작되고, 나머지 버전은 재시작 과정 없음.

보완 예정

  # REMI 저장소 사용
  notice "REMI 저장소를 사용하여, php${PHP_VERSION}-php-ioncube-loader 모듈을 설치합니다."
  yum_install "php${PHP_VERSION}-php-ioncube-loader"
  if [ $OS = "centos7" ]; then
    systemctl restart "php${PHP_VERSION}-php-fpm"
  else
    service "php${PHP_VERSION}-php-fpm" restart
  fi

주의) php-fpm 서비스명이 버전/OS별로 다르므로 확인후 소스 수정 필요.

CentOS 6 에서 mariadb의 서비스명 오류

status.sh 실행시 잘못된 서비스명이 보여짐.

에러

# service mariadb stop 
mariadb: 인식되지 않은 서비스

실제 서비스명

mysql           0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

Amazon Linux AMI 지원 고려

우선 stack 에서 지원 가능한 지만, 1차 조사

소개

https://aws.amazon.com/ko/amazon-linux-ami/

https://aws.amazon.com/marketplace/pp/B00635Y2IW

패키지 업데이트 내역

https://aws.amazon.com/ko/amazon-linux-ami/2016.03-release-notes/

mysql55-5.5.46
mysql56-5.6.27
nginx-1.8.1
php55-5.5.33
php56-5.6.19

RHEL 과의 차이점은?

  • EPEL 등 yum 레포지터리 추가 가능

http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/add-repositories.html

MariaDB 10.1 -> 10.3 upgrade

목표

  • MariaDB 저장소를 10.1 에서 10.3 으로 변경. 단 사용자가 특징 버전을 지정하는 방법도 함께 마련함.
  • 10.1 로 운영 중인 상황에서 기존 데이터를 유지한 채 업그레이드 방법 마련
  • MariaDB replication 구성에서도 업그레이드시 문제없는지 테스트
  • 기존 백업 체계(mysqldump) 정상 동작 여부 테스트

Let's Encrypt 설치 옵션 추가

신규 설치

  • stack.defaults.conf 에 LETSENCRYPT=1 옵션 추가

  • 설치시 letsencrypt 사용할 경우에만 /etc/cron.daily/certbot-auto-renew-cron.sh 에 복사

업데이트

  • stack.conf 에 직접 LETSENCRYPT=1 옵션을 추가하고, install.sh 재실행

  • 기존 사용자들을 위한 별도 위키 제작

ssl-install.sh? 개발

  • nginx 설정 이후에 추가 고려? (이미 추가된 사이트, 신규 사이트에 모두 설치 가능해야 함)

  • 주의. 발급시 DNS 미설정, 방화벽으로 인한 오류 가능성 많음. 반드시 dry-run 성공후에 실제 요청하도록 함.

  • Let's Encrypt 발급만 고려하며, 갱신은 크론탭에서 일괄 자동 갱신 #37

app-install.sh 에 --ssl 옵션 추가

  • --ssl 옵션을 선언해야 ssl-install.sh 실행 (기존 사용자 호환성 고려)

  • ssl-install.sh 는 발급 실패 가능성이 높으므로, 실패시에도 app-install.sh 과정은 정상 실행되고, 경고와 재시도 방법만 안내함.

DB root 패스워드 변경후 /root/.my.cnf 도 변경을 해야 하는지요?

제목대로,
db root 패스워드를 변경했습니다
mysqladmin -p'새패스워드' password

계정을 생성하려고 하는데. 아래와 같은 에러 문구가 출력됩니다.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

[ 새로운 계정 ] 디비 계정 생성이 실패하였습니다.

Exiting installer. (설치를 중단합니다.)

시스템 계정 추가 작업이 실패하였습니다.

Exiting installer. (설치를 중단합니다.)

계정 생성 방식은 아래 둘다 모두 이용해봤습니다. 동일합니다.

./app-install.sh --user=계정명 --password='계정 비밀번호' --domain=도메인 --app=gnuboard5 --php=70


./user-add.sh --user=계정명 --password='계정 비밀번호'

헌데 mysql -u root -p 로 하면 바뀐 패스워드로 접속이 됩니다;;

사이트 단위로 php fpm pool 분리 고민

현재 방식

php 버전 당 기본 www pool 만 제공중.

장점

  • nginx 설정에서 사이트간 php 버전 전환이 용이함.
  • 구성이 단순하므로 수동 설치 용이
  • 사용량이 적은 사이트가 많은 서버일 경우 메모리 절약에 유리함.

단점

  • 단점: 같은 pool 을 사용하므로, php ini 설정을 사이트 단위로 구분할 수 없음.
    • nginx 단에서 fastcgi 설정으로 제어하는 형태는 이미 2개 이상 사이트에서 문제가 발견되어 도입 불가한 것으로 판명됨

개선 방식

  • 사이트 단위로 php fpm pool 이 생성됨.
[site1]

;listen = 127.0.0.1:9053
listen = /var/run/php-fpm/site1.sock
php_admin_value[upload_tmp_dir] = /home/site1/tmp
php_admin_value[session.save_path] = /home/site1/session
php_admin_value[open_basedir] = /home/site1
php_admin_value[error_log] = /home/site1/logs/php-fpm-error.log

장점

  • 사이트 단위로 open_basedir 제어하여, 1개 사이트 해킹시에도 해당 계정 디렉토리를 벗어날 수 없음
  • 에러 로그 등을
  • 부하가 높은 사이트와 그렇지 않은 사이트의 php-fpm 프로세스 수를 구분하여 제어 가하고, PHP 부하가 높은 사이트를 프로세스의 pool 이름(site1 ..>)으로 쉽게 파악 가능.

단점

  • 초기 셋팅시 복잡도 증가
  • php 버전 전환시 pool 설정 자체를 다른 버전으로 옮겨야 하므로, 수작업이 필요할 것으로 예상.
  • 현재 0.9.9 버전과 구조가 많이 달라지므로, 신규 변경과 이미 설치된 서버의 호환성 유지에 적지 않은 고민 필요.
  • php-fpm pool 단위로 프로세스가 실행되어, 사이트수 증가시 메모리 자원 사용률이 높아짐. 다만 실 서버에서는 기본 메모리가 4~8GB에 달하고, 메모리 가격이 매우 저렴한 점을 고려하면, 효용성으로 커버 가능할 것으로 예상. 가상 머신 512 ram 에서 쾌적하게 돌아가야 하는 등의 제약은 실 업무와 거리가 멀기 때문에 고려하지 않도록 함.

2.0 에서 고려할 것인지 고민 필요...

안녕하세요 질문드려요 504에러

안녕하세요.
홈페이지에 예약작업이 실행이 안되어서 확인해보니 504 Gateway Time-out 에러가 뜨네요.

/etc/nginx/conf.d/홈페이지.conf 에

	proxy_connect_timeout 300;
	proxy_send_timeout 300;
	proxy_read_timeout 300;
	send_timeout 300;

추가를 해도 실행시간이 1분이면 에러가 나네요.

혹시 어디를 수정해야 하는지 실행시간을 늘릴수 있을까요?

부탁드리겠습니다...

XE3 설치 지원

Laravel 과 차이점


php-fpm config 파일 수정관련.

사이트 접속자가 적지 않은 상황이고 이미지가 많은 사이트다보니
튜닝을 해야 할거 같은데요. 현재 기본설치만으로도 가능할지 여쭤봅니다.
(너무 모호한 질문인거 같네요.;)

그래서 php fpm의 config를 수정하려 하는데요.
혹 사이트마다 따로 분리가 되었는지를 알고 싶습니다.
그렇다면 해당 파일의 위치가 어디인지...;

제가 수정하려는것은
max_children,rlimit_files 파일를 수정하려합니다.

서버사양을 좀 적어보자면,
CPU : Quad_2.402 8코어
메모리 32G
SSD : 128G
4 레이드1+0
HD: 2TB (/home 마운트 사용)
HD:2TB (/backup 마운트 사용)

앱 자동 설치시, install.sh 실행을 제외하는 옵션 고려

배경

Modern PHP 페이스북 그룹에서 공유된 Laravel 기반 앱들

http://learninglaravel.net/laravel-based-cmss-and-open-source-applications

위 앱들을 설치해보려면 Laravel 의 nginx 설정까지만 진행하고,
마지막 install.sh 를 통한 composer -v create-project laravel/laravel master "5.2.*"설치는 생략해야 함.

물론 user-add.sh 로 시스템/디비 계정만 추가하고,
nginx 설정을 수동 추가하는 작업이 있으나 이 부분이 은근히 손이 많이 감.

대응

  • app-install.sh 옵션 추가
--auto-install=0     계정 추가, nginx 설정까지만 진행하고, 앱 자동 설치(install.sh)는 생략합니다.

미선언시 기본값은 1 !

파티션이 나누어지지 않은 상태여도 상관없나요?

제목대로

/dev/sda1 ext4 235G 2.2G 221G 1% /
tmpfs tmpfs 16G 0 16G 0% /dev/shm

이 상태에서 그냥 설치해도 될런지요?

os만 설치하고 통으로 / 잡은 상태거든요.

일단 설치하였고, 이온큐브 로더를 설치했는데요. http://www.php79.com/472 이곳에서는 php-fpm 재시작이 된다고 써있지만, 저는 안되어서 수동으로 재시작하니 이온큐브로더가 적용되더라구요.

php버전 5.6 입니다.

한가지더 말씀드리자면,
그누보드 5를 앱설치를 통해 설치했는데요. 도메인으로 접속해보니 db계정 설치를 요청하더라구요.
dbconfig.php 파일를 만들지 못하는거 같습니다.

[root@localhost /]# /root/stack/php/ioncube-loader-install.sh 56

### PHP ionCube loader 모듈을 설치합니다. ###


Notice) REMI 저장소를 사용하여, php56-php-ioncube-loader 모듈을 설치합니다.

Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi: mirror.bebout.net
 * remi-safe: mirror.bebout.net
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package php56-php-ioncube-loader.x86_64 0:6.0.6-1.el6.remi will be installed
--> Finished Dependency Resolution

Dependencies Resolved

... 생략

Install       1 Package(s)

Total download size: 470 k
Installed size: 1.4 M
Downloading Packages:
php56-php-ioncube-loader-6.0.6-1.el6.remi.x86_64.rpm                                                                                                                                                                                                   | 470 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : php56-php-ioncube-loader-6.0.6-1.el6.remi.x86_64                                                                                                                                                                                                           1/1 
  Verifying  : php56-php-ioncube-loader-6.0.6-1.el6.remi.x86_64                                                                                                                                                                                                           1/1 

Installed:
  php56-php-ioncube-loader.x86_64 0:6.0.6-1.el6.remi                                                                                                                                                                                                                          

Complete!

PHP ionCube loader 모듈이 설치되었습니다.
PHP 5.6.27 (cli) (built: Oct 14 2016 13:10:36) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v6.0.6, Copyright (c) 2002-2016, by ionCube Ltd.
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

라라벨 설치시 php-zip 없슴 오류

라라벨 5.6을 설치하기 위해 아래와 같이 하면, zip이 없다는 오류가 나옵니다.
https://laravel.kr/docs/5.6/installation

composer global require "laravel/installer"

$ composer global require "laravel/installer"
Changed current directory to /home/open2/.config/composer
Using version ^2.0 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/installer v2.0.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - laravel/installer v2.0.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
    - Installation request for laravel/installer ^2.0 -> satisfiable by laravel/installer[v2.0.0, v2.0.1].

/stack/scripts/php7-remi-install.sh 에 아래를 추가해야 합니다.

php$1-php-pecl-zip

yum update 이후 세션 디렉토리 소유자 문제

#6 이슈와 같은 원인으로, 소유자외에 그룹(gid)도 검색하여 변경이 필요함.

문제

현재 세션 디렉토리는 php.ini 가 아닌 php-fpm 설정에서 제어

vi /opt/remi/php56/root/etc/php-fpm.d/www.conf

; Set session path to a directory owned by process user
php_value[session.save_handler] = files
php_value[session.save_path]    = /opt/remi/php56/root/var/lib/php/session
php_value[soap.wsdl_cache_dir]  = /opt/remi/php56/root/var/lib/php/wsdlcache


php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log

수동 해결

apache(48) 소유자인 것만 찾아 nobody 로 변경하면 바로 해결됨.

find /var /opt -gid 48 -type d -exec chgrp -v nobody {} \;

업데이트 에정

yum update 시마다 소유자 문제를 겪을 순 없음.

1안) 기본 apache 대신 nobody 로 전환하여apache 를 nobody 로 전환하는 과정 생략하여, 신규 설치시 적용. (기존 디렉토리 위치 유지)

2안) 로그/세션 디렉토리를 PHP 버전별로 별도 제작?

# PHP 5.6 1개 기준 수정 대상 (수정 범위와 디렉토리 생성 작업이 만만치 않아, 현재 버전에선 무리일 듯...)
./php-fpm.conf:error_log = /opt/remi/php56/root/var/log/php-fpm/error.log
./php-fpm.d/www.conf:slowlog = /opt/remi/php56/root/var/log/php-fpm/www-slow.log
./php-fpm.d/www.conf:php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log
./php-fpm.d/www.conf:php_value[session.save_path]    = /opt/remi/php56/root/var/lib/php/session
./php-fpm.d/www.conf:php_value[soap.wsdl_cache_dir]  = /opt/remi/php56/root/var/lib/php/wsdlcache

2가지 모두 기존 사용자들에겐 퍼미션 등 일괄 변경 스크립트 제공해야 함. v0.10 고려.

외부모듈 추가 관련 문의

Nginx 의 경우 외부모듈를 추가할때 새롭게 빌드를 해야 한다고 하던데. php79 stack 도 마찬가지인가요?

마찬가지라면, 외부 모듈 추가시 새롭게 빌드할때는 어떻게 해야 하는지요??

휴일 잘 보내세요^^!

phpmyadmin을 git으로 설치할 때 오류

Problem 1
- Installation request for facebook/webdriver ^1.6 -> satisfiable by facebook/webdriver[1.6.0].
- facebook/webdriver 1.6.0 requires ext-zip * -> the requested PHP extension zip is missing from your system

php에 ext-zip 미설치. 가끔 쓰는 ext 입니다.

laravel51 설치시 composer 호환성 문제

에러

Laravel 5.1 설치시에만 다음 에러가 발생함.

‘/root/stack/apps/laravel51/install.sh’ -> ‘/home/laravel51a/install.sh’
Installing laravel/laravel (v5.1.11)
  - Installing laravel/laravel (v5.1.11)
    Downloading: 100%         
    Extracting archive

Created project in master
> post-root-package-install: php -r "copy('.env.example', '.env');"
> pre-update-cmd: php artisan clear-compiled
Script php artisan clear-compiled handling the pre-update-cmd event returned with an error


  [RuntimeException]  
  Error Output:       


Exception trace:
 () at phar:///usr/local/bin/composer/src/Composer/EventDispatcher/EventDispatcher.php:209

원인

6일전에 composer.json 에서 pre-update-cmd항목을 삭제하는 커밋이 적용되었으나, 아직 릴리즈 되지 않음.

laravel/laravel@94c9db2

즉, 기존 설치시엔 문제가 없었던 것으로 보아, composer 업데이트에 따른 호환성 문제가 아닐지 추정.

대응

laravel 5.1 공식 저장소에서 릴리즈만 되면 해결되므로, 일단 기다려봄.

임시 해결 방법

  1. laravel51 설치후, 에러 발생시 composer.json 파일을 열어, 다음 라인을 삭제함
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
  1. composer install 실행

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.