Google Cloud CentOS7 Odoo16e详细安装指南
- 
第一步 更新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.tgz2.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 make2.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 version2.4.1 若系统自带有Python3.6.8则需要卸载。 //查看是否已安装自带的python3 cd ~ whereis python3或者 python3 -V//若无,则忽略后面的命令,直接跳到2.4.2 
 //卸载python3rpm -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 sassc3.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.rpm3.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权限。 reboot5.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.com5.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.comodoo账号登陆时默认就为此文件夹。 
 //根据踩坑经验,建议先执行如下命令: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 -s5.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.com5.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-addons5.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.log5.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,跳出如下界面:  填入各项字段内容, Master Password会自动生成一个,您也可以改成您自己的密码,请牢记,后面数据库管理需要用到。 
 输入完所有内容后,点Create database,稍等片刻边出现如下界面: 
 然后输入您创建的账号( email)和密码,进入后台,如图:
  点击“应用”进入应用安装:  6.2 安装Prime主题 返回到“应用”界面,点击“网站”的“激活”按钮,稍等片刻便出现如下界面:  点击“跳过并从头开始”,出现如下界面:  选择“使用此主题”,出现如下界面,此时需要稍等几分钟。  一旦安装完毕后,将会出现如下界面:  点击“保存”即可,至此,主题安装完毕,若想切换主题,请点击“主题”二字,然后拉到下面可以看到“网站设置”下面有“切换主题”按钮,这样就可以切换主题了。  最后,由于odoo具有拖拽式编辑网站的功能,Prime拥有非常完善的各种模块,因此构建一个漂亮的网站,只需要几分钟。 下面简单演示一下: 
 比如首页,没使用Prime主题是这样的界面: 选择“编辑”,下拉到Cover,有5种模式,随便选择一种,拖拉到目标区域:  然后选择保存,则出现如下漂亮的界面,其他模块也是类似的,更多的页面操作,请登录Odoo官网或查看Prime主题使用指南:  是不是很Beautiful?是不是很Amazing? Enjoy yourself…  ===================== 
 至此,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 = FalseNginx代码如下: 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全文完!