웹사이트 설치를 위한 Bash 스크립트

웹사이트 설치를 위한 Bash 스크립트

우선, 이곳에 질문을 드리는 것이 잘못된 부분이더라도 양해해 주시기 바랍니다.

DirectAdmin 백업을 Apache에 설치하기 위해 Bash 스크립트를 만들었습니다. 단계는 작동하지만 실제 웹사이트를 열면 결국 500 오류가 발생합니다.

단계:
1. backup.tar.gz 압축 풀기
2. 필요하지 않은 파일 삭제
3. 웹 사이트 이름으로 데이터베이스 세부 정보 요청
4. admin.conf 파일로 전환
5. 데이터베이스 및 사용자 생성 6. 생성 및 7
로 전환 및 8. 생성 Windows 호스트 파일의 항목/etc/apache2/sites-available/website.conf
a2ensiteservice apache2 reload

모든 단계를 추적해 보니 모든 것이 잘 작동하는 것 같지만 URL을 입력하면 500 오류가 발생합니다. 이 모든 작업은 스크립트 없이 수행되며 모든 것이 잘 작동합니다.

오류가 어디서 발생하는지 말해 줄 수 있는 사람이 있나요? bash 스크립트를 사용하여 이러한 모든 단계를 수행할 때 차이점이 있습니까?

편집: 이것은 사용된 전체 스크립트입니다.

