ubuntu18.04 server settings - RLidea/dev.docs GitHub Wiki
Ubuntu ํ๊ฒฝ์์์ ์น ์๋ฒ ์ธํ ๋ฐฉ๋ฒ์ ๋ค๋ฃฌ ํ๊ตญ์ด ๋ฉ๋ด์ผ์ ๋๋ค. ์ด ๋ฌธ์๋ Ubuntu 18.04 ๋ฅผ ์ฌ์ฉํ ํ๊ฒฝ์ ๊ฐ์ถ ์ดํ๋ฅผ ๋ค๋ฃฌ ๊ฐ์ด๋์ ๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด์ ๋ํ ์ค๋ช ๋ ์ ํ์ํค ๋ฑ์์ ๊ฒ์ํ์๋ฉด ์ฐพ์ ์ ์์ต๋๋ค. Ubuntu 16.04LTS ํ๊ฒฝ์์์ ์ธํ ์ ์ํ์๋ ๋ถ์ (์ฌ๊ธฐ)๋ฅผ ํ์ธํด์ฃผ์ธ์.
- ์ถ๊ฐ: ์๋ ๋์๋ค์ user data๋ก ์์ฑํด๋ดค๋ค.
1. ์์
1-1. root๊ถํ ์ป๊ธฐ
1-2. ์์คํ
ํจํค์ง ์
๋ฐ์ดํธ
2. ์์คํ
์ค์
2-1. ์์คํ
์๊ฐ ์ค์ (๊ถ์ฅ)
2-2. Hostname ๋ณ๊ฒฝ (์ต์
)
2-3. SSH๋ฐ FTP Root์ ์ ๊ถํ ์ค์ (์ต์
/๊ถ์ฅํ์ง ์์)
3. Nginx ์น ์๋ฒ ์ค์น
3-1. Nginx ์ค์น
3-2. ๊ถ์ฅ ์ค์
3-3. Virtual Host
3-4. Proxy
4. MariaDB ์ค์น
4-1. ์ ์ฅ์ ์ถ๊ฐ
4-2. ์ค์น
4-3. ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ
4-4. ๊ถ์ฅ ์ค์
5. Node.js ์ค์น
5-1. ์ค์น
์์คํ ์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ด๋ฆฌ์(root) ๊ถํ์ ์ป๊ณ , ์ ๋ฐ์ดํธ๋ฅผ ์งํํฉ๋๋ค.
๋ชจ๋ OS๋ฅผ ์์ํ ๋๋ ์
๋ฐ์ดํธ๋ฅผ ๋จผ์ ํด์ค์๋ค. apt๋ Ubuntu ์์ ํ๋ก๊ทธ๋จ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ ์ค์นํ๋ ํจํค์ง ๊ด๋ฆฌ์์
๋๋ค. apt-get --help
๋ผ๋ ๋ช
๋ น์ ๋ด๋ฆฌ๋ฉด ์ค๋ช
๊ณผ ์ฌ์ฉ๋ฒ์ด ๋ํ๋๋ ์ฐธ๊ณ ํ์ญ์์ค. Amazon Linux ๋ CentOS ๋ฑ์์ yum
์ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
๋ฆฌ๋
์ค๋ ์๋์ฐ๋ , ์ด๋ค OS์ด๋ ์ฒ์ ์ฌ์ฉํ ๋ ์
๋ฐ์ดํธ๋ฅผ ํฉ๋๋ค.
sudo apt-get update -- ํจํค์ง ๋ชฉ๋ก ๊ฐฑ์
sudo apt-get upgrade -- ํ์ฌ ์ด์์ฒด์ ์ ์ค์น๋์ด ์๋ ํ๋ก๊ทธ๋จ์ ์ต์ ๋ฒ์ ์ผ๋ก ํจ์น
sudo
์ ์ ๋ฅผ ์์ฑํฉ๋๋ค. AWS์ ๊ฒฝ์ฐ ubuntu
๋ผ๋ ์ด๋ฆ์ sudo
์ ์ ๊ฐ ์์ด์ ๊ท์ฐฎ์ผ๋ฉด ์๋ตํด๋ ๋ฉ๋๋ค.
adduser username # username ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ ์์ฑ
usermod -aG sudo username # username ์ ์ ์๊ฒ sudo ๊ถํ ๋ถ์ฌ
๊ธฐ๋ณธ์ ์ธ ์์คํ ์ค์ ์ ํฉ๋๋ค.
dpkg-reconfigure tzdata
์ดํ ๋ํ๋๋ GUI ์ค์ ์์ Asia, Seoul ์ ์ฐจ๋ก๋ก ์ ํํฉ๋๋ค.
hostname ํ์ผ์๋ ์๋ฒ์ ์ด๋ฆ์ด ๊ธฐ๋ก๋์ด ์์ต๋๋ค. ์ด๋ฅผ ์ด๋ฆ์ ์ํ๋ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ( ์์ ํ๊ธฐ ์ํด ํค๋ณด๋์ i
๋ฅผ ๋๋ฌ insert ๋ชจ๋๋ก ๋ค์ด๊ฐ๋๋ค. esc
๋ฅผ ๋๋ฅด๋ฉด ๋ชจ๋๋ฅผ ๋๊ฐ ์ ์์ต๋๋ค. :wq
๋ฅผ ์
๋ ฅํ ํ enter(ํน์ return)
์ ์
๋ ฅํ๋ฉด ์ ์ฅ ํ ๋๊ฐ๊ธฐ๊ฐ ๋ฉ๋๋ค. vi์ ์์ธํ ์ฌ์ฉ๋ฒ์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ฐพ์๋ณด์ญ์์ค.)
sudo vi /etc/hostname
์ด์ ๋ณ๊ฒฝํ ๋ด์ฉ์ ์ ์ฉํฉ๋๋ค. ์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ ๋ค, ์๋ฒ์ ์ฌ ์ ์ํ๋ฉด ์ค์ ์ด ์ ์ฉ๋์ด ubuntu@myserver
๋ฑ์ผ๋ก ๋ณ๊ฒฝ ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
hostname -F /etc/hostname
AWS์ ๊ฒฝ์ฐ, ์ฒ์ EC2๋ฅผ ์์ฑํ๋ฉด ssh๋ฐ ftp์ ์ ๊ถํ์ด ubuntu ์ ์ ๋ก๋ง ํ์ฑํ๋์ด ์๊ณ root ๊ณ์ ์ ์ ํ๊ฐ๋ ๋นํ์ฑํ ๋์ด ์์ต๋๋ค. ๋ฌผ๋ก ssh์ ์์ ํ๋ฉด ubuntu ์ ์ ๋ sudo ๋ช
๋ น์ ์ด์ฉํด์ root ๊ถํ์ ์ฌ์ฉํ ์ ์์ง๋ง, FTP๋ฅผ ์ด์ฉํ ๋ ๊ถํ์ ์ป๊ธฐ ํ๋ค์ด ๋ถํธํ ์ ์ด ์์ต๋๋ค. /home/ubuntu
๋๋ ํ ๋ฆฌ ์ธ์๋ FTP๋ฅผ ํตํด ํ์ผ์ ์ถ๊ฐ/์ญ์ /์์ ํ ๊ถํ์ด ์์ด์ ์์
์์ ๋ถํธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ root๋ก ์ ์ํ๋ ๊ฒ์ ๋ณด์ ์ ๊ถ์ฅํ์ง ์์ต๋๋ค.
root ๊ถํ์ด๋ sudo ๋ช ๋ น์ด๋ฅผ ํตํด์ sshd_configํ์ผ์ viํธ์ง๊ธฐ๋ก ์์ ํฉ์๋ค.
vi /etc/ssh/sshd_config
PermitRootLogin
๋ฅผ ์ฐพ์์ yes๋ก ๋ณ๊ฒฝํด์ค๋๋ค. ํธ์ง๊ธฐ์์ i ๋ฅผ ๋๋ฅด๋ฉด insert๋ชจ๋๋ก ๋ค์ด๊ฐ ์์ ์ด ๊ฐ๋ฅํด์ง๊ณ , esc๋ฅผ ๋๋ฅธ ๋ค :wq ๋ฅผ ์
๋ ฅํ๋ฉด ์ ์ฅํ ํฐ๋ฏธ๋๋ก ๋์์ต๋๋ค. ( :q ๋ ๋๊ฐ๊ธฐ, :q! ๋ ๊ฐ์ ๋ก ๋๊ฐ๊ธฐ ์
๋๋ค. q!์ ๊ฒฝ์ฐ sudo ๊ถํ ์์ด ์์ ์ ์๋ํ๋ค๊ฐ ๊ถํ์ด ์์ด ์ ์ฅํ ์ ์์ ๋ ํธ์ง์ ๋ฌด์ํ๊ณ ํฐ๋ฏธ๋๋ก ๋์๊ฐ ๋ ์ฌ์ฉ๋ฉ๋๋ค.) ๊ธฐ์กด์ PermitRootLogin
ํญ๋ชฉ์ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋(#์ ์์ ์จ์ฃผ๋ฉด ๋จ) ์ง์๋ฒ๋ฆฝ์๋ค.
์ด์ ubuntu ์ ์ ์ ssh key๋ฅผ ๋ฃจํธ์ ๋ณต์ฌํด์ค๋๋ค. /root/.ssh
๋๋ ํ ๋ฆฌ๊ฐ ์๋ค๋ฉด mkdir /root/.ssh
๋ก ์์ฑํด์ค๋๋ค.
cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/
์ด์ ์ธ๋ถ์์ ssh๋ฐ ftp๋ฅผ root ๊ณ์ ์ผ๋ก ์๊ฒฉ ์ ์ ํ ์ ์์ต๋๋ค.
Ubuntu 18.04
์์๋ nginx version: nginx/1.14.0 (Ubuntu)
๋ฒ์ ์ด ์ ๊ณต๋๊ณ ์์ต๋๋ค. ์ค์นํ๋ฉด ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ๋ํ ์ฌ๋ถํ
์ ์๋์คํ ๋๋ ๊ฒ์ด ๊ธฐ๋ณธ ์ค์ ์ด๋ผ ๋ฐ๋ก ์๋น์ค๋ฅผ ๋ฑ๋กํด์ค ํ์๋ ์์ต๋๋ค.
sudo apt install nginx
๋ ์ต์ ๋ฒ์ ์ Nginx๋ฅผ ์ํ๋ค๋ฉด ์ ์ฅ์๋ฅผ ๋ฑ๋กํด์ ์ฌ์ฉํฉ์๋ค.
์ฌ๋๋ก ์ค์น๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ฒ์ ์ ํ์ธํฉ๋๋ค.
nginx -v
์๋ฒ ์ฌ์์๋ ์ ๋๋์ง ์ฒดํฌํด๋ด ์๋ค.
service nginx restart
nginx๋ ๊ธฐ๋ณธ์ ์ผ๋ก 80 ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ผ๊ณ ์๋ฒ์ ์์ดํผ(http://111.222.333.444 ๋ฑ)์ ์ ์ํด์ ๋์ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. Welcome to nginx! ๋ฌธ๊ตฌ๊ฐ ๋จ๋ฉด ์ ์์
๋๋ค. apt-get
์ผ๋ก ์ค์นํ์์ ๋, ์ด ํ์ผ์ ๊ธฐ๋ณธ ์์น๋ /usr/share/nginx/html/index.html
์
๋๋ค.
[trouble shooting]
- "์๋ตํ๋ ๋ฐ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค." ๋ผ๋ฉฐ ํ์ด์ง๊ฐ ์ ์๋์ง ์์ ๋๋ ํฌํธ๊ฐ ์ด๋ ค์๋์ง ๋จผ์ ํ์ธํด๋ณด์ธ์. nginx์ default port๋ 80์ ๋๋ค. AWS์ ๊ฒฝ์ฐ, Security group ์ ์ด๊น๊ฐ์ด 22๋ฒ ํฌํธ๋ง ์ด๋ ค ์์ต๋๋ค. ์ฌ๊ธฐ์ 80ํฌํธ๋ฅผ ์ด๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ ์์ต๋๋ค.
nginx.conf
์ ๊ถ์ฅ ์ค์ ์ ์ ์ฉํ ๊ฒ์
๋๋ค.. ์ฐ์ ๊ธฐ๋ณธ ์ค์ ํ์ผ์ ๋ฐฑ์
ํด๋ก๋๋ค.
sudo cp nginx.conf nginx.conf.org
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ค์ ํ์ผ(nginx.conf)๋ฅผ ์์ ํฉ๋๋ค.
sudo vi /etc/nginx/nginx.conf
events {
...
# ํ ๋ฒ์ ๋ณต์์ ์ ์์ ํ๊ฐํฉ๋๋ค.
multi_accept on;
...
}
http {
#response header์ nginx ๋ฒ์ ํ์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
#๋ณด์์ ์ํด off๋ฅผ ํด์ค์๋ค.
server_tokens off;
#response header ์ charset ์ ๋ถ์ฌํฉ๋๋ค.
charset utf8mb4;
#์น์๋ฒ์์ ์์ ํ ์ ์๋ ์ต๋ ํจํท ํฌ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค.
#๊ธฐ๋ณธ๊ฐ์ 1MB ์ด๋ฉฐ, ๋ ํฐ ํ์ผ์ ์
๋ก๋๋ฅผ ํ์ฉํ๋ ค๋ฉด ์ด ๊ฐ์ ๋๋ ค์ค์ผ ํฉ๋๋ค.
#์ํ๋ ๊ฐ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
client_max_body_size 20M;
}
์์ , ์ ์ฅ ํ์ ์๋ฒ๋ฅผ ์ฌ์์ํด์ค๋๋ค.
service nginx restart
์ฐธ๊ณ : ์์ง์์ค ๊ฐ์ ํธ์คํธ ์ค์ (nginx Virtual Host Setup)
3000๋ฒ ํฌํธ๋ก ์๋น์ค๋๋ ํ๋ก์ ํธ๋ฅผ 80๋ฒ ํฌํธ๋ก ํ๋ก์ํด์ผ ํ ๋๊ฐ ์์ต๋๋ค.
$ sudo vi /etc/nginx/sites-available/default
location
ํญ๋ชฉ์ ์๋ ๋ด์ฉ๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค.
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
}
์์ ํ nginx๋ฅผ ์ฌ์์ํฉ๋๋ค.
sudo service nginx restart
์ด์ 80 ํฌํธ์์ ์ ์ํด๋ 3000๋ฒ ํฌํธ์์ ์๋น์ค๋๋ ํ๋ก์ ํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
MariaDB
๋ฅผ ์ค์นํด๋ด
๋๋ค.
mysql Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
์ด ์ค์น๋ฉ๋๋ค.
EC2์ MariaDB๋ฅผ ์ธ๋ถ์์ ์ ์ํ๊ณ ์ถ์ ๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
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] http://mirror.zol.co.zw/mariadb/repo/10.3/ubuntu bionic main'
sudo apt update
sudo apt -y install mariadb-server mariadb-client
์ค์น ์งํ์ค์ root
์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌผ์ด๋ด
๋๋ค. ์์ ํ๊ฒ ์ค์ ํ๊ณ ์์ง ์๋๋ก ํฉ๋๋ค. ์ค์น๊ฐ ์๋ฃ๋๋ฉด ์ ์ค์น๋์๋์ง ํ์ธํด๋ด
๋๋ค.
mysql --version # ๋ฒ์ ํ์ธ
sudo systemctl start mariadb # ์์
์ฐธ๊ณ ๋งํฌ: (install-mariadb-10-on-ubuntu-18-04-and-centos-7)
sudo systemctl start mariadb
mysql -u root
mysql -u root -p #ํจ์ค์๋ ์ค์ ์ดํ
create database [dbname];
show databases; # ์์ฑ๋ DBํ์ธ
drop database demo; # DB์ญ์
์์ฑ
create user '[user name]'@'localhost' identified by '[password]'; # ์ฌ์ฉ์ ์์ฑ
๊ถํ๋ถ์ฌ
grant all privileges on [dbname].* to [user name]@'localhost'; # <user name>์๊ฒ <dbname>์ ๋ชจ๋ ๊ถํ์ ๋ถ์ฌํ๋ค.
FLUSH PRIVILEGES; # ๋ณ๊ฒฝ๋ ๊ถํ ์ค์ ์ ๋ฐ์ํ๋ค.
์ ์ ๋ฆฌ์คํธ ํ์ธ (์ฐธ๊ณ : [MySQL โshow usersโ: How to show/list the users in a MySQL database | alvinalexander.com] (https://alvinalexander.com/blog/post/mysql/show-users-i-ve-created-in-mysql-database))
select host, user from mysql.user;
์ ์ ๋ก ์ ์
mysql -u [username] -p #์ ์
MySQL ์ธ๋ถ ์ ๊ทผ์ ํ์ฉํด์ ์ง์ ์ ์ํ ์๋ ์์ง๋ง, SSH ์ ์์ ์ด์ฉํ๋๊ฒ ์ข ๋ ์์ ํฉ๋๋ค. (์ฐธ๊ณ ๋งํฌ)
root
์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ฑฐ๋ ์์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
mysqladmin -u์์ด๋ -p๊ธฐ์กดํจ์ค์๋ password ์ ๊ทํจ์ค์๋
mysqladmin -uroot -p password [new password]
SET PASSWORD FOR 'root'@'%' = PASSWORD('[password]');
update user set password=PASSWORD('[password]') where user='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY '[password]' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
mysql> set time_zone = 'Asia/Seoul';
mysql> select @@time_zone;
mysql> select now();
์ดํ ์ฌ์์์ ํ๋ฉด ์ ์ฉ๋ฉ๋๋ค.
service mysqld restart
Node.js ๋ฒ์ v8.10.0
๋ฐ npm ๋ฒ์ 6.8.0
๋ฅผ ์ค์นํฉ๋๋ค.
sudo apt install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
sudo apt install nodejs
10 ๋ฒ์ ์ ์ค์นํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์งํํฉ๋๋ค.
sudo apt install curl # ์ด๋ฏธ curl์ด ์ค์น๋์ด ์๋ค๋ฉด ์งํํ์ง ์์๋ ๋ฉ๋๋ค.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs
12 ๋ฒ์ ์ ์ค์นํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์งํํฉ๋๋ค.
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs
์ ์ค์น๋์๋์ง ํ์ธํฉ์๋ค.
node -v
npm -v