Ubuntu 20.04에 Odoo 14 ERP 소프트웨어를 설치하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 15.04(생생한 Vervet)
이 페이지에서
- 전제 조건
- 방화벽 규칙 구성\n
- 호스트 이름 할당\n
- PostgreSQL 설치 및 구성
- 호스트 기반 인증 구성\n
- PostgreSQL 수신 주소 구성
- PostgreSQL 서비스 활성화 및 시작\n
- 종속 항목 설치 및 설치 준비\n
- Odoo 파일 다운로드
- Virtualenv Python 환경 설정\n
- Python 종속성 설치
- Odoo 서비스 생성
- 파일 권한 설정\n
- Odoo 서버 시작
Odoo(이전의 OpenERP)는 CRM, 전자 상거래, 회계, 재고, 프로젝트 관리 및 POS를 포함한 다양한 비즈니스 요구에 적합한 10,000개 이상의 오픈 소스 애플리케이션으로 구성된 자체 호스팅 제품군입니다. 이러한 애플리케이션은 공통 웹 인터페이스를 통해 완전히 통합되고 액세스됩니다.
이 튜토리얼에서는 Ubuntu 20.04 기반 서버에 Odoo 14 Stack을 설치하는 방법을 배웁니다.
전제 조건
-
A Ubuntu 20.04 based server with a minimum of 2GB RAM to host Odoo Stack.
-
A second Ubuntu 20.04 based server with a minimum of 2GB RAM for hosting the PostgreSQL database. You can however install the database on the same server as Odoo but for production environments, it is highly recommended that you install it on a separate server. You can also choose any of the managed database options available from any provider of your choice.
-
RAM requirement will depend on the number of concurrent users that will be using the stack. A detailed guide on how to calculate system requirements can be found in Odoo's documentation.
-
Keep your systems updated.
$ sudo apt update $ sudo apt upgrade
-
A non-root user with sudo privileges on both servers.
방화벽 규칙 구성
이 자습서의 목적을 위해 두 서버 모두에
ufw
방화벽이 설치되어 있다고 가정합니다.Odoo 서버에서 포트 22, 80, 443, 6010, 5432 및 8069를 열어야 합니다. 22는 SSH, 80은 HTTP, 443은 HTTPS, 6010은 Odoo 통신, 5432는 PostgreSQL, 8069는 Odoo 서버 애플리케이션이 사용합니다.
다음 명령을 실행하여 Odoo 서버에서 필요한 포트를 엽니다.
$ sudo ufw allow "OpenSSH" $ sudo ufw allow 80,443,6010,5432,8069,8072/tcp $ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp $ sudo ufw allow 6010/tcp $ sudo ufw allow 5432/tcp $ sudo ufw allow 8069/tcp $ sudo ufw allow 8072/tcp
PostgreSQL 서버에서 포트 22, 6010 및 5432를 열어야 합니다. 방금 설명한 명령을 사용하여 엽니다.
호스트 이름 할당
사용 가능한 경우 서버의 IP 주소를 사용하거나 해당 FQDN(정규화된 도메인 이름)을 사용할 수 있습니다. 자습서에서는 FQDN을 사용하고 이를 위해 두 서버 모두에서 호스트 이름을 설정해야 합니다.
Odoo 서버에서
/etc/hosts
파일을 엽니다.$ sudo nano /etc/hosts
확인하십시오. 다음과 같습니다.
127.0.0.1 localhost 127.0.0.1 odoo.yourdomain.com odoo 10.1.1.10 postgresql.yourdomain.com postgresql
PostgreSQL 서버에서 파일을 열고 다음과 같은지 확인합니다.
127.0.0.1 localhost 127.0.0.1 postgresql.yourdomain.com postgresql 10.1.2.10 odoo.yourdomain.com odoo
Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
PostgreSQL 설치 및 구성
Ubuntu 20.04는 기본적으로 PostgreSQL 12와 함께 제공되며 이를 설치합니다. PostgreSQL 서버에서 다음 명령을 실행합니다.
$ sudo apt install postgresql-12 postgresql-server-dev-12
다음으로 데이터베이스 사용자
odoo.
를 생성해야 합니다.$ sudo -u postgres createuser odoo -U postgres -dP
-u
옵션은postgres
사용자로 명령을 실행합니다.-U
옵션은 연결할 사용자 이름을 나타냅니다.-d
옵션은 사용자에게 데이터베이스 생성 권한을 부여합니다.-p
옵션은 새 사용자 암호를 묻는 메시지를 표시합니다.호스트 기반 인증 구성
Odoo 서버에 연결할 수 있으려면 PostgreSQL 서비스에 권한을 부여해야 합니다.
먼저 PostgreSQL 서비스를 중지합니다.
$ sudo systemctl stop postgresql
편집을 위해
/etc/postgresql/12/main/pg_hba.conf
파일을 엽니다.$ sudo nano /etc/postgresql/12/main/pg_hba.conf
끝에 다음 줄을 붙여넣습니다.
host all odoo odoo.yourdomain.com md5
이 줄은
odoo
사용자에게 이 서버 내의 모든 데이터베이스에 연결할 수 있는 권한을 부여합니다.all
키워드를 사용하는 대신 데이터베이스 이름도 지정할 수 있습니다.Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
PostgreSQL 수신 주소 구성
다음으로 데이터베이스 서버가 원격 연결을 수신하도록 허용해야 합니다. 편집을 위해
/etc/postgresql/12/main/postgresql.conf
파일을 엽니다.$ sudo nano /etc/postgresql/12/main/postgresql.conf
listen_addresses
줄을 다음에서 변경합니다.#listen_addresses = 'localhost' # what IP address(es) to listen on;
에게.
#From CONNECTIONS AND AUTHENTICATION Section listen_addresses = '*'
*
는 모든 IP 주소를 수신한다는 의미입니다. odoo 인스턴스의 IP 주소로 변경할 수 있습니다.Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
PostgreSQL 서비스 활성화 및 시작
구성이 완료되었으므로 PostgreSQL 서비스를 시작하고 활성화할 차례입니다.
$ sudo systemctl start postgresql && sudo systemctl enable postgresql
오두 설치
종속성 설치 및 설치 준비
Odoo 서버에서 Odoo 프로세스를 관리하기 위한 새 시스템 사용자를 만듭니다.
$ sudo adduser --system --home=/opt/odoo --group odoo
일부 시스템 종속성을 설치해야 하지만 먼저 소스 리포지토리를 활성화해야 합니다. 이렇게 하려면 원본 소스 목록을 백업한 다음 모든 소스 리포지토리를 활성화하고 리포지토리 목록을 업데이트합니다.
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list~ $ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list $ sudo apt update
Odoo 14 설정에 필요한 시스템 종속성을 설치합니다.
$ sudo apt install python3-pip python3-suds python3-all-dev python3-venv python3-dev python3-setuptools python3-tk libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev libyaml-dev fontconfig xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils libpq-dev $ sudo apt build-dep lxml
Nodejs를 설치합니다.
$ sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - $ sudo apt install nodejs
Node.js를 사용하여 Less CSS 패키지를 설치합니다.
$ sudo npm install -g less less-plugin-clean-css
wkhtmltopdf
버전 0.12.6 패키지를 다운로드합니다.$ cd /tmp $ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
패키지를 설치합니다.
$ sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
wkhtmltopdf
가 제대로 작동하는지 확인하려면 바이너리를/usr/bin
에 복사하고 적절한 권한을 부여하십시오.$ sudo cp /usr/local/bin/wkhtmlto* /usr/bin/ $ sudo chmod a+x /usr/bin/wk* $ cd ~
오두 파일 다운로드
시스템에 Odoos Github 리포지토리를 복제합니다.
$ sudo git clone https://github.com/odoo/odoo.git --depth 1 --branch 14.0 --single-branch /opt/odoo
목적을 위해 Odoo를 설치될
/opt/odoo
디렉토리에 복사합니다.Virtualenv Python 환경 설정
이 단계는 선택 사항이지만 Odoo용 가상 Python 환경은 특히 OS 업그레이드를 수행할 때 운영 체제의 Python 모듈과의 충돌을 피하는 데 도움이 되므로 권장됩니다.
이를 위해
virtualenv
를 사용합니다.-
Create a new
virtualenv
environment for Odoo.$ python3 -m venv /home/<username>/odoo-env
-
Activate the virtual environment. We are creating an environment under the system user's home directory. You are free to choose any location you like.
$ source /home/<username>/odoo-env/bin/activate
-
Update PIP just in case.
(odoo-env) $ pip3 install --upgrade pip
-
Install Python's wheel in the virtual environment.
$ pip3 install wheel
Python 종속성 설치
Odoo 14에 필요한 Python 종속성을 설치합니다.
$ pip3 install -r /opt/odoo/doc/requirements.txt $ pip3 install -r /opt/odoo/requirements.txt
요구 사항을 설치하는 데 약간의 시간이 걸리므로 인내심을 가지십시오.
설치된 Python 모듈 목록을 확인하여 요구 사항이 올바르게 설치되었는지 확인하십시오.
$ pip3 list Package Version ----------------------------- --------- alabaster 0.7.12 appdirs 1.4.4 attrs 20.3.0 Babel 2.6.0 beautifulsoup4 4.9.3 cached-property 1.5.2 certifi 2020.12.5 chardet 3.0.4 decorator 4.3.0 defusedxml 0.7.1 docutils 0.14 ebaysdk 2.1.5 feedparser 5.2.1 freezegun 0.3.15 gevent 20.9.0 greenlet 0.4.17 html2text 2018.1.9 idna 2.6 imagesize 1.2.0 isodate 0.6.0 Jinja2 2.11.2 libsass 0.17.0 lxml 4.6.1 Mako 1.0.7 MarkupSafe 1.1.0 num2words 0.5.6 ofxparse 0.19 packaging 20.9 passlib 1.7.1 Pillow 8.0.1 pip 21.0.1 pkg-resources 0.0.0 polib 1.1.0 psutil 5.6.6 psycopg2 2.8.5 pyasn1 0.4.8 pyasn1-modules 0.2.8 pydot 1.4.1 Pygments 2.8.1 pyparsing 2.4.7 PyPDF2 1.26.0 pyserial 3.4 python-dateutil 2.7.3 python-ldap 3.1.0 python-stdnum 1.8 pytz 2019.1 pyusb 1.0.2 qrcode 6.1 reportlab 3.5.55 requests 2.21.0 requests-toolbelt 0.9.1 setuptools 44.0.0 six 1.15.0 snowballstemmer 2.1.0 soupsieve 2.2 Sphinx 3.5.2 sphinx-patchqueue 1.0.4 sphinxcontrib-applehelp 1.0.2 sphinxcontrib-devhelp 1.0.2 sphinxcontrib-htmlhelp 1.0.3 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.3 sphinxcontrib-serializinghtml 1.1.4 unidiff 0.6.0 urllib3 1.24.3 vobject 0.9.6.1 Werkzeug 0.16.1 wheel 0.36.2 xlrd 1.2.0 XlsxWriter 1.1.2 xlwt 1.3.0 zeep 3.2.0 zope.event 4.5.0 zope.interface 5.2.0
Python 가상 환경을 종료합니다.
$ deactivate
Odoo 구성
기본 Odoo 구성 파일을 복사하여 새로 만듭니다.
$ sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server.conf
편집할 파일을 엽니다.
$ sudo nano /etc/odoo-server.conf
다음과 같이 보이도록 파일을 편집합니다.
[options] ; This is the password that allows database operations: admin_passwd = admin db_host = postgresql.yourdomain.com db_port = False db_user = odoo db_password = odoo_password addons_path = /opt/odoo/addons xmlrpc_port = 8069
Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
admin_passwd
옵션은 Odoo GUI 내에서 관리 작업을 허용하는 비밀번호입니다. 안전한 비밀번호를 선택하십시오.db_host
옵션은 PostgreSQL 서버의 FQDN 또는 IP 주소입니다.기본 PostgreSQL 포트 5432가 사용되고 있으므로
db_port
옵션은 false로 설정됩니다. 다른 포트를 사용하려면 이 값을 업데이트해야 합니다.db_user
옵션은 PostgreSQL 사용자의 이름입니다.db_password
옵션은 이전에 PostgreSQL 서버에서 생성한 PostgreSQL odoo 사용자 암호입니다.addons_path
옵션은 기본 애드온 경로입니다. 애드온을 쉼표로 구분하는 맞춤 경로를 추가할 수도 있습니다.xmlrpc_port
옵션은 Odoo가 청취하는 포트입니다.Odoo 서비스 생성
시스템을 다시 시작한 후에도 Odoo가 계속 실행되도록 하려면 서비스를 만들어야 합니다.
/lib/systemd/system/odoo-server.service
파일을 생성하고 편집을 위해 엽니다.$ sudo nano /lib/systemd/system/odoo-server.service
다음 코드를 붙여넣습니다.
[Unit] Description=Odoo Open Source ERP and CRM [Service] Type=simple PermissionsStartOnly=true SyslogIdentifier=odoo-server User=odoo Group=odoo ExecStart=/home/<username>/odoo-env/bin/python3 /opt/odoo/odoo-bin --config=/etc/odoo-server.conf --addons-path=/opt/odoo/addons/ WorkingDirectory=/opt/odoo/ StandardOutput=journal+console [Install] WantedBy=multi-user.target
/home/
를 Python 가상 환경을 설치하기 위해 선택한 위치로 바꿉니다.Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
파일 권한 설정
Odoo 사용자만 읽거나 실행할 수 있도록
odoo-server.service
파일에 대한 권한을 설정합니다.$ sudo chmod 755 /lib/systemd/system/odoo-server.service $ sudo chown odoo: /lib/systemd/system/odoo-server.service
Python 환경과 Odoo 설치 디렉터리에 대한 소유권을 설정합니다.
$ sudo chown -R odoo: /opt/odoo/ $ sudo chown -R odoo: /home/<username>/odoo-env
Odoo 구성 파일을 제한합니다.
$ sudo chown odoo: /etc/odoo-server.conf $ sudo chmod 640 /etc/odoo-server.conf
Odoo 서버 시작
Odoo 서버를 시작하고 활성화합니다.
$ sudo systemctl start odoo-server $ sudo systemctl enable odoo-server
서버의 상태를 확인하십시오.
$ sudo systemctl status odoo-server
브라우저에서 URL
http://
또는:8069 http://odoo.yourdomain.com:8069
를 엽니다. 모든 것이 제대로 작동하면 Odoos 데이터베이스 생성 화면이 표시됩니다.모든 필드를 채우십시오.
데모 데이터
필드를 선택하여 샘플 데이터로 데이터베이스를 채운 다음 데이터베이스 생성 버튼을 클릭합니다.다음으로 선택할 수 있는 앱 목록이 표시됩니다.
데이터베이스를 처음 생성할 때 애드온 페이지를 로드하는 데 시간이 걸리므로 페이지를 새로 고치지 마십시오.
Nginx 설치 및 구성
지금까지 Odoos 서버를 사용하여 스택을 실행했습니다. 그러나 이상적으로는 프록시를 사용하여 Nginx에서 실행하는 것이 좋습니다. 그렇게 하면 프록시에 SSL을 설치할 수 있기 때문입니다.
Nginx를 설치합니다.
$ sudo apt install nginx
Nginx를 통해 실행하려면 localhost에서 Odoo를 실행해야 합니다. 이를 변경하려면 Odoo 서비스를 중지하십시오.
$ sudo systemctl stop odoo-server
Odoo 서버 구성 파일을 엽니다.
$ sudo nano /etc/odoo-server.conf
다음 줄을 추가하십시오.
xmlrpc_interface = 127.0.0.1 proxy_mode = True
Odoo용 Nginx 구성 파일을 만듭니다.
$ sudo nano /etc/nginx/sites-available/odoo.conf
아래 코드를 붙여넣습니다.
#odoo server upstream odoo { server 127.0.0.1:8069; } upstream odoochat { server 127.0.0.1:8072; } # http -> https server { listen 80; server_name odoo.yourdomain.com; rewrite ^(.*) https://$host$1 permanent; } server { listen 443 ssl http2; server_name odoo.yourdomain.com; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; # Add Headers for odoo proxy mode proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # SSL parameters ssl_certificate /etc/letsencrypt/live/odoo.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_dhparam /etc/ssl/certs/dhparam.pem; # log access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; # Redirect longpoll requests to odoo longpolling port location /longpolling { proxy_pass http://odoochat; } # Redirect requests to odoo backend server location / { proxy_redirect off; proxy_pass http://odoo; } # common gzip gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript; gzip on; }
Ctrl + X를 눌러 편집기를 닫고 파일을 저장하라는 메시지가 표시되면 Y를 누릅니다.
sites-enabled
디렉터리에 연결하여 이 구성 파일을 활성화합니다.$ sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
Nginx 구성을 테스트합니다.
$ sudo nginx -t
SSL 설치
Lets Encrypt 서비스를 사용하여 SSL을 설치합니다.
이를 위해 Certbot을 설치합니다.
$ sudo apt install certbot
Certbot 프로세스를 방해하므로 Nginx를 중지하십시오.
$ sudo systemctl stop nginx
인증서를 생성합니다. 또한 DHParams 인증서를 생성해야 합니다.
$ sudo certbot certonly --standalone -d odoo.yourdomain.com --preferred-challenges http --agree-tos -n -m --keep-until-expiring $ sudo systemctl start nginx $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
또한 SSL을 자동으로 갱신하기 위해 cron 작업을 설정해야 합니다. crontab 편집기를 열려면 다음 명령을 실행합니다.
$ sudo crontab -e
맨 아래에 다음 줄을 붙여넣습니다.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
위의 크론 작업은 매일 오전 2시 25분에 certbot을 실행합니다. 원하는 것으로 변경할 수 있습니다.
Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.
Odoo 시작
이제 모든 것이 설정되었으므로 Odoo 서버를 다시 시작할 수 있습니다.
$ sudo systemctl start odoo-server
https://odoo.yourdomain.com
을 통해 브라우저에서 Odoo를 시작합니다. 앞에서 설명한 화면이 나타납니다. 데이터베이스를 생성하는 데 필요한 세부 정보를 입력하고 Odoo에 로그인하면 다음과 같은 화면이 표시됩니다.결론
이것으로 Ubuntu 20.04 서버에 Odoo를 설치하는 방법에 대한 자습서를 마칩니다. 질문이 있으시면 아래 의견에 게시하십시오.