#!/bin/bash
clear
tar -zxvf backup.tar.gz
sudo cp -R ./domains/*/public_html/* ./
sudo cp ./backup/*.sql ./
rm -rf ./backup ./domains
rm backup.tar.gz
sudo chmod 775 ./config.php
echo "ROOT_PWD?"
read -s root_pwd
echo "WEBSITENAME?"
read website
echo "DB_USERNAME?"
read usrname
echo "DB_PASSWORD?"
read db_pwd
echo "DB_DATABASE?"
read db
cat > ./config.php <<EOL
<?php
// HTTP
define('HTTP_SERVER', 'http://www.$website.nl/admin/');
define('HTTP_CATALOG', 'http://www.$website.nl/');

// HTTPS 
define('HTTPS_SERVER', 'http://www.$website.nl/admin/');
define('HTTPS_CATALOG', 'http://www.$website.nl/');

// DIR 
define('DIR_APPLICATION', $_SERVER['DOCUMENT_ROOT'].'/admin/'); 
define('DIR_SYSTEM', $_SERVER['DOCUMENT_ROOT'].'/system/'); 
define('DIR_IMAGE', $_SERVER['DOCUMENT_ROOT'].'/image/'); 
define('DIR_LANGUAGE', $_SERVER['DOCUMENT_ROOT'].'/admin/language/'); 
define('DIR_TEMPLATE', $_SERVER['DOCUMENT_ROOT'].'/admin/view/template/'); 
define('DIR_CONFIG', $_SERVER['DOCUMENT_ROOT'].'/system/config/'); 
define('DIR_CACHE', $_SERVER['DOCUMENT_ROOT'].'/system/storage/cache/'); 
define('DIR_DOWNLOAD', $_SERVER['DOCUMENT_ROOT'].'/system/storage/download/'); 
define('DIR_LOGS', $_SERVER['DOCUMENT_ROOT'].'/system/storage/logs/'); 
define('DIR_MODIFICATION', $_SERVER['DOCUMENT_ROOT'].'/system/storage/modification/'); 
define('DIR_UPLOAD', $_SERVER['DOCUMENT_ROOT'].'/system/storage/upload/');
define('DIR_CATALOG', $_SERVER['DOCUMENT_ROOT'].'/catalog/');

// DB 
define('DB_DRIVER', 'mysqli'); 
define('DB_HOSTNAME', 'localhost'); 
define('DB_USERNAME', '$usrname'); 
define('DB_PASSWORD', '$db_pwd'); 
define('DB_DATABASE', '$db'); 
define('DB_PORT', '3306');
define('DB_PREFIX', 'oc_');
EOL
chmod 444 ./config.php
chmod 755 ./admin/config.php
cat > ./admin/config.php <<EOL
<?php
// HTTP
define('HTTP_SERVER', 'http://www.$website.nl/admin/');
define('HTTP_CATALOG', 'http://www.$website.nl/');

// HTTPS
define('HTTPS_SERVER', 'http://www.$website.nl/admin/');
define('HTTPS_CATALOG', 'http://www.$website.nl/');

// DIR
define('DIR_APPLICATION', $_SERVER['DOCUMENT_ROOT'].'/admin/');
define('DIR_SYSTEM', $_SERVER['DOCUMENT_ROOT'].'/system/');
define('DIR_IMAGE', $_SERVER['DOCUMENT_ROOT'].'/image/');
define('DIR_LANGUAGE', $_SERVER['DOCUMENT_ROOT'].'/admin/language/');
define('DIR_TEMPLATE', $_SERVER['DOCUMENT_ROOT'].'/admin/view/template/');
define('DIR_CONFIG', $_SERVER['DOCUMENT_ROOT'].'/system/config/');
define('DIR_CACHE', $_SERVER['DOCUMENT_ROOT'].'/system/storage/cache/');
define('DIR_DOWNLOAD', $_SERVER['DOCUMENT_ROOT'].'/system/storage/download/');
define('DIR_LOGS', $_SERVER['DOCUMENT_ROOT'].'/system/storage/logs/');
define('DIR_MODIFICATION', $_SERVER['DOCUMENT_ROOT'].'/system/storage/modification/');
define('DIR_UPLOAD', $_SERVER['DOCUMENT_ROOT'].'/system/storage/upload/');
define('DIR_CATALOG', $_SERVER['DOCUMENT_ROOT'].'/catalog/');

// DB
define('DB_DRIVER', 'mysqli');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', '$usrname'); 
define('DB_PASSWORD', '$db_pwd'); 
define('DB_DATABASE', '$db');
define('DB_PORT', '3306');
define('DB_PREFIX', 'oc_');
EOL
chmod 444 ./admin/config.php

mysql -u root -p$root_pwd -e "CREATE DATABASE $db"
mysql -u root -p$root_pwd -e "CREATE USER '$usrname'@'localhost' IDENTIFIED BY '$db_pwd';"
mysql -u root -p$root_pwd -e "GRANT ALL PRIVILEGES ON $db . * TO '$usrname'@'localhost';"
mysql -u $usrname -p$db_pwd $db < *.sql

touch /etc/apache2/sites-available/$website'.conf'
cat > /etc/apache2/sites-available/$website'.conf' <<EOL
<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName $website.nl
    ServerAlias www.$website.nl
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/$website/

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
EOL
a2ensite $website'.conf'
service apache2 reload

DirectAdmin을 통해 www.example.com 웹 사이트에서 백업하고 해당 웹 사이트를 스크립트에서 사용하면 모든 것이 예상대로 작동하지만 브라우저에 URL을 입력하면 500 오류가 발생합니다.

Apache 로그가 비어 있습니다.

답변1

아, 을(를) 사용해야 합니다 ip_conntrack. 다음 단계를 따르세요.

  1. modprobe ip_conntrack
  2. sysctlwith의 변수 목록을 가져옵니다 sysctl -a |grep -i conn.
    출력은 ":

    net.netfilter.nf_conntrack_acct = 0
    net.netfilter.nf_conntrack_buckets = 65536
    net.netfilter.nf_conntrack_checksum = 1
    net.netfilter.nf_conntrack_count = 116
    net.netfilter.nf_conntrack_events = 1
    net.netfilter.nf_conntrack_expect_max = 1024
    net.netfilter.nf_conntrack_generic_timeout = 600
    net.netfilter.nf_conntrack_helper = 0
    net.netfilter.nf_conntrack_icmp_timeout = 30
    net.netfilter.nf_conntrack_log_invalid = 0
    net.netfilter.nf_conntrack_max = 262144
    net.netfilter.nf_conntrack_tcp_be_liberal = 0
    net.netfilter.nf_conntrack_tcp_loose = 1
    net.netfilter.nf_conntrack_tcp_max_retrans = 3
    net.netfilter.nf_conntrack_tcp_timeout_close = 10
    net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
    net.netfilter.nf_conntrack_tcp_timeout_established = 432000
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
    net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
    net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
    net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
    net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
    net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
    net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
    net.netfilter.nf_conntrack_timestamp = 0
    net.netfilter.nf_conntrack_udp_timeout = 30
    net.netfilter.nf_conntrack_udp_timeout_stream = 180
    net.nf_conntrack_max = 262144
    
  3. 변수를 변경합니다 net.ipv4.netfilter.ip_conntrack_max .

  4. 파일에 저장됩니다.

관련 정보