본문 바로가기

단축키

Prev이전 문서

Next다음 문서

수정 삭제

단축키

Prev이전 문서

Next다음 문서

수정 삭제
Extra Form

우분투 서버에 nginx 최신 안정버전, php 7.2.x, mariadb 10.3.x 버전 설치를 위한 스크립트이다. 아래 스크립트트를 server.sh 등으로 저장한 후 실행 권한을 준 후 실행한다. 사용자명, 비밀번호, 도메인을 입력받아 설치를 진행하며 DB 생성을 위해 DB root 비밀번호 입력이 필요하다. 스크립트는 우분투 서버 16.04 LTS(64비트)에서 테스트 했다.

 

#!/bin/bash
# ================================================================== #
# nginx, php 7.2.x, mariadb 10.3.x install shell script for Ubuntu
# ================================================================== #
# Copyright (c) 2018 Seongho Jang https://ncube.net
# This script is licensed under MIT
# ================================================================== #
# Input username, password, domain
while [[ $username == '' ]]
do
    read -p "Enter Username: " username
done
while [[ $password == '' ]]
do
    read -s -p "Enter Password: " password
    echo -e ""
done
while [[ $domain == '' ]]
do
    read -p "Enter domain: " domain
done
# Update package
sudo apt-get update
sudo apt-get -y upgrade
# Set locale
#sudo dpkg-reconfigure locales
sudo apt-get -y install language-pack-ko-base language-pack-ko
sudo locale-gen ko_KR.UTF-8
sudo locale-gen en_US.UTF-8
sudo localectl set-locale LANG=en_US.UTF-8 LANGUAGE="en_US:en"
sudo source /etc/default/locale
# Install mail
sudo apt-get -y install sendmail
sudo apt-get -y install mailutils
# Create user
sudo groupadd "$username"
sudo useradd -g "$username" -s /bin/bash -m "$username"
echo -e "$passwordn$passwordn" | sudo passwd "$username"
# Make directory
sudo mkdir -p /home/"$username"/www
sudo chown "$username"."$username" /home/"$username"/www
# Set timezone
sudo timedatectl set-timezone Asia/Seoul
sudo apt-get install -y rdate
sudo /usr/bin/rdate -s time.bora.net; /sbin/hwclock --systohc
# Install MariaDB 10.3.x
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://ftp.kaist.ac.kr/mariadb/repo/10.3/ubuntu '$(lsb_release -cs)' main'
sudo apt-get update
sudo apt-get -y install mariadb-server
# Install nginx latest stable version
sudo sh -c "echo 'deb http://nginx.org/packages/ubuntu/ `lsb_release -cs` nginx' >> /etc/apt/sources.list"
sudo sh -c "echo 'deb-src http://nginx.org/packages/ubuntu/ `lsb_release -cs` nginx' >> /etc/apt/sources.list"
curl http://nginx.org/keys/nginx_signing.key | apt-key add -
sudo apt-get update
sudo apt-get install -y nginx
# Install PHP 7.2.x
sudo apt-get -y install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.2-cli php7.2-fpm php7.2-bcmath php7.2-bz2 php7.2-common php7.2-curl php7.2-dba php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-soap php7.2-xml php7.2-xmlrpc php7.2-zip
# nginx configure
sudo service nginx stop
sudo cat > /etc/nginx/conf.d/"$domain".conf <<WEBCONF
server {
    listen 80 default_server ;
    server_name $domain www.$domain ;
    root /home/$username/www ;
    access_log /var/log/nginx/$domain.access.log ;
    error_log  /var/log/nginx/$domain.error.log warn ;
    location / {
        index index.php index.html index.htm ;
    }
    
    include /etc/nginx/php.conf ;
    
}
WEBCONF
# Create database
sudo service mysql restart
while [[ $dbpassword == '' ]]
do
    read -s -p "Enter DB Root Password: " dbpassword
    echo -e ""
done
while ! mysql -u root -p$dbpassword  -e ";" ; do
     read -s -p "Can't connect, Enter DB Root Password: " dbpassword
     echo -e ""
done
mysql -uroot -p${dbpassword} -e "CREATE DATABASE ${username} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -uroot -p${dbpassword} -e "CREATE USER ${username}@localhost IDENTIFIED BY '${password}';"
mysql -uroot -p${dbpassword} -e "GRANT ALL PRIVILEGES ON ${username}.* TO '${username}'@'localhost';"
mysql -uroot -p${dbpassword} -e "FLUSH PRIVILEGES;"
# Daemon start
echo -e ""
sudo nginx -t
sudo php-fpm7.2 -t
sudo service php7.2-fpm restart
sudo service nginx restart
echo "Complete!"

 

 

 

