본문 바로가기

단축키

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
번호 분류 제목 날짜 조회 수
공지 유머 🚨(뉴비필독) 전체공지 & 포인트안내 12 2024.11.04 26967
공지 이슈 URL만 붙여넣으면 끝! 임베드 기능 2025.01.21 21280
380192 의류 네이버 1+1 강아지옷 메쉬 농구옷 50%할인한다 5500원 무배 1 newfile 2025.06.24 103
380191 잡담 전체적인 여드름관리 1 new 2025.06.24 106
380190 의류 [네이버] 1+1 드라이 기능성 긴바지 20,000원 배송비 3,000원 newfile 2025.06.24 122
380189 생활용품 시크릿데이 입는 오버나이트 무료이벤트 newfile 2025.06.24 124
380188 이제 저녁시간인데 new 2025.06.24 113
380187 영어나 외국어를 교재와 MP3파일로 공부할 때 어플과 AI도구를 이용해 공부 효율을 올리는 꿀 팁 newfile 2025.06.24 130
380186 CU편의점 택배 보낼일 있으면 참고해! 1 new 2025.06.24 163
380185 기사/뉴스 "와 천잰데?" 놀라운 기술…'댓글 부대' 싹 잡아낸다 3 newfile 2025.06.24 140
380184 유머 썸남이 연애 못 해본 거 티난다는 안전벨트 해주는 방법 newfile 2025.06.24 133
380183 오늘 비오는거 맞아?? 1 2025.06.24 135
380182 그 외 이브원더즈 암튜브 성인용 팔튜브 암링 남성, 2개 7,440원/무배 file 2025.06.24 1761
380181 잡담 얼굴 작아지는 법 뭐가있을까 2025.06.24 131
380180 먹거리 홈플러스 이번주 특가 행사 전단지 (6.26~7.2) file 2025.06.24 193
380179 기사/뉴스 올데이 프로젝트, 데뷔와 동시에 멜론 '톱100' 직행 '돌풍' file 2025.06.24 160
380178 화장품 토니모리 겟잇틴트 버터틴트 4,800원! file 2025.06.24 297
380177 이용권/상품권 쿠팡이츠 랜덤 쿠폰 1천원~최대 5만원 100% 당첨 (선착순) 1 file 2025.06.24 181
380176 먹거리 [네이버] L아르기닌 6000 고함량 15포*3개 (27,900원/무료) file 2025.06.24 167
380175 기사/뉴스 헌법 강의하다 "문재인은 간첩"‥"강의의 자유" 1 file 2025.06.24 173
380174 날씨 왜이래 1 2025.06.24 144
380173 제습기 가동 2 2025.06.24 161
380172 제습기 필요성 2 2025.06.24 156
380171 유머 인스타 릴스 알고리즘 뜬 트리플에스 소속사 남돌.jpg file 2025.06.24 174
380170 유머 이병헌 때문에 이민정이랑 단 둘이 남게 된 김우빈.jpg file 2025.06.24 190
380169 방송대커뮤니티 홍보용 - geminin updatefile 2025.06.24 199
380168 방송대 학과 게시판 주소 update 2025.06.24 202
380167 먹거리 롯데온 세븐일레븐 아이스 아메리카노 레귤러 450원 file 2025.06.24 223
380166 기사/뉴스 누군가를 사랑하는 사람을 보면 그 사람을 잘 알 수 있다. 인생에서 중요한 과제는 과거의 나를 용서하고 받아들이는 것이다. file 2025.06.24 210
380165 유머 요즘 현대인들이 가장 많이 고민하는 부분? 시간, 돈, 나이에 얽혀 사는 한국인들의 문제점 file 2025.06.24 196
380164 맛잇는 냄새 2025.06.24 199
380163 다들 점심 뭐 먹어? 2025.06.24 202
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 12674 Next
/ 12674