2022년 5월 31일 기준 LEMP stack Rhymix 라이믹스 VPS 설치 Manual 설명서
스왑 파일 생성 - 메모리 부족 방지
sudo apt update && sudo apt upgrade
sudo fallocate -l 1G /swapfile #1기가로 할거라면
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
그리고
나노편집기 아래처럼 열어서 없다면 sudo apt install nano 쳐서 나노편집기 설치
sudo nano /etc/fstab
셋째줄에 추가하고 컨트롤+x y 엔터(저장)
/swapfile swap swap defaults 0 0
방화벽 설정 아래처럼
sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
저장
sudo netfilter-persistent save
체크
sudo iptables --list
재부팅
sudo reboot
How to Install Rhymix with LEMP on Ubuntu 20.04
시간설정
sudo timedatectl set-timezone Asia/Seoul
체크 타임존 아시아/서울로 되어있는지
timedatectl
엔진엑스 Nginx 설치
sudo apt install nginx
설치 잘 되었나 체크
nginx -v
액티브 러닝 나오는지 체크
service nginx status
엔진엑스 재시작
sudo service nginx restart
혹시나 아파치2 우분투 20.04 버젼에서 실행되는거 멎게하기
sudo systemctl unmask nginx.service
또는(안먹으면)
sudo /etc/init.d/apache2 stop
엔진엑스 사랑해 재시작
sudo systemctl start nginx
sudo systemctl enable nginx
글고 엔진엑스 세팅
sudo nano /etc/nginx/nginx.conf
첫줄에 user www-data;
로 나온다면 컨트롤 + x 누르고 나오면 되고
만약 user nginx;
로 되어있다면 user www-data;
로 바꿔주고 컨트롤 + x , y , 엔터 (저장)
진짜 마지막 재시작
sudo systemctl reload nginx
PHP 8.1 - fpm 설치하기 ( 아파치는 기본 PHP 를 쓰지만, 엔진엑스는 PHP-FPM을 씁니다.)
현재 최신버젼 확인 https://www.php.net/downloads.php
2021년 12월 14일 기준 8.1 이네요.
nginx 기준 설치
sudo apt install php8.1-fpm
E: Unable to locate package php8.1-fpm
E: Couldn't find any package by glob 'php8.1-fpm'
근데 안먹네요... php 8.0으로 해봐도 안되네요. 흠.
E: Unable to locate package php8.0-fpm
E: Couldn't find any package by glob 'php8.0-fpm'
아래 명령어처럼 쳐봐도 8.0으로 해봐도 다 안됩니다. 흠...
sudo apt install php8.1 php8.1-fpm php8.1-cli -y
아래 명령어 해놔도 안되고요.
sudo apt install software-properties-common
참! 그리고 php 8.0은 제이슨 json이 기본 내장되어있다고 하네요.
그리하여 php 7.4를 깝니다.
sudo apt install -y php7.4-fpm php7.4-cli php7.4-bcmath php7.4-bz2 php7.4-dev php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-curl php7.4-gd php7.4-mysql php7.4-mysqlnd php7.4-gmp php7.4-imagick php7.4-zip php7.4-intl php7.4-xml php7.4-xmlrpc php7.4-dba php7.4-soap php7.4-ctype php7.4-pdo php7.4-redis php7.4-geoip php7.4-simplexml php7.4-exif php7.4-fileinfo php-pear php-fpm git-core
설치 겁나 잘되네요. 설치 잘 되었나 액티브 러닝 상태 확인
service php7.4-fpm status
알아서 자동실행 설정 Nginx 엔진엑스는 php**-fpm 만 사용하니까요.
sudo systemctl enable php7.4-fpm
sudo systemctl start php7.4-fpm
이정도하면 어차피 설치는 잘 되었을겁니다. 간소화로
cd /var/www/html
sudo rm index.nginx-debian.html
<?php phpinfo(); ?> 넣고 테스트하느라 info.php 맹글었다면 아래도 추가
sudo rm info.php
그리고 엔진엑스 디폴트파일 삭제
sudo rm -rf /etc/nginx/sites-available/default
근데 삭제 전에 파일내용이 뭔지 메모!
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# In most cases, administrators will remove this file from sites-enabled/ and
# leave it as reference inside of sites-available where it will continue to be
# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or Wordpress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##
# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}
지우고 나서
새롭게 디폴트 파일 맹글어 설정
sudo nano /etc/nginx/sites-available/default
아래 내용 복사 하고 열린 나노 편집기에 마우스 오른쪽 버튼(붙여넣기) 그다음 컨트롤 엑스 y 엔터 (저장)
server {
listen 80 ;
listen [::]:80 ;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
access_log /var/log/nginx/web.access.log;
error_log /var/log/nginx/web.error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_cache off;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include mime.types;
}
location ~ /\.ht {
deny all;
}
}
문법 잘 맞나 확인
sudo nginx -t
다시 불러오고 재시작
sudo systemctl reload nginx
sudo service nginx restart
마리아~ 아베마리아 마리아 디비 설치
최신버젼 확인
https://mariadb.org/download/?t=repo-config
용복넷 우분투 Ubuntu 20.04 "focal" 기준으로 MariaDB 마리아디비 10.8
sudo apt-get install software-properties-common dirmngr apt-transport-https
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el,s390x] https://mirror.yongbok.net/mariadb/repo/10.8/ubuntu focal main'
그리고
sudo apt update && sudo apt upgrade
마리아 디비 설치
sudo apt install mariadb-server
잘 깔렸나(설치되었나) 확인하기 (액티브 러닝만 뜨면 됨)
service mysql status
잠깐 SSL 설정하기
호스팅 사이트에 가입했으면 도메인과 아이피를 연결해둔다.
없다면 아래처럼...
루아 디엔에스 가입 후 설정
가입하고 메일인증하고 도메인주소랑 IP 주소를 매칭시킨다.
LUA DNS 들어가서 상단 ZONES 탭에 호스팅케이알이나 가비아같은 도메인 판매 사이트에서 구매한 도메인 주소를 ADD ZONE 눌러서 -> ADD NEW RECORD 두번 눌러서 -> 추가된 5번 째 줄에는 NAME * / CONTENT 아이피주소 / TTL 5분 그리고 추가된 6번째 줄에는 NAME 빈칸 / CONTENT 아이피주소 / TTL 5분 입력하고 저장 SAVE 한다.
그다음 엔진엑스 SSL CERTBOT 설치한다.
sudo apt install certbot python3-certbot-nginx
세팅 변경 server_name _; 변경하기
sudo nano /etc/nginx/sites-available/default
들어가서
server_name _; 행에 있는걸 server_name 도메인주소.com;
으로 변경하고 저장 컨트롤 x y 엔터 (저장) 한다.
그다음 서버 재시작
sudo service nginx restart
인증서 발급
sudo certbot --nginx -d 도메인주소.com
이메일주소 입력 엔터
어그리 A 입력 엔터
Y 입력 엔터
그리고 1 또는 2 골라라라 나오는데 간단히 설명해서
1은 http 로 들어온 사람 -> https 로 리다이렉트 리디렉트 안한다
2는 리디렉트 리다이렉트 한다 이거다.
혼용이나 혼용 아니냐 문제인데 그건 각자의 선택으로.
이제 주소 쳐보면 자동으로 자물쇠가 잠긴게 확인된다.
자동으로 갱신도 하게 맹글어야겠지
아래 명령어로 갱신테스트 해보고
sudo certbot renew --dry-run
실제 수동 갱신은
sudo certbot renew
명령어다 참고만 하시도록!
만료일자 먼저 체크하기
sudo certbot certificates
익스파이어 데이가 나온다. 그게 만료일자다.
크론탭 설치 (우분투 기준으로 적는다.)
크론탭은 스케쥴러로 자동으로 어떤 작업을 수행해주는 작업명령툴이다.
sudo apt-get update && sudo apt-get install cron
크론 설치가 완료되었다면 크론탭 설치를 하면 된다 쉽다.
아래 명령어로 현재 설정된 크론탭 스케쥴이 있는지 보고
sudo crontab -l
아래 명령어로 스케쥴을 수정 및 편집 추가하는 거다.
sudo crontab -e
그런데 우리는? certbot 을 설치했지? 그렇다는 말은 자동으로 갱신이 된다는 말이다.
sudo nano /etc/crontab
치면 언제 갱신되는지 나옴.
!!!!!!!!!
중요
!!!!!!!!!
혹시나 리디렉션 리다이렉트 리디렉트를 원치 않았는데, 잘못 리디렉션을 했다 하면, certbot이나 cron crontab SSL 인증서 삭제하지 말고, 그냥 새로운 주소로 덮어 씌워라. 계속 리디렉션 되는거 풀려고 지웠다가 접속조차 못한 경우가 발생하니.(sudo nano /etc/nginx/sites-available/default 들어가서 server_name _; 으로 바꿔주면 초기 아이피주소 혹은 초기 도메인으로 접속은 가능할 수도 있다! 때에 따라 안되기도 함.)
첨부터 sudo nano /etc/nginx/sites-available/default 드가서 서버네임 오른쪽에 새로이 하려는 세팅할 주소 적고 리디렉션 할래 2 안할래 1 선택할때 1로 잘 선택해서 하면 된다.
애초에 주소 적고 리디렉션 안한다고 선택 하면 편할일~ 으이고
시간이 오래 지났다. 디비 설정하자.
디비설정 마리아디비
언어설정 먼저
sudo nano /etc/mysql/conf.d/mariadb.cnf
켜서
아래 내용 복붙
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
컨트롤 엑스 와이 엔터(저장)
마리아 디비 재시작
sudo service mariadb restart
퍼티 껐다 키기
sudo shutdown now -r
sudo mysql_secure_installation
이라고 칩니다.
그러면 순서대로
Enter current password for root (enter for none): 라고 뜰텐데 그냥 엔터 를 치면 됩니다. Enter
Switch to unix_socket authentication [Y/n] N
Change the root password? [Y/n] Y
New password : 마리아 디비에서 사용할 비번 잘 생각해서 칩니다.
Re-enter new password: 다시한번 위에서 설정한 비번을 칩니다.
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] N
Remove test database and access to it? [Y/n] Y
Reload Privilege tables now? [Y/n] Y
Thanks for using MariaDB!
그리고 명령어 줄이 다시 뜹니다.
아래 명령어를 쳐서 php-mysql 모듈이 잘 설치되었나 확인합니다.
sudo apt-cache policy php7.4-mysql
만약 위 명령어를 쳤는데 installed : (none) 이라고 나타나면
sudo apt-get install php7.4-mysql
을 쳐서 설치해줌 됩니다.
mysql -u root -p
명령어를 치면 위에서 만든 마리아 디비 에서 사용할 비밀번호를 치라고 나옵니다. 비번을 쳐주면
MariaDB [(none)]>
이라고 마리아 디비 / mysql 에서 사용하는 명령어 줄이 나옵니다.
디비 저장소를 이제 만들겁니다.
MariaDB [(none)]> CREATE DATABASE 본인이 원하는 데이터베이스 저장소 이름;
그리고 나서
MariaDB [(none)]> SHOW DATABASES;
라고 치면
+--------------------+
| Database |
+--------------------+
| information_schema |
| 데이터베이스이름 | # 생성한 DB 데이터베이스 저장소
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.000 sec)
이렇게 나올겁니다.
이제 마리아 디비 MariaDB 를 사용할 계정을 생성할 겁니다. 아까는 마리아 디비 접속 비번을 설정해주었던 거고, 이후에 마리에 디비 접속 이후 사용자에 대한 계정을 생성한다고 보면 됩니다.
MariaDB [(none)]> CREATE USER 사용할아이디@localhost;
라고 쳐서 아이디를 만들고 잘 기억해두셔야 합니다.
그리고 방금 만든 아이디의 비번을 만들어야겠죠.
MariaDB [(none)]> SET PASSWORD FOR 방금만든아이디@localhost=PASSWORD("비밀번호");
마리아 DB 에 접속 한 이후에 그 안에서 이용할 계정의 아이디 랑 비밀번호 가 잘 만들어 졌습니다.
이제 이 만들어진 계정의 생성한 DB 저장소 의 권한을 줘야겠죠.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON 위에서만든DB이름.* TO 방금만든아이디@localhost IDENTIFIED BY '방금설정한비번';
권한을 적용합니다.
MariaDB [(none)]> FLUSH PRIVILEGES;
잘 적용 되었으니 이제 마리아DB 에서 나갑니다.
MariaDB [mysql]> exit;
Bye ~!
https://rhymix.org/manual/introduction/install
이제 라이믹스 설치 단계다.
cd /var/www/html
기본 페이지인 html 페이지로 이동
sudo git clone https://github.com/rhymix/rhymix.git
그리고 위처럼 치면 html 폴더에 rhymix 폴더가 생기고 그 안에 깔림
그걸 이제 html 최상위 폴더로 복사 카피뜸
sudo cp -a /var/www/html/rhymix/. /var/www/html
그리고 기존 있던 라이믹스 폴더 지우기
sudo rm -r -f rhymix
그리고
cd /var/www/html
기본 폴더에서
sudo mkdir files
files란 폴더를 만들고
sudo chmod 777 files
권한 777을 준다
그리고 아이피 주소 입력하면 설치 마법사 시작
인데! 그전에 짧은주소 설정을 위해서
cd /etc/nginx/snippets
sudo touch rhymix.conf
라이믹스.conf 라는 파일 만들고
sudo nano rhymix.conf
나노 편집기 실행을 한다 그리고 아래 내용 복붙 (복사해서 마우스 오른쪽버튼 창에 누르면 붙여넣기 퍼티기준)
# block direct access to templates, XML schemas, config files, dotfiles, environment info, etc.
location ~ ^/modules/editor/(skins|styles)/.+\.html$ {
# pass
}
location ~ ^/(addons|common/tpl|files/ruleset|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml)$ {
return 403;
}
location ~ ^/files/(attach|config|cache/store)/.+\.(ph(p|t|ar)?[0-9]?|p?html?|cgi|pl|exe|[aj]spx?|inc|bak)$ {
return 403;
}
location ~ ^/files/(env|member_extra_info/(new_message_flags|point))/ {
return 403;
}
location ~ ^/(\.git|\.ht|\.travis|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) {
return 403;
}
# fix incorrect relative URLs (for legacy support)
location ~ ^/(.+)/(addons|files|layouts|m\.layouts|modules|widgets|widgetstyles)/(.+) {
try_files $uri $uri/ /$2/$3;
}
# fix incorrect minified URLs (for legacy support)
location ~ ^/(.+)\.min\.(css|js)$ {
try_files $uri $uri/ /$1.$2;
}
# fix download URL when other directives for static files are present
location ~ ^/files/download/ {
try_files $uri $uri/ /index.php$is_args$args;
}
# all other short URLs
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
컨트롤 + 엑스 눌러서 저장.
그리고 VPS 아이피주소를 인터넷창 켜서 치면 설치화면이 나오지만, 아직 설정을 더 하고 설치하자.
sudo nano /etc/nginx/sites-enabled/default
쳐서 아래에
server {
listen 80 default; # 다른 파일을 만들어 쓰는 경우 default 삭제
root /var/www/html; # 라이믹스를 설치할 경로 (반드시 최상단에 위치해야 합니다.)
server_name _; # 사용할 도메인을 여기에 추가해도 됨 (예: server_name example.com www.example.com;)
index index.html index.htm index.php; # index.php가 반드시 포함되어 있어야 합니다.
client_max_body_size 32m; # 업로드 허용 용량 (라이믹스는 분할 업로드를 지원하므로 약 10MB만 넘으면 사실상 무한[>
include snippets/rhymix.conf; # 라이믹스 rewrite 규칙 인클루드
# location 구문을 사용하는 다른 설정은 반드시 라이믹스 rewrite 규칙보다 나중에 선언해야 합니다.
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # PHP-FPM을 유닉스 소켓으로 연동하는 경우
# fastcgi_pass 127.0.0.1:9000; # PHP-FPM을 로컬 포트로 연동하는 경우
include snippets/fastcgi-php.conf;
}
}
이렇게 세팅한다.
중요한거 윗단계에서 애초에 쩌 위에 초기에 디폴트 파일 수정할때 하면 되지 않나? 생각할 수 있는데 그럼 설치가 안된다. 설치단계로 안넘어감.
기존에 있던 건 컨트롤 + K를 누르면 쉽게 행(줄)별로 지울 수 있다.
컨트롤 X 엔터 저장하고
sudo nginx -t
구문 문제 없나 체크하고
sudo systemctl reload nginx
sudo service nginx restart
재시작
다시 아이피주소 입력하고 설치하면 끝!
도메인 입력하고 설치하거나 초기에 SSL 체크하고 설치하면 접속이 안됨.
그러므로 꼭!!!
CMS 설치 마법사에서 SSL 사용안함으로 하고 나중에 사이트 설정에서 도메인 변경으로 하자.
주의!
SSL HTTPS 설정이 되어있어서 체크하고 설정을 하면 계속
_getContent method is not exists
라는 메세지가 뜰 수도 있다.
아이피주소로 라이믹스 설치 한 이후에 해야할 것!
라이믹스 설치 이후
도메인을 입힐때는 라이믹스 로그인 -> 톱니바퀴 -> 설정 내 시스템설정 들어가서 아이피 주소로 되어있는 초기 도메인 오른쪽에 보면 보이는 복사(꼭 복사를 해서 기존 아이피 주소랑, http 또는 https가 같이 있게 두고. 완전히 https 또는 http가 입혀지면 그때 아이피주소를 지운다.)를 눌러서
거기에 사이트제목/부제목/도메인 칸테 새로입힌 도메인 주소 https 입힌 도메인 주소 / Https 사용 권장을 바꾸고 아래 저장 누르면 된다.
도메인을 입히면 시간이 걸린다. 안된게 아니니까 기다릴 것!
설치 후 레이아웃 단 변경시 문제 권한문제
파일질라를 통해서 파일을 다운로드 하고 변경하려고 하면 안되어서,
권한을 아래 처럼 부여해주고 (퍼티에서) 파일을 다운로드하거나 옮긴다.
sudo chown -R 사용자명(예:ubuntu) /var/www/html
쉽게 말해서 파일질라 통해서 레이아웃이나 무언가 업로드 할때는 아래 명령어 두줄을 쓰고
sudo chown -R ubuntu /var/www/html
sudo chgrp -R ubuntu /var/www/html
관리자 메뉴 톱니바퀴 아래에 캐시파일 재생성을 꼭 누른다.
라이믹스 Rhymix Template not found: ./common/tpl/layout.html 오류 문제
레이아웃이 XEDITION 말고는 다른것들은 설치만 하면 모두
Template not found: ./common/tpl/layout.html 라는 오류가 발생했다.
해결방법이 없어서 없는 layout.html 파일 만들어서 넣어도 보고 레이아웃 스킨 파일들에 있는거 옮겨도 보고 별의 별 G LAL 을 다 해보았으나 안되었는데, 앗차! 이건 분명 권한 문제다 싶어서
아래
파일이나 레이아웃 업로드가 끝나면 꼭 아래 명령어를 써서 올린다.
sudo chown -R www-data:www-data /var/www/html
sudo usermod -a -G www-data ubuntu
이렇게 권한 줘버리니 해결됨 ㅎ 끝!