/etc/nginx/php.conf 파일의 내용은 아래와 같다.

 

 

# Block dot file (.htaccess .htpasswd .svn .git .env and so on.)
location ~ /. {
    deny all;
}
# Block (log file, binary, certificate, shell script, sql dump file) access.
location ~* .(log|binary|pem|enc|crt|conf|cnf|sql|sh|key)$ {
    deny all;
}
# Block access
location ~* (composer.json|contributing.md|license.txt|readme.rst|readme.md|readme.txt|copyright|artisan|gulpfile.js|package.json|phpunit.xml)$ {
    deny all;
}
location = /favicon.ico {
    log_not_found off;
    access_log off;
}
location = /robots.txt {
    log_not_found off;
    access_log off;
}
# Block .php file inside upload folder. uploads(wp), files(drupal), data(gnuboard).
location ~* /(?:uploads|default/files|data)/.*.php$ {
    deny all;
}
location ~ [^/].php(/|$) {
    fastcgi_split_path_info ^(.+?.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    # flush
    fastcgi_keep_conn on;
    gzip off;
    proxy_buffering off;
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_read_timeout 3600;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;       
}

 


List of Articles
번호 분류 제목 날짜 조회 수
공지 안내 🚨(뉴비필독) 전체공지 & 포인트안내 8 file 2024.11.04 25982
공지 System URL만 붙여넣으면 끝! 임베드 기능 2025.01.21 20464
378928 먹거리 오뚜기몰 4+4 오뚜기 진라면 약간매운맛/매운맛/순한맛 외 newfile 2025.06.13 1141
378927 잠이안와 new 2025.06.13 30
378926 의류 네이버)이현이님 틴트 선글라스 할인딜 7,720원 newfile 2025.06.13 43
378925 암표 팔아서 결혼하는 사람.jpg newfile 2025.06.12 55
378924 유머 블룸버그 "중국 텐센트, 150억달러(20조)에 넥슨 인수 준비중" ㄷㄷㄷ newfile 2025.06.12 75
378923 유머 ㅇㅎ?) 일본 AV 배우들이 문신을 잘 하지 않는 이유.. newfile 2025.06.12 74
378922 유머 추억의 분식집 장우동 newfile 2025.06.12 70
378921 유머 주식 유튜브 vs 코인 유튜브 차이 newfile 2025.06.12 89
378920 유머 오늘자 카페 빌런 newfile 2025.06.12 80
378919 유머 혐한을 대하는 일본 AV 여배우의 적절한 대응 newfile 2025.06.12 69
378918 유머 콘서트 하늘나라석.jpg newfile 2025.06.12 77
378917 유머 노르웨이 연어 근황 newfile 2025.06.12 81
378916 유머 아 타투 하려는데 이상한 사람이 와서 꼽줌 개짜증 newfile 2025.06.12 75
378915 유머 일본 AV 배우들이 문신을 하지 않는 이유 newfile 2025.06.12 81
378914 유머 [단독] 뻑가, 결국 법정 출석하나, 영상재판신청 불허 newfile 2025.06.12 76
378913 유머 너무 잘해서 충격적이라는 중도의 댓글 newfile 2025.06.12 64
378912 유머 뻑가, 결국 법정 출석하나... 영상재판신청 불허 newfile 2025.06.12 70
378911 유머 '돈 번지 5년이면 1억은 있어야 한다' newfile 2025.06.12 74
378910 유머 남자가 양산쓰면 보이는 반응 newfile 2025.06.12 78
378909 유머 존예녀들과 노콘ㅅㅅ한걸로 돈 벌며 사는 대물남 newfile 2025.06.12 65
378908 유머 수익인증한 암표팔이.jpg newfile 2025.06.12 72
378907 유머 아오지 탄광에 있는 사람들이 똑똑한 이유 newfile 2025.06.12 79
378906 유머 살모사 잘못 건드렸다가 눈감은 벌꿀오소리 newfile 2025.06.12 71
378905 유머 쵸단, 무릎 부상으로 활동중단. newfile 2025.06.12 70
378904 유머 서울시는 국군이란말을.. 몰라..? newfile 2025.06.12 67
378903 유머 은가누랑 30초 싸우고 살면 150억 지급 newfile 2025.06.12 67
378902 유머 462명이 몰린 강아지 밥주는 알바 newfile 2025.06.12 70
378901 유머 전 여친이 선물한 오나홀 newfile 2025.06.12 66
378900 유머 ㅇㅎ 워터밤 티저 알린 권은비 인스타그램 newfile 2025.06.12 76
378899 유머 대한항공 닭장 논란 newfile 2025.06.12 81
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 12631 Next
/ 12631