웹사이트 검색

Ubuntu 20.04에 Odoo 14 ERP 소프트웨어를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 15.04(생생한 Vervet)

이 페이지에서

  1. 전제 조건
  2. 방화벽 규칙 구성\n
  3. 호스트 이름 할당\n
  4. PostgreSQL 설치 및 구성
    1. 호스트 기반 인증 구성\n
    2. PostgreSQL 수신 주소 구성
    3. PostgreSQL 서비스 활성화 및 시작\n

    1. 종속 항목 설치 및 설치 준비\n
    2. Odoo 파일 다운로드
    3. Virtualenv Python 환경 설정\n
    4. Python 종속성 설치

    1. Odoo 서비스 생성
    2. 파일 권한 설정\n
    3. Odoo 서버 시작

    Odoo(이전의 OpenERP)는 CRM, 전자 상거래, 회계, 재고, 프로젝트 관리 및 POS를 포함한 다양한 비즈니스 요구에 적합한 10,000개 이상의 오픈 소스 애플리케이션으로 구성된 자체 호스팅 제품군입니다. 이러한 애플리케이션은 공통 웹 인터페이스를 통해 완전히 통합되고 액세스됩니다.

    이 튜토리얼에서는 Ubuntu 20.04 기반 서버에 Odoo 14 Stack을 설치하는 방법을 배웁니다.

    전제 조건

    1. A Ubuntu 20.04 based server with a minimum of 2GB RAM to host Odoo Stack.

    2. 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.

    3. 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.

    4. Keep your systems updated.

      $ sudo apt update
      $ sudo apt upgrade
      
    5. 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를 사용합니다.

    1. Create a new virtualenv environment for Odoo.

      $ python3 -m venv /home/<username>/odoo-env
      
    2. 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
      
    3. Update PIP just in case.

      (odoo-env) $ pip3 install --upgrade pip
      
    4. 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를 설치하는 방법에 대한 자습서를 마칩니다. 질문이 있으시면 아래 의견에 게시하십시오.