跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 安装指南
  4. Google Cloud CentOS7 Odoo16e详细安装指南

Google Cloud CentOS7 Odoo16e详细安装指南

已定时 已固定 已锁定 已移动 Odoo 安装指南
1 帖子 1 发布者 2.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • M 离线
    M 离线
    mugua
    写于 最后由 digitalsatori 编辑
    #1

    第一步 更新CentOS7和添加Epel源, (选装)LNMP。

    yum update -y 
    yum install epel-release
    

    // 安装LNMP,安装Nginx,并适用于其他网站运行。

    wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 3 --php_option 12 --phpcache_option 1 --php_extensions imagick,fileinfo,redis,swoole --phpmyadmin  --db_option 5 --dbinstallmethod 1 --dbrootpwd oneinstack --pureftpd  --redis  --reboot
    

    第二步 安装Python 3.9.16

    2.1 下载Python 3.9.16压缩包

    yum -y install wget
    cd ~
    wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz
    

    2.2 安装Python依赖包

    yum -y groupinstall "development tools"
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel openldap-devel postgresql-devel*
    yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel make
    

    2.3 安装或升级openssl至最新版1.1.1s。(我安装了oneinstack的LNMP,已经安装了openssl1.0.2k)

    cd ~
    wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz
    tar -zxf openssl-1.1.1s.tar.gz
    cd openssl-1.1.1s
    ./config --prefix=/usr/local/openssl
    make && make install
    

    //备份当前openssl软连接
    //若之前没安装过openssl,则场景不存在

    mv /usr/bin/openssl /usr/bin/openssl.bak
    mv /usr/include/openssl /usr/include/openssl.bak
    

    //配置软连接到新版本

    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    

    //更新动态链接库数据并重新加载

    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    ldconfig -v
    

    //查看是否升级成功

    openssl version
    

    2.4.1 若系统自带有Python3.6.8则需要卸载。

    //查看是否已安装自带的python3

    cd ~
    whereis python3
    

    或者

    python3 -V
    

    //若无,则忽略后面的命令,直接跳到2.4.2
    //卸载python3

    rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps
    

    //删除所有残余文件

    whereis python3|xargs rm -frv
    

    //查看现有安装的python,验证是否删除干净

    whereis python3
    python3 -V
    pip3 -V
    

    通过以上三个命令查看,若均提示找不到,则表示卸载干净。

    2.4.2 安装Python3.9.16

    mkdir /usr/local/python3
    tar -zxf Python-3.9.16.tgz 
    cd Python-3.9.16
    ./configure  prefix=/usr/local/python3 --enable-optimizations --with-openssl=/usr/local/openssl --with-ssl-default-suites=openssl
    make && make install
    

    //若提示Could not import runpy module,可以升级gcc也可以拿掉上面第四行的--enable-optimizations,二选一。
    //若没提示错误,直接跳过此步。
    // 升级gcc到8.x 如下,然后再重新安装一遍Python3(先去缓存: make distclean)。

    yum install -y centos-release-scl
    yum install -y devtoolset-8-toolchain
    scl enable devtoolset-8 bash
    

    //建立软链接

    ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    

    //查看是否安装成功

    python3 -V
    pip3 -V
    

    // 升级pip3和组件

    pip3 install --upgrade pip
    pip3 install --upgrade setuptools
    

    基础环境:Nginx可以单独安装,方法自行百度,我因为还涉及到其他程序,因此用了oneinstack的LNMP一键安装包。

    第三步 安装odoo所需的其他组件

    3.1 安装Sass
    //安装依赖库,若已安装无需执行。

    pip3 install libsass
    yum install sassc
    

    3.2安装wkhtmltopdf
    //安装依赖库,若已安装无需执行(下载对应的操作系统,我的centos 7,对应的是centos7.x86.rpm)。

    cd ~
    wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
    yum install libXrender xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 libXext libjpeg libpng
    rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
    

    3.3 安装中文字体

    yum install wqy*
    

    第四步 安装Postgresql数据库

    安装Postgresql数据库(Odoo16一定要PGSQL10以上,否则安装数据库的时候会出错,本文演示安装PGSQL15)

    sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo yum install postgresql15-server
    sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
    sudo systemctl enable postgresql-15
    sudo systemctl start postgresql-15
    su - postgres -c "createuser -s odoo"
    

    //查看postgresql启动状态

    systemctl status postgresql-15
    

    第五步:安装Odoo

    5.1 创建odoo用户及odoo用户组

    groupadd odoo
    

    //文件夹/data/wwwroot若没有则新增即可。

    adduser -g odoo -d /data/wwwroot/www.domain.com -m odoo
    passwd odoo
    

    //后面安装和登陆均会用到,请牢记!

    *** 
    ***
    

    5.2 授予odoo sudo权限

    vi /etc/sudoers
    

    修改文件参考如下:

    ## Allow root to run any commands anywhere 
    root	ALL=(ALL) 	ALL
    

    //增加如下部分

    odoo	ALL=(ALL) 	ALL
    

    :wq保存退出,odoo用户就拥有了sudo权限。

    reboot
    

    5.3 用odoo用户登陆SSH和WinSCP(SFTP)
    若还是没权限的话,按下面的修改(一般是设置错误文件夹权限的时候才改):
    修改 /etc/passwd最后一行

    odoo:x:1005:1005::/data/wwwroot/ www.domain.com:/bin/bash
    

    其中1005为新增odoo群组和账号自动生成的,每台服务器都可能不一样。
    然后给odoo文件夹权限:

    sudo chown -R odoo:odoo /data/wwwroot/www.domain.com
    

    5.4 下载最新的程序包(odoo账户默认登陆SSH在odoo账户根目录下面)

    wget http://nightly.odoo.com/16.0/nightly/src/odoo_16.0.latest.tar.gz
    tar –zxvf odoo_16.0.latest.tar.gz
    

    //企业版的通过Github直接Copy或官方下载压缩包。

    yum -y install git
    git clone https://$github_user:[email protected]/odoo/enterprise.git ./
    

    5.5将odoo-16.post2023****(以你解压出来的文件名为准)文件夹的内容全部(含隐藏文件)copy到www.domain.com里面:

    cp -R /data/wwwroot/www.domain.com/odoo-16.0.post2023****/. /data/wwwroot/www.domain.com
    

    删除原解压文件:

    rm -rf /data/wwwroot/www.domain.com/odoo-16.post2023****
    

    5.6 用SSH安装 Odoo所需的Python3组件.

    cd /data/wwwroot/www.domain.com
    

    odoo账号登陆时默认就为此文件夹。
    //根据踩坑经验,建议先执行如下命令:

    pip3 install psycopg2-binary
    pip3 install sklearn
    

    //再安装依赖组件

    sudo pip3 install -r requirements.txt
    

    可能遇到如下报错情况:

    若报错:Error: pg_config executable not found.
    pg_config is required to build psycopg2 from source.
    执行:

    yum install postgresql-devel*
    pip3 install psycopg2-binary
    

    若报错:Python3: ImportError: No module named '_ctypes' when using Value from module multiprocessing
    执行:

    yum -y install libffi-devel
    

    // 并需要再重新编译一遍python3.9

    cd /root/Python-3.9.16
    ./configure prefix=/usr/local/python3
    make clean && make && make install
    

    //回到odoo安装页面安装 sklearn

    cd /data/wwwroot/www.domain.com
    pip3 install sklearn
    

    若报错:ERROR: Could not build wheels for python-ldap, which is required to install pyproject.toml-based projects
    执行:

    yum -y install openldap-devel
    

    其他报错情况,大同小异,都是缺少组件,自行百度或Google,一般都能解决问题。

    5.7 进入odoo源码目录(/home/wwwroot/www.domain.com)运行odoo-bin (没有可以自行创建, 但是保存格式一定要是ANSI格式,否则后面无法运行。并给与755权限, 内容可参考github里的对应文件)并生成配置文件。内容如下:

    #!/usr/bin/env python3
    
    # set server timezone in UTC before time module imported
    __import__('os').environ['TZ'] = 'UTC'
    import odoo
    
    if __name__ == "__main__":
        odoo.cli.main()
    

    // 给755权限

    chmod 755 ./odoo-bin
    

    //运行odoo

    ./odoo-bin -s
    

    5.8 设置文件夹权限

    sudo mkdir /etc/odoo
    sudo cp /data/wwwroot/www.domain.com/.odoorc /etc/odoo/odoo.conf
    sudo chown -R odoo:odoo /etc/odoo
    sudo mkdir /var/log/odoo
    sudo chown -R odoo:odoo /var/log/odoo
    sudo chown -R odoo:odoo /data/wwwroot/www.domain.com
    

    5.9 编辑配置文件

    sudo vi /etc/odoo/odoo.conf
    

    下面是2个建议增加的值 :

    [options]
    …
    logfile =
    

    改为:

    [options]
    …
    logfile = /var/log/odoo/odoo.log
    logrotate = True
    

    //若想阻止通过IP访问,则可以做如下修改:
    修改

    proxy_mode = False
    

    为

    proxy_mode = True
    

    在最后面增加:

    xmlrpc_interface = 127.0.0.1
    netrpc_interface = 127.0.0.1
    

    //若想独立使用自定义插件的话,新建文件夹custom-addons,并修改odoo.conf的插件路径如下:

    addons_path = /data/wwwroot/www.domain.com/odoo/addons,/data/wwwroot/www.domain.com/odoo/custom-addons
    

    5.10 切换回root权限,创建开机启动odoo

    sudo vi /usr/lib/systemd/system/odoo.service
    

    内容如下:

    [Unit]
    Description=Odoo
    After=postgresql-15.service
    [Service]
    Type=simple
    User=odoo
    Group=odoo
    ExecStart=/data/wwwroot/www.domain.com/odoo-bin -c /etc/odoo/odoo.conf
    [Install]
    WantedBy=multi-user.target
    

    或者直接到/usr/lib/systemd/system/复制另一个.service后缀的文件改为odoo.service,把内容填上,保存即可。

    //注册新的服务:

    sudo systemctl enable odoo.service
    

    //启这个新服务:

    sudo systemctl start odoo
    

    //检查它的状态:

    sudo systemctl status odoo
    

    //重启这个服务:

    sudo systemctl restart odoo
    

    若显示如下内容则表示运行成功了:

    ● odoo.service - Odoo
       Loaded: loaded (/lib/systemd/system/odoo.service; enabled; vendor preset: enabled)
       Active: active (running) since Sun 2023-02-06 10:46:54 CST; 6s ago
     Main PID: 800 (python3)
       CGroup: /system.slice/odoo.service
               └─800 python3 /data/wwwroot/www.domain.com/odoo-bin -c /etc/odoo/odoo.conf
    

    //如果您希望停止它,使用下面的命令:

    sudo systemctl stop odoo
    

    现在可以确认我们的Odoo实例启动了,并能响应请求。
    如果Odoo正常运行,我们可以在日志文件中获得信息。我们可以检查Odoo是否响应HTTP请求:

    curl http://localhost:8069
    

    //要检查日志文件,我们可以使用:(Q键退出)

    sudo less /var/log/odoo/odoo.log
    

    //您还可以使用tail -f: (Ctrl+C退出)

    sudo tail -f /var/log/odoo/odoo.log
    

    5.11 登录IP:8069, 按照提示安装数据库即可正常运行odoo。注意,若您的8069端口未开启的,还得到GCP的防火墙规则里面添加8069和8072为开放端口,否则无法访问。

    5.12 安装好niginx并设置好vhost(建议用oneinstack的openresty)后, 将/usr/local/openresty/nginx/conf/vhost/www.domain.com.conf备份,然后用下面的代码更换后重启服务器即可用域名访问(建议https)。

    第六步:安装主题Prime

    6.1 输入 http://ip:8069或者https:www.domain.com,跳出如下界面:

    6ebc18f3-8ac2-404b-bab6-a1412bf50a2b-image.png

    填入各项字段内容, Master Password会自动生成一个,您也可以改成您自己的密码,请牢记,后面数据库管理需要用到。
    输入完所有内容后,点Create database,稍等片刻边出现如下界面:

    ca434ff8-5a95-463f-bcf8-d9a2a4ae4338-image.png
    然后输入您创建的账号( email)和密码,进入后台,如图:
    be6bce58-4127-48fa-ab9d-50076967d9de-image.png

    点击“应用”进入应用安装:

    3851b2ee-4893-47c8-bfb6-5111c51d4b74-image.png

    6.2 安装Prime主题

    返回到“应用”界面,点击“网站”的“激活”按钮,稍等片刻便出现如下界面:

    1a21d311-8464-419b-9bca-3403f0eab3af-image.png

    点击“跳过并从头开始”,出现如下界面:

    fd9ea914-138c-4dc9-bc32-76d0aceabcaa-image.png

    选择“使用此主题”,出现如下界面,此时需要稍等几分钟。

    938b9c35-ec17-491e-b735-7e545f2bd4e6-image.png

    一旦安装完毕后,将会出现如下界面:

    3c078609-ea5b-44ac-8102-b8c42c0fe087-image.png

    点击“保存”即可,至此,主题安装完毕,若想切换主题,请点击“主题”二字,然后拉到下面可以看到“网站设置”下面有“切换主题”按钮,这样就可以切换主题了。

    205ec75b-c5a8-4fcf-b012-6e9a4040a85f-image.png

    最后,由于odoo具有拖拽式编辑网站的功能,Prime拥有非常完善的各种模块,因此构建一个漂亮的网站,只需要几分钟。

    下面简单演示一下:
    比如首页,没使用Prime主题是这样的界面:

    715e5d95-43fb-4c99-a694-85e914c189ac-image.png

    选择“编辑”,下拉到Cover,有5种模式,随便选择一种,拖拉到目标区域:

    36fbd55d-3381-40f4-b74c-7f8fa999436c-image.png

    然后选择保存,则出现如下漂亮的界面,其他模块也是类似的,更多的页面操作,请登录Odoo官网或查看Prime主题使用指南:

    03ce52ea-d895-4e48-825d-fe00e6c18c56-image.png

    是不是很Beautiful?是不是很Amazing? Enjoy yourself…

    eea381b6-6381-4b59-b020-1a1b41537c2e-image.png

    =====================
    至此,odoo已安装完毕,以下内容为参考内容。

    odoo.conf代码如下:

    [options]
    addons_path = /data/wwwroot/www.domain.com/odoo/addons,/data/wwwroot/www.domain.com/odoo/custom-addons
    admin_passwd = admin
    csv_internal_sep = ,
    data_dir = /data/wwwroot/www.domain.com/.local/share/Odoo
    db_host = False
    db_maxconn = 64
    db_name = False
    db_password = False
    db_port = False
    db_sslmode = prefer
    db_template = template0
    db_user = False
    dbfilter = 
    demo = {}
    email_from = False
    from_filter = False
    geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb
    gevent_port = 8072
    http_enable = True
    http_interface = 
    http_port = 8069
    import_partial = 
    limit_memory_hard = 2684354560
    limit_memory_soft = 2147483648
    limit_request = 65536
    limit_time_cpu = 60
    limit_time_real = 120
    limit_time_real_cron = -1
    list_db = True
    log_db = False
    log_db_level = warning
    log_handler = :INFO
    log_level = info
    logfile = /var/log/odoo/odoo.log
    logrotate = True
    longpolling_port = 8072
    max_cron_threads = 2
    osv_memory_age_limit = False
    osv_memory_count_limit = 0
    pg_path = 
    pidfile = 
    proxy_mode = True
    reportgz = False
    screencasts = 
    screenshots = /tmp/odoo_tests
    server_wide_modules = base,web
    smtp_password = False
    smtp_port = 25
    smtp_server = localhost
    smtp_ssl = False
    smtp_ssl_certificate_filename = False
    smtp_ssl_private_key_filename = False
    smtp_user = False
    syslog = False
    test_enable = False
    test_file = 
    test_tags = None
    transient_age_limit = 1.0
    translate_modules = ['all']
    unaccent = False
    upgrade_path = 
    websocket_keep_alive_timeout = 3600
    websocket_rate_limit_burst = 10
    websocket_rate_limit_delay = 0.2
    without_demo = False
    workers = 0
    x_sendfile = False
    

    Nginx代码如下:

    upstream odoo {
     server 127.0.0.1:8069;
    }
    
    upstream odoochat {
     server 127.0.0.1:8072;
    }
    
    server {
      listen 80;
      listen [::]:80;
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
      ssl_certificate /usr/local/openresty/nginx/conf/ssl/www.domain.com.crt;
      ssl_certificate_key /usr/local/openresty/nginx/conf/ssl/www.domain.com.key;
      ssl_protocols TLSv1.2 TLSv1.3;
      ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
      ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;
      ssl_conf_command Ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256;
      ssl_conf_command Options PrioritizeChaCha;
      ssl_prefer_server_ciphers on;
      ssl_session_timeout 10m;
      ssl_session_cache shared:SSL:10m;
      ssl_buffer_size 2k;
      add_header Strict-Transport-Security max-age=15768000;
      ssl_stapling on;
      ssl_stapling_verify on;
      server_name www.domain.com domain.com;
      access_log /data/wwwlogs/www.domain.com_nginx.log combined;
      index index.html index.htm index.php;
      root /data/wwwroot/www.domain.com;
      if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
      if ($host != www.domain.com) {  return 301 $scheme://www.domain.com$request_uri;  }
      include /usr/local/openresty/nginx/conf/rewrite/none.conf;
      #error_page 404 /404.html;
      #error_page 502 /502.html;
      
        proxy_read_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_send_timeout 900s;
    
        # Proxy headers
        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;
    
        # Handle longpoll requests
        location /longpolling {
            proxy_pass http://odoochat;
        }
    
        # Handle / requests
        location / {
           proxy_redirect off;
           proxy_pass http://odoo;
        }
    
        # Cache static files
        location ~* /web/static/ {
            proxy_cache_valid 200 90m;
            proxy_buffering on;
            expires 864000;
            proxy_pass http://odoo;
        }
    
        # Gzip
        gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
        gzip on;
    }
    

    Postgresql-15彻底删除方法:
    ① 关闭服务

    sudo systemctl stop postgresql-15
    

    ② yum 删除软件包

    sudo yum remove postgresql*
    

    ③ 删除相关目录文件:

    sudo rm -rf /var/lib/pgsql
    sudo rm -rf /usr/pgsql*
    

    ④ 删除pg相关用户组/用户

    ps -ef|grep postgres|awk ‘{print $2}’|xargs kill -9 {}
    sudo userdel -r postgres
    sudo groupdel postgres
    

    全文完!

    1 条回复 最后回复
    0

    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组