Setup Development Environment¶
Cài đặt môi trường phát triển rất quan trọng phục vụ cho các lập trình viên nói chung có thể dễ dàng sử dụng.
Bài viết dưới đây là hướng dẫn đối với Hệ điều hành Ubuntu.
Trong phần này chúng ta cần nghiên cứu các đầu mục sau:
Cài đặt các thư viện cần thiết¶
Để phục vụ cho việc cài đặt môi trường Eclipse hoạt động, chúng ta cần cài đặt các thư viện hỗ trợ sau. Sử dụng các câu lệnh dưới đây để cài đặt.
Trước hết Mở Terminal để có thể gõ lệnh cài đặt bằng Tổ hợp phím Ctrl + Alt + T. Sau đó thực hiện cài đặt lần lượt các câu lệnh sau đây:
sudo apt install openjdk-8-jdk
sudo apt install make build-essential libreadline-dev wget curl llvm libssl-dev zlib1g-dev libbz2-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev libgdbm-dev libnss3-dev libedit-dev libc6-dev python-setuptools libxml2-dev libxslt1-dev libsasl2-dev python3-dev libldap2-dev libjpeg-dev python2-dev libpq-dev
Ví dụ hình minh họa dưới đây, ta gõ lệnh
sudo apt install openjdk-8-jdk
sau đó nhập Mật khẩu đăng nhập máy tính để tiến hành Cài đặt thư viện openjdk-8:Cài đặt trình biên dịch Less sang CSS
sudo apt install nodejs
sudo apt install npm
sudo npm install -g npm
sudo npm install -g less less-plugin-clean-css
Cài đặt trình chuyển đổi từ HTML sang PDF
sudo apt install wkhtmltopdf
Cài đặt Hệ quản trị cơ sở dữ liệu Postgreql:
Vì mỗi phiên bản Odoo hỗ trợ 1 số phiên bản PostgreSQL nhất định. Vì vậy chúng ta cần cài đặt đa phiên bản PostgreSQL để hỗ trợ các phiên bản Odoo từ 8.0 đến 16.0. Trước hết ta cần thêm PPA PostgreSQL:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo apt update
sudo apt dist-upgrade
- Cài đặt đa phiên bản PostgreSQL, trong phần này, chúng tôi sẽ cài đặt bốn phiên bản PostgreSQL chạy trên các cổng khác nhau:
PostgreSQL 14: cổng 5432 (cổng mặc định), để hỗ trợ Odoo 16
PostgreSQL 9.6: cổng 5433, hỗ trợ Odoo 8, Odoo 9
PostgreSQL 10: cổng 5434, hỗ trợ odoo 10, Odoo 11
PostgreSQL 12: cổng 5435, hỗ trợ Odoo 12, Odoo 13, Odoo 14, Odoo 15
QUAN TRỌNG: thứ tự cài đặt bên dưới là QUAN TRỌNG!
sudo apt install postgresql postgresql-contrib
(Cài đặt PostgreSQL 14)sudo apt install postgresql-9.6 postgresql-contrib-9.6 postgresql-client-9.6
(Cài đặt PostgreSQL 9.6)sudo apt install postgresql-10 postgresql-client-10
(Cài đặt PostgreSQL 10)sudo apt install postgresql-12 postgresql-client-12
(Cài đặt PostgreSQL 12)
- Tạo Role cho mỗi phiên bản PostgreSQL có cùng tên với tài khoản Linux/ Ubuntu của bạn::
sudo -u postgres createuser --interactive -p 5432
(PostgreSQL 14)sudo -u postgres createuser --interactive -p 5433
(PostgreSQL 9.6)sudo -u postgres createuser --interactive -p 5434
(PostgreSQL 10)sudo -u postgres createuser --interactive -p 5435
(PostgreSQL 12)
- Cài đặt các phiên bản Python như sau:
Đối với odoo8, odoo9, odoo10 sẽ sử dụng python2.7, bạn có thể kiểm tra xem máy của mình đã có phiên bản python2 chưa bằng cách mở Terminal gõ lệnh
python2 -V
. Nếu chưa có thì cài đặt python2.7 như sau:sudo apt install python2 -y
Cài đặt Pip cho python2.7:
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py
Đối với odoo13, odoo14, odoo15, odoo16:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7 python3.7-dev python3.7-venv
(Dùng cho odoo13)sudo apt install python3.8 python3.8-dev python3.8-venv
(Dùng cho odoo14, odoo15)sudo apt install python3.9 python3.9-dev python3.9-venv
(Dùng cho odoo15)sudo apt install python3.10 python3.10-dev python3.10-venv
(Dùng cho odoo16)sudo apt install python3.11 python3.11-dev python3.11-venv
Tạo môi trường ảo python2 cho các phiên bản Odoo8, Odoo9, Odoo10:
- Mở Terminal gõ cú pháp sau:
sudo apt install python3-pip
sudo -H pip3 install --upgrade pip
pip install virtualenv
sudo apt install python3-virtualenv
virtualenv ~/python2.7-venv/odoo8
- Để kích hoạt môi trường ảo, ta làm như sau:
source ~/python2.7-venv/odoo8/bin/activate
- Để thoát khỏi môi trường ảo, ta gõ lệnh:
deactivate
- Tương tự có thể tạo các môi trường ảo cho Odoo9, Odoo10
virtualenv ~/python2.7-venv/odoo9
virtualenv ~/python2.7-venv/odoo10
Tạo môi trường ảo (Python venv) đối với các phiên bản Python3:
- Mở Terminal gõ cú pháp sau:
python3.7 -m venv ~/python3.7-venv/odoo13
(đường dẫn có thể tùy ý lựa chọn nhưng nên theo quy ước chung để dễ tìm)
- Để kích hoạt môi trường ảo, ta làm như sau:
source ~/python3.7-venv/odoo13/bin/activate
- Để thoát khỏi môi trường ảo, ta gõ lệnh:
deactivate
- Tương tự với các phiên bản Python 3.8, 3.9, 3.10, 3.11 tương ứng với các phiên bản Odoo thích hợp:
python3.8 -m venv ~/python3.8-venv/odoo14
python3.8 -m venv ~/python3.8-venv/odoo15
python3.10 -m venv ~/python3.10-venv/odoo16
Hình ảnh minh họa:
Cài đặt ứng dụng quản trị cơ sở dữ liệu pgAdmin 4¶
pgAdmin 4 là nền tảng quản trị và phát triển Mã nguồn mở phong phú và phổ biến nhất dành cho PostgreSQL. Nó được xây dựng bằng Python và Javascript / jQuery và cung cấp hai kiểu cài đặt, một là Triển khai trên desktop và hai là Triển khai trên máy chủ. Để cài đặt pgAdmin 4 dành cho bản trên Desktop, mở Terminal để thực hiện cài đặt lần lượt các câu lệnh sau đây:
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
sudo apt install pgadmin4-desktop
- Cấu hình pgAdmin 4 trên giao diện Desktop theo các bước trên hình ảnh minh họa sau:
Có thể sử dụng cách sau để tạo Role và thêm quyền cho Role, mở Terminal gõ:
sudo service postgresql start
sudo -u postgres psql
Lúc này, con trỏ đã nhảy vào trong postgres để chờ lệnh tạo Role như hình sau:
CREATE USER tên_đăng_nhập WITH LOGIN SUPERUSER CREATEDB CREATEROLE INHERIT REPLICATION CONNECTION LIMIT -1;
ALTER USER postgres PASSWORD '0';
Lưu ý: tên_đăng_nhập ở trên là tên user trong Terminal như hình minh họa bên dưới:
Mở pgAdmin 4 sẽ bật ra 1 cửa sổ yêu cầu thiết lập Mật khẩu đăng nhập pgAdmin.(Để đăng nhập những lần sau)
Nhập mật khẩu cho tài khoản postgres ở ví dụ này là 0 đã được thiết lập ở câu lệnh
ALTER USER postgres PASSWORD '0';
Tạo 1 server mới trên pgAdmin4, ta vào mục Add New Server:
Mục Hostname/ address có thể đặt tên tùy ý, Password dùng mật khẩu là 0 như đã thiết lập trước đó.
Cài đặt ứng dụng Eclipse và tạo icon cho Eclipse¶
Truy cập https://www.eclipse.org/downloads để tải Eclipse phiên bản mới nhất về.
Sau đó giải nén tệp đã Download ra thành 1 thư mục. Mở tệp chạy có tên là eclipse-inst . Ta thấy giao diện như sau:
Thực hiện các bước tiếp theo như hình ảnh minh họa để chọn cài đặt bản Eclipse IDE dành cho Enterprise Java và Web Developers:
Để tạo icon cho Eclipse bên ngoài màn hình Destop ta thực hiện các bước như sau:
Bước 1: Vào Terminal bằng Ctrl + Alt + T sau đó thực hiện cú pháp:
sudo nano /usr/share/applications/eclipse.desktop
để mở ra 1 trình soạn thảo có tên là Nano.Bước 2: Copy đoạn mã sau vào trình soạn thảo Nano trên:
[Desktop Entry]
Version=1.0
Name=Eclipse
Comment=Java IDE
Type=Application
Categories=Development;IDE;
Exec=/home/tên_đăng_nhập/eclipse/javascript-2019-12/eclipse/eclipse
Terminal=false
StartupNotify=true
Icon=/home/tên_đăng_nhập/eclipse/javascript-2019-12/eclipse/icon.xpm
Name[en_US]=Eclipse
Bước 3: Tại 2 dòng
Exec=
vàIcon=
, thay đổi giá trị tên_đăng_nhập thành tên user trong Terminal, thay đổi phiên bản Eclipse javascript-2019-12 thành phiên bản hiện đang cài đặt trên máy. Ví dụ như theo đường dẫn sau: /home/eclipse/jee-2021-12.Sau khi thay đổi như trên, Ctrl + o để ghi đè nội dung và nhấn Enter để lưu lại thay đổi. Ctrl + x để thoát trình soạn thảo Nano.
Bước 4: Khởi động lại Eclipse bằng cách mở tệp thực thi có tên là eclipse-inst sẽ hiện Icon ngoài Desktop, ta chuột phải vào Icon và chọn Add to Favorites để Lưu Icon trên thanh Taskbar.
Các bước thiết lập trong Eclipse¶
Mở giao diện Eclipse và thiết lập các Dự án Odoo và Trình thông dịch như đường dẫn và hình vẽ minh họa dưới đây:
Cài đặt PyDev trên Eclipse, ta vào Tab Help > Eclipse Marketplace > Find > Gõ PyDev để tìm > Chọn Nút Install để cài đặt.
Sau khi hoàn tất cài đặt PyDev, sẽ yêu cầu khởi động lại Eclipse. Tiếp đó ta lần lượt Show các mục cần thiết trên giao diện Eclipse để phục vụ cho công việc:
Đưa các mục PyDev, Debug, Git,... ra ngoài giao diện theo đường dẫn sau:
PyDev: Trên giao diện Eclipse > Window > Perspective > Open Perspective > Other > PyDev.
Git: Trên giao diện Eclipse > Window > Perspective > Open Perspective > Other > Git.
Debug: Trên giao diện Eclipse > Window > Perspective > Open Perspective > Debug.
Ta được như hình minh họa sau:
Đưa các mục Console, Search, Git Staging, ... ra ngoài giao diện theo đường dẫn sau:
Console: Trên giao diện Eclipse > Window > Show View > Console.
Search: Trên giao diện Eclipse > Window > Show View > Search.
Git Staging: Trên giao diện Eclipse > Window > Show View > Other > Git Staging.
Các bước thiết lập trình thông dịch Interpreter:
Bước 1: Trên giao diện Eclipse, chọn Tab Window > Preferences > PyDev > Interpreters > Python interpreter > Chọn nút Browse for python/ pypy exe sẽ mở ra 1 cửa sổ Select Interpreter để chọn tới phiên bản python interpreter như sau:
Bước 2: Ví dụ ta cần python3.8-venv thì Ở mục
Interpreter Executable
ta chọn Browse tìm đến phần /home/python3.8-venv/odoo14/bin/python3.8. MụcInterpreter name
ta đặt tên là python3.8-venv như hình trên.Bước 3: Chọn OK để lưu lại là ta đã có mục **
Bước 4: Thao tác lại 3 bước trên để có thể có thêm các phiên bản python khác trong mục Python Interpreters.
Tạo SSH Key cho tài khoản Github¶
Vào Terminal gõ lệnh:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
(trong đó thay email của bạn vào phầnyour_email@domain.com
).
Sau đó xác nhận Enter (3 lần) như hình minh họa:
Vào Home > Ctrl H để hiện các file ẩn và tìm thư mục .ssh, bên trong có các file id_rsa và id_rsa.pub. Lưu ý: Không chia sẻ tệp id_rsa.
Mở tệp id_rsa.pub và copy toàn bộ đoạn mã nội dung trong đó vào New SSH Key theo đường dẫn sau:
Truy cập Github theo địa chỉ https://github.com
Vào Setting > SSH and GPG keys > New SSH key
Paste đoạn mã nội dung tệp id_rsa.pub vào phần Key trong mục New SSH Key. Phần Title có thể đặt tên bất kỳ. Sau đó chọn Add SSH Key, yêu cầu nhập Mật khẩu đăng nhập Github để xác thực Lưu mã trên.
Lấy các mã nguồn cần thiết về Eclipse¶
Truy cập https://github.com/viindoo để có thể lấy mã nguồn về Eclipse.
https://github.com/Viindoo/odoo
(Mã nguồn được Fork ra từ Odoo và Viindoo điều chỉnh, cải tiến, bổ sung thêm)
Ở phần này, chúng ta cần lấy các Repository tiêu chuẩn của Viindoo như sau:
https://github.com/Viindoo/tvtmaaddons
https://github.com/Viindoo/erponline-enterprise
https://github.com/Viindoo/web
https://github.com/Viindoo/branding
https://github.com/Viindoo/backend_theme
https://github.com/Viindoo/odoo-web_gantt
Trong đó:
odoo: Là mã nguồn của Odoo CE mà Viindoo đã bổ sung dịch tiếng Việt + hot fixes (các lỗi mà mình cho rằng Odoo nên fix mà Odoo chưa fix).
tvtmaaddons: Là cụm module do Viindoo phát triển và có bán trên Viindoo Marketplace.
erponline-enterprise: Là cụm module chúng ta phát triển và không bán trên Viindoo Marketplace, chỉ dành cho khác dùng Saas hoặc một số dự án on-premise đặc biệt.
web: Là cụm module của OCA, chúng ta chỉ cần mỗi module
web_responsive
trong repo này phục vụ cho giao diện mobile responsive ở bên trong.branding: Là cụm module màu thương hiệu, icon do ta tự thiết kế.
backend_theme: Là cụm module về giao diện Backend.
odoo-web_gantt: Là cụm module cung cấp
Gantt view
và các module dùngGantt view
(Ví dụ: mrp, project,...).
Cách lấy mã nguồn và tổ chức sắp xếp mã nguồn một cách thống nhất. Có 2 cách lấy mã nguồn (bằng Terminal hoặc bằng giao diện Eclipse).
Cách 1: Dùng Terminal (Theo hướng dẫn và hình ảnh minh họa dưới đây):
Truy cập Github tìm mã nguồn cần lấy về, Copy link liên kết bằng cách chọn Code > Sang tab SSH > Copy (hình ảnh 2 ô vuông nhỏ ở cuối dòng).
Mở Terminal gõ:
git clone [Đường link đã Copy trên] -b 14.0 [Nơi để lưu Mã nguồn lấy về]
Trong đó -b 14.0* là chỉ thị rằng đây là Nhánh 14.0, **--depth 1 có tác dụng không lấy toàn bộ history của toàn bộ repo, mà chỉ lấy 1 phần thôi. Số 1 ở đây có nghĩa là chỉ lấy phiên bản mới nhất trong history.
Lưu ý con trỏ tại vị trí hiện hành đang ở đâu thì mã nguồn sẽ được lưu tại vị trí hiện hành đó.
Ví dụ dưới đây là lấy mã nguồn Odoo nhánh 14 về thư mục odoo14 đặt trong thư mục git:
git clone git@github.com:Viindoo/odoo.git --depth 1 -b 14.0 ~/git/odoo14
Để tránh việc thực hiện sao chép lại mất nhiều thời gian, chúng ta có thể sao chép odoo14 đã tải xuống và checkout nhánh 15.0, 16.0 như sau:
Checkout từ Odoo14 sang Odoo15:
cp -R ~/git/odoo14 ~/git/odoo15
cd ~/git/odoo15
git checkout 15.0
Checkout từ Odoo15 sang Odoo16:
cp -R ~/git/odoo15 ~/git/odoo16
cd ~/git/odoo16
git checkout 16.0
Tương tự ta cũng thể thể checkout với các nhánh Odoo khác
Để thống nhất, chúng ta có thể Tạo 1 thư mục tên là git nằm trong thư mục Home (Ví dụ:
/home/tu/git/[các mã nguồn]
)là nơi chưa các thư mục mã nguồn vào đó. Để các mã nguồn đúng thứ tự thì sắp xếp bằng cách đặt tên có số 0. 1. 2. 3. cho lần lượt cho các repository.Ví dụ: odoo xếp liền với nhau thì đặt số 0 đầu tiên thành
0.odoo
, tvtmaaddons thì đặt số 1 ở đầu tiên thành1.tvtmaaddons
.Vào Eclipse > File > New > Pydev Project > Bỏ tích Use Default.
Chọn Browse và tìm đến thư mục Git (Ví dụ đến odoo14 thì kick vào tiếp) rồi chọn Open.
Phần Project name ta nên đặt tên 0.odoo14 theo quy ước đã thống nhất ở trên.
Phần Interpreter chọn
python3.8
hoặcpython3.8-venv
tùy theo nhu cầu sử dụng (Có thể thay đổi phần này sau). Sau đó chọn Next sẽ mở ra 1 cửa sổ Reference page để lựa chọn phiên bản odoo tham chiếu, ta chọn tick vào odoo14 rồi Finish.Lúc này trên giao diện Eclipse đã thấy mục 0.odoo14 xuất hiện ở cột bên trái trong Tab PyDev Package Explorer
Tương tự các bước như trên đối với các Mã nguồn (với các phiên bản) còn lại như
tvtmaaddons
,erponline-enterprise
,web
,branding
,backend_theme
,odoo-web_gantt
, ta được như hình minh họa dưới đây:
Cách 2: Dùng Eclipse (Theo Link liên kết dưới đây):
Thiết lập cấu hình Addons chạy trên Odoo trên Eclipse¶
Như ta đã biết, để khởi chạy Odoo, ta chạy file odoo-bin (đối với Odoo10 trở lên) hoặc odoo.py đối với Odoo7, Odoo8, Odoo9. Trên giao diện Eclipse, mở chuột phải file
odoo-bin
theo đường dẫn 0.odoo14 > odoo-bin sau đó chọn Run As > Python Run để mở ra 1 cửa sổ Run Configurations.Tại Tab Arguments, copy đoạn mã cấu hình như sau vào mục Program arguments
--addons-path=~/git/odoo14/addons,~/git/tvtmaaddons14,~/git/erponline-enterprise14,~/git/web14,~/git/backend_theme14,~/git/branding14,~/git/odoo-web_gantt14
.Hình ảnh minh họa:
Chọn Apply để xác nhận thay đổi cấu hình chạy.
Các thư viện cần thiết hỗ trợ Odoo được nằm trong file requirements.txt nên để cài đặt hết các thư viện, ta sẽ cài đặt file có tên là
requirements.txt
trong các thư mục chứa mã nguồn(nếu có) như sau:Mở Terminal, cài đặt
requirements.txt
cho mã nguồn odoo14 thông qua python3.8-venv qua các câu lệnh sau:cd /home/**tên_đăng_nhập**/python3.8-venv/odoo14/bin
source activate
pip install -r /home/**tên_đăng_nhập**/git/odoo14/requirements.txt
Tiếp tục tương tự cài đặt các file requirements.txt (nếu có) cho
tvtmaaddons
,erponline-enterprise
... thông qua python3.8-venv như trên.
Để kiểm tra xem các mã nguồn đã được thêm vào cấu hình chạy odoo thành công hay chưa. Ta chạy lại file 0.odoo14 ở trên, nếu dưới Tab Console đã hiển thị đầy đủ các mã nguồn như hình dưới là được.
Mở trình duyệt, gõ
https://localhost:8069/web/database/manager
sẽ xuất hiện 1 cửa sổ, nhân nút Create Database để tạo Odoo Database.Sau khi tạo database xong, trình duyệt sẽ mở ra một giao diện phần mềm odoo chạy trên Localhost.
Khi tạo database, odoo sẽ sinh ra file .odoorc tại thư mục /home để lưu rất nhiều các thông tin cấu hình, ví dụ: addons_path, admin_paswd, db_host, db_password, db_port, http_port, ... Khi Odoo chạy sẽ load file đó như trên hình ảnh minh họa ở Tab Console.
Bạn hoàn toàn có thể tạo nhiều các file config .odoorc đó và đặt tên riêng (gợi ý tên dễ nhớ) theo ý muốn ví dụ odoo15_8070.conf đối với odoo15 hay odoo16_8071.conf đối với odoo16, ...
Để load file đó ta dùng cú pháp
-c [Đường dẫn đến file odoo.conf đó]
. Ví dụ:-c /home/tu/odoo15_8115.conf
Chú ý khi chạy odoo cần quan sát file .odoorc đó sẽ tự động load, cần xem có đồng thời chạy với các file odoo.conf hoặc ô nhập liệu trong Run Configurations/Aguments xem có bị trùng hay xung đột port hay các thông số khác không thì điều chỉnh lại cho phù hợp.
Trường hợp Không đúng với cấu hình đang chạy, ta có thể xóa file .odoorc đó đi.
Cách chạy nhiều Odoo Instance trên nhiều Port khác nhau:
Tùy theo nhu cầu test một lúc nhiều phiên bản odoo khác nhau hoặc cùng 1 phiên bản odoo chạy trên nhiều port khác nhau mà ta có thể làm theo cách như sau:
Ví dụ muốn chạy Odoo16 trên Port 8888 và Port 8089, ta mở Terminal gõ lệnh như sau:
~/git/odoo16/odoo-bin -p 8888
, mở tiếp 1 cửa sổ Terminal gõ lệnh:~/git/odoo16/odoo-bin -p 8089
, sau đó mở 2 cửa sổ trình duyệt gõ:https://localhost:8888/web/database/manager
vàhttps://localhost:8089/web/database/manager
sẽ xuất hiện 1 cửa sổ, nhân nút Create Database để tạo Odoo Database. Như vậy là ta đã được 2 Instance Odoo 16 chạy đồng thời trên 2 Port khác nhau.Dưới đây là hình ảnh minh họa cho 2 Instance Odoo16 chạy trên 2 Port 8888 và 8089:
Để ngừng chạy odoo, trên Terminal ta gõ tổ hợp phím
Ctrl + C