giriiş
Odoo, Python dilinde yazılmış açık kaynaklı bir kurumsal kaynak planlama (ERP) aracıdır. Muhasebe, bordro, envanter yönetimi ve daha fazlası gibi çeşitli iş ihtiyaçları için çeşitli eklentileri destekler. Bu eğitimde, Docker Compose kullanarak Odoo ve bir PostgreSQL veritabanı kuracak, ardından Odoo siteniz için ters proxy görevi görecek Nginx'i kuracaksınız. Son olarak, Certbot'u kullanarak Let's Encrypt Sertifika Yetkilisi'nden bir TLS sertifikası indirip yapılandırarak güvenli HTTPS bağlantılarını etkinleştireceksiniz.
Ön koşullar
- 2 veya daha fazla CPU'ya sahip bir Ubuntu sunucusu, sudo ayrıcalıklarına sahip kök olmayan bir kullanıcı ve etkinleştirilmiş bir güvenlik duvarı.
- Docker kuruldu
- Son olarak, TLS'yi etkinleştirmek için sunucunuzun genel IP adresine işaret eden bir alan adına ihtiyacınız var. Bu, example.com veya odoo.example.com gibi bir şey olmalıdır.
Tüm ön koşullar hazır olduğunda, docker-compose paketini kuracağınız 1. adıma geçin.
Adım 1 – Docker Compose'u yükleyin
Komut satırı aracını yüklemek için docker-compose, paket listenizi yenileyin, ardından paketi kullanarak yükleyin uygun Düzenlemek:
sudo apt update
sudo apt install docker-composeAşağıdaki komutu çalıştırarak paketin yüklendiğini doğrulayabilirsiniz:
docker-compose –versionAşağıdaki gibi bir çıktı almalısınız:
Output
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10Docker Compose'un sunucunuza kurulu olduğunu doğruladıktan sonra, bu eğitimin bir sonraki adımında Docker Compose'u kullanarak Odoo ve PostgreSQL'i yapılandıracak ve başlatacaksınız.
Adım 2 – Docker Compose ile Odoo ve PostgreSQL Çalıştırma
Odoo ve PostgreSQL kapsayıcılarınızı oluşturmaya başlamak için, bu eğitimde oluşturacağınız dosyaları depolamak üzere ana dizininizde odoo adlı bir dizin oluşturun. Bu dizini, Odoo'yu çalıştırmak için ihtiyaç duyduğunuz tüm dosyaları depolamak için kullanacaksınız.
Dizini oluşturmak için aşağıdaki komutları çalıştırın ve ardından CD Çalıştırın:
mkdir ~/odoo
cd ~/odooŞimdi yeni bir boş YAML dosyası oluşturun docker-compose.yml kullanarak nano Veya favori düzenleyicinizi açın:
nano docker-compose.ymlBu dosyayı şu komutla kullanabilirsiniz: docker-compose Bunu Odoo ve PostgreSQL konteynerlerinizi başlatmak ve birbirine bağlamak için kullanacaksınız. Dosyaya aşağıdaki satırları ekleyin:
version: '3'
services:
odoo:
image: odoo:15.0
env_file: .env
depends_on:
- postgres
ports:
- "127.0.0.1:8069:8069"
volumes:
- data:/var/lib/odoo
postgres:
image: postgres:13
env_file: .env
volumes:
- db:/var/lib/postgresql/data/pgdata
volumes:
data:
db:Dosya iki hizmeti tanımlıyor. İlki, Odoo uygulamasını çalıştıran odoo. İkincisi ise PostgreSQL veritabanı kapsayıcısı olan postgres. Her iki hizmet de, çalışan kapsayıcı örneklerinin dışında veri depolamak için kullandıkları birimlere işaret ediyor. Son olarak, odoo hizmeti, sunucunuzdaki 8069 numaralı bağlantı noktasını, aynı 8069 numaralı bağlantı noktasında çalışan Odoo kapsayıcısına açar.
Dosyayı düzenlemeyi bitirdiğinizde kaydedin ve çıkın. Nano kullanıyorsanız, kaydetmek için CTRL+O ve ardından RETURN tuşlarına, çıkmak içinse CTRL+X tuşlarına basın.
Odoo ve PostgreSQL kapsayıcıları, yapılandırmaları için ortam değişkenlerini kullanır. docker-compose.yml dosyası, her iki hizmet için de bir env_file yönergesi belirtir. Bu yönerge, her hizmetin çalışması için gereken değişkenleri içeren bir referans dosyası içerir.
Bu yaklaşım, ortam değişkenlerini doğrudan docker-compose.yml dosyasına eklemek yerine genellikle önerilir, çünkü docker-compose.yml dosyanızda parolaları uzak tutmak iyi bir uygulamadır. Bu yaklaşım, dosyalarınızı bir Git deposuna veya başka bir kaynak kontrol sistemine kaydediyorsanız özellikle faydalıdır.
Nano ile yeni bir env dosyası açın:
nano .envDosyaya aşağıdaki satırları ekleyin ve vurgulanan değerleri bir değerle değiştirin POSTGRES_USER Ve POSTGRES_ŞİFRE Seçiminizi değiştirin:
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=a_strong_password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=a_strong_password_for_userOdoo ve PostgreSQL için bir parola oluşturmak üzere, çoğu Linux sisteminde bulunan openssl komutunu kullanın. Sunucunuzda aşağıdaki komutu çalıştırarak rastgele bir bayt kümesi oluşturun ve parola olarak kullanabileceğiniz base64 kodlu bir sürümünü yazdırın:
openssl rand -base64 30Ortaya çıkan dizgiyi koruma parolaları yerine kullanın. kullanıcı için güçlü bir parola Dosyada .çevre .env dosyanızı düzenlemeyi bitirdiğinizde, metin düzenleyicinizi kaydedip çıkın.
Artık konteyner oluşturmaya hazırsınız. odoo Ve postgres komutla docker-compose Başlayın:
docker-compose up -dup alt komutu, docker-compose'a kapsayıcıları ve docker-compose.yml dosyasında tanımlanan ilişkili birimleri ve ağları başlatmasını söyler. -d bayrağı ("daemonize" anlamına gelir), docker-compose'a kapsayıcıları arka planda çalıştırmasını söyler, böylece terminal komutunuz devreye girmez. docker-compose, gerekli Docker imajlarını indirip kapsayıcıları başlatırken kısa bir çıktı verir:
Output
Creating network "odoo_default" with the default driver
Creating volume "odoo_odoo_data" with default driver
Creating volume "odoo_postgres_data" with default driver
Pulling odoo (odoo:14.0)...
15.0: Pulling from library/odoo
. . .Bu işlem tamamlandığında Odoo çalışıyor olmalıdır. curl komutunu kullanarak ana sayfayı alarak bir web sunucusunun çalışıp çalışmadığını test edebilirsiniz. 127.0.0.1:8069 Koşular:
curl --head http://localhost:8069Bu, yalnızca yanıttan HTTP başlıklarını yazdıracaktır:
Output
HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Content-Length: 215
Location: http://localhost:8069/web
Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/
Server: Werkzeug/0.14.1 Python/3.7.3
Date: Tue, 08 Mar 2022 20:45:34 GMTCevap 303 DİĞERLERİNİ GÖR Bu, sunucunun Odoo Çalışıyor, ancak kurulumu tamamlamak için başka bir sayfayı ziyaret etmeniz gerekiyor. Başlık http://localhost:8069/web Belirtilen konum, tarayıcınızda Odoo kurulum sayfasını ziyaret etmeniz gereken yeri gösterir.
Daha sonra Nginx'i genel trafiği Odoo konteynerına yönlendirecek şekilde ayarlayacağız.
Adım 3 – Nginx'i Kurun ve Yapılandırın
Odoo sunucusunun önüne Nginx gibi bir web sunucusu yerleştirmek, önbelleğe alma, sıkıştırma ve statik dosya sunma işlemlerini devre dışı bırakarak performansı artırabilir ve böylece daha verimli bir süreç sunar. Nginx'i kurup Odoo'ya proxy isteklerini geri çevirecek şekilde yapılandıracağız; bu, kullanıcılarınızın isteklerini Odoo'ya gönderip geri gönderme işini Nginx'in üstleneceği anlamına gelir. Konteyner olmayan bir Nginx işlemi kullanmak, bir sonraki adımda Let's Encrypt TLS sertifikalarını eklemeyi kolaylaştıracaktır.
Öncelikle paket listenizi yenileyin, ardından Nginx'i kullanarak yükleyin uygun Düzenlemek:
sudo apt update
sudo apt install nginxNginx Full UFW uygulama profilini kullanarak 80 ve 443 (HTTP ve HTTPS) portlarına genel trafiğe izin verin:
sudo ufw allow "Nginx Full"Output
Rule added
Rule added (v6)Ardından /etc/nginx/sites-available dizininde yeni bir Nginx yapılandırma dosyası açın. Bizimkine odoo.conf adını vereceğiz, ancak siz başka bir ad da kullanabilirsiniz:
sudo nano /etc/nginx/sites-available/odoo.confAşağıdakileri yeni yapılandırma dosyasına yapıştırın ve your_domain_here ifadesini Odoo sunucunuzu işaret edecek şekilde yapılandırdığınız alan adıyla değiştirdiğinizden emin olun. Bu, örneğin odoo.example.com gibi bir şey olmalıdır:
server {
listen 80;
listen [::]:80;
server_name your_domain_here;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://localhost:8069;
}
}Bu yapılandırma şimdilik yalnızca HTTP tabanlıdır, çünkü bir sonraki adımda Certbot'un TLS'yi yapılandırmasına izin vereceğiz. Yapılandırma dosyasının geri kalanı kayıt defteri konumlarını ayarlar ve ardından tüm trafiği ve bazı önemli proxy başlıklarını, önceki adımda başlattığımız Odoo konteyneri olan http://localhost:8069 adresine gönderir.
Dosyayı kaydedip kapatın, ardından yapılandırmayı /etc/nginx/sites-enabled/ dizinine bağlayarak etkinleştirin:
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/Yapılandırma dosyasının sözdizimini kontrol etmek için nginx -t komutunu kullanın:
sudo nginx -tOutput
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulVe son olarak nginx servisini yeni yapılandırmayla yeniden yükleyin:
sudo systemctl reload nginx.serviceOdoo siteniz artık düz HTTP üzerinden erişilebilir olmalı. http://your_domain_here adresini yükleyin (bir güvenlik uyarısını tıklamanız gerekebilir) ve şöyle görünecektir:
Siteniz artık HTTP üzerinden kurulduğuna göre, bağlantıyı Certbot ve Let's Encrypt sertifikalarıyla güvenli hale getirmenin zamanı geldi. Bunu, Odoo web tabanlı kurulum sürecine geçmeden önce yapmanız gerekiyor.
Adım 4 – Certbot'u Kurun ve TLS Sertifikalarını Ayarlayın
Certbot ve ücretsiz Let's Encrypt lisansı sayesinde Odoo uygulamanıza TLS şifrelemesi eklemek yalnızca iki komut alır.
Öncelikle Certbot'u ve Nginx eklentisini kurun:
sudo apt install certbot python3-certbot-nginxArdından, certbot'u –nginx modunda çalıştırın ve Nginx server_name yapılandırma yönergesinde kullandığınız etki alanını belirtin:
sudo certbot --nginx -d your_domain_hereLet's Encrypt hizmet şartlarını kabul etmeniz ve bir e-posta adresi girmeniz istenecektir. Ardından, tüm HTTP trafiğini HTTPS'ye yönlendirmek isteyip istemediğiniz sorulacaktır. Bu size kalmış, ancak genellikle tavsiye edilir ve güvenlidir.
Daha sonra Let's Encrypt isteğinizi onaylayacak ve Certbot sertifikanızı indirecektir:
Output
Congratulations! You have successfully enabled https://odoo.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/odoo.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/odoo.example.com/privkey.pem
Your cert will expire on 2022-05-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-leCertbot, Nginx'i yeni yapılandırma ve sertifikalarla otomatik olarak yükleyecektir. Yönlendirme seçeneğini seçerseniz, sitenizi tarayıcınızda yeniden yükleyin ve otomatik olarak HTTPS'ye geçecektir.
Siteniz artık güvenlidir ve web tabanlı kurulum sürecine devam edebilirsiniz.
Adım 5 – Odoo'yu kurma
Web tarayıcınıza geri dönün ve sayfayı yeniden yükleyin. Artık Odoo veritabanı yapılandırma sayfasını güvenli bir https:// bağlantısı üzerinden açabilmeniz gerekir. Kurulum işlemini tamamlamak için kullanıcı adınızı ve parolanızı güvenle girebilirsiniz.
Bu sayfada dolduracağınız bilgiler Odoo uygulamasının PostgreSQL veritabanını nasıl oluşturacağını ve varsayılan yönetici kullanıcısıyla ilgili ayrıntıları anlatır.
Aşağıdaki alanları doldurun:
- Veritabanı adı: odoo
- E-posta: E-posta adresiniz
- Şifre: Yönetici oturumunuz için güçlü ve benzersiz bir şifre.
- Demo verileri: Eğer Odoo'yu ilk defa kuruyorsanız, bu seçeneğin işaretli olduğundan emin olun.
Kalan alanlar için varsayılan değerler uygundur. Seçtiğiniz e-posta ve şifre değerlerini kaydettiğinizden emin olun, çünkü bunları gelecekte Odoo'ya giriş yapmak için kullanacaksınız.
Şimdi sayfanın sol alt kısmındaki Veritabanı Oluştur düğmesine tıklayın. Odoo'nun veritabanı tablolarını oluşturması bir iki dakika sürebilir. İşlem tamamlandığında, Odoo Uygulamaları yönetim sayfasına yönlendirileceksiniz.
Buradan, ERP ihtiyaçlarınız için hangi Odoo modüllerini kurup kullanacağınızı seçebilirsiniz. Bir uygulamayı test etmek istiyorsanız, Satış kutucuğundaki Yükle düğmesine tıklayın. Odoo modülü kuracak ve ardından sizi Tartışma uygulamasının kişisel sayfasına yönlendirecektir.
Sayfanın sol üst kısmındaki bölünmüş kare simgesine tıklayın ve ardından açılır seçenekler listesinde Satışlar bağlantısını seçin.
Verileri, fiyatlandırmayı, siparişleri ve deneyebileceğiniz satış örnekleri listesini özelleştirmeniz için size yol gösterecek bir sayfaya yönlendirileceksiniz.
Sonuç
Bu eğitimde, Odoo ERP uygulamasını ve PostgreSQL veritabanını Docker Compose kullanarak dağıttınız, ardından bir Nginx ters proxy'si kurdunuz ve Let's Encrypt TLS sertifikalarını kullanarak güvenliğini sağladınız.












