如何在CentOS 7上安装dotCMS

dotCMS是用Java编写的开源企业级内容管理系统。它几乎包含为您的企业创建网站所需的所有功能。它提供了RESTful API,可与其他服务(例如CRM,移动应用程序等)集成。它使用Elasticsearch进行内容的实时索引编制,并使用Redis实施多层缓存。

本文是针对dotCMS 4.2.2编写的,但是提供的说明也可能适用于较新的版本。

先决条件

  • Vultr CentOS 7服务器实例。
  • 一个sudo的用户
  • 指向服务器的域名。

在本教程中,我们将使用192.168.0.1公共IP地址和cms.example.com指向Vultr实例的域名。请确保将所有示例域名和公共IP地址替换为实际的域名和公共IP地址。

使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装Java。

安装Java

OpenJDK可以轻松安装,因为默认的YUM存储库中提供了该软件包。

sudo yum -y install java-1.8.0-openjdk-devel

如果正确安装了Java,则可以验证其版本。

java -version

您将获得类似的输出。

[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

在继续进行之前,我们需要设置JAVA_HOMEJRE_HOME环境变量。查找系统上Java可执行文件的绝对路径。

readlink -f $(which java)

您将看到类似的输出。

[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java

现在,根据Java目录的路径设置JAVA_HOMEJRE_HOME环境变量。

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre" >> ~/.bash_profile

执行bash_profile文件。

source ~/.bash_profile

现在,您可以运行echo $JAVA_HOME命令以确保设置了环境变量。

[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64

安装PostgreSQL

默认情况下,dotCMS配置为使用H2数据库引擎。H2数据库引擎是基于平面文件的数据库引擎。不建议在生产中使用。在本教程中,我们将使用PostgreSQL服务器存储dotCMS数据库。

PostgreSQL是一个对象关系数据库系统,以其稳定性和速度而闻名。将最新版本PostgreSQL的存储库添加到系统中。

sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

安装PostgreSQL数据库服务器。

sudo yum -y install postgresql10-server postgresql10-contrib postgresql10 

初始化数据库。

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

启动PostgreSQL服务器,并使其在启动时自动启动。

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

更改默认PostgreSQL用户的密码。

sudo passwd postgres

以默认的PostgreSQL用户身份登录。

sudo su - postgres

为dotCMS创建一个新的PostgreSQL用户。

createuser dotcms 

PostgreSQL提供了psql在数据库服务器上运行查询的外壳。切换到PostgreSQL shell。

psql

为dotCMS数据库的新创建的用户设置密码。

ALTER USER dotcms WITH ENCRYPTED password 'DBPassword';

DBPassword安全密码替换数据库用户密码。为dotCMS安装创建一个新数据库。

CREATE DATABASE dotcms OWNER dotcms;

psql外壳退出。

\q

切换到sudo用户。

exit

安装dotCMS

下载dotCMS存档。

wget https://dotcms.com/physical_downloads/release_builds/dotcms_4.2.2.tar.gz

您始终可以在dotCMS下载页面上找到该应用程序最新版本的链接。

创建一个新目录来存储dotCMS文件并将其解压缩到其中。

sudo mkdir /opt/dotcms
sudo tar -zxf dotcms*.tar.gz -C /opt/dotcms

打开数据库配置文件。

cd /opt/dotcms
sudo nano dotserver/tomcat-*/webapps/ROOT/META-INF/context.xml

找到H2块。

<!-- H2 -->
<Resource name="jdbc/dotCMSPool" auth="Container"
 ...

 validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" />

H2通过替换-->从该节开始到该节末尾的注释定界符,注释掉整个节。它应该如下所示。

<!-- H2
<Resource name="jdbc/dotCMSPool" auth="Container"
 ...

 validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" />
-->

通过-->从部分末尾删除注释定界符并将其放在顶部包装中,取消对PostgreSQL部分的注释POSTGRESQL。此外,发现username=password=与您的PostgreSQL数据库用户的用户名和密码替换现有的值。如果您使用的数据库名称不是dotcms,则需要在中更改数据库名称url=。配置完成后,文件中的PostgreSQL块应如下所示。

<!-- POSTGRESQL -->
<Resource name="jdbc/dotCMSPool" auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      driverClassName="org.postgresql.Driver"
      url="jdbc:postgresql://localhost/dotcms"
      username="dotcms" password="DBPassword" maxTotal="60" maxIdle="10" maxWaitMillis="60000"
      removeAbandonedOnBorrow="true" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="60" logAbandoned="true"
      timeBetweenEvictionRunsMillis="30000" validationQuery="SELECT 1" testOnBorrow="true" testWhileIdle="true" />

提供所有可执行文件的执行权限。

sudo chmod 755 ./bin/*.sh
sudo chmod 755 dotserver/tomcat-*/bin/*.sh

现在已在服务器上安装dotCMS。要立即运行该应用程序,请执行以下操作。

cd /opt/dotcms
sudo bin/startup.sh

服务器成功启动后,您将看到以下输出。

[user@vultr dotcms]$ sudo bin/startup.sh
Using DOTCMS_HOME = /opt/dotcms/dotserver/tomcat-8.0.18/webapps/ROOT
Using DOTSERVER = dotcms
Using CATALINA_PID = /tmp/dotcms.pid
Using JAVA_OPTS =  -Djava.awt.headless=true -Xverify:none -Dfile.encoding=UTF8 -server -XX:+DisableExplicitGC -XX:MaxMetaspaceSize=512m -Xmx1G -XX:+UseG1GC -javaagent:/opt/dotcms/dotserver/tomcat-8.0.18/webapps/ROOT/WEB-INF/lib/byte-buddy-agent-1.6.12.jar -Ddotserver=dotcms
Using CATALINA_BASE:   /opt/dotcms/dotserver/tomcat-8.0.18
Using CATALINA_HOME:   /opt/dotcms/dotserver/tomcat-8.0.18
Using CATALINA_TMPDIR: /opt/dotcms/dotserver/tomcat-8.0.18/temp
Using JRE_HOME:        /
Using CLASSPATH:       /opt/dotcms/dotserver/tomcat-8.0.18/bin/bootstrap.jar:/opt/dotcms/dotserver/tomcat-8.0.18/bin/tomcat-juli.jar
Using CATALINA_PID:    /tmp/dotcms.pid
Tomcat started.

上面的命令将启动Tomcat Web服务器以在port上为应用程序提供服务8080。要检查dotCMS网站是否正常运行,请允许所需的端口8080通过系统防火墙。

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

打开您喜欢的浏览器并浏览到http://192.168.0.1:8080。您应该看到该应用程序正在运行一个演示网站。如果看不到您的网站,请等待,因为dotCMS服务器的首次启动需要花费几分钟,因为它将数据写入PostgreSQL数据库并建立缓存。您还可以检查启动日志。

tail -n 1000 -f /opt/dotcms/dotserver/tomcat-*/webapps/ROOT/dotsecure/logs/dotcms.log

配置系统服务

可以使用安装程序包中提供的启动脚本直接启动dotCMS服务器。为了方便起见,您应该为dotCMS服务器设置一个Systemd单位文件。这将确保在系统重新启动和出现故障时自动启动应用程序服务器。

使用关闭脚本停止正在运行的dotCMS服务器。

sudo bin/shutdown.sh

出于安全原因,创建一个非特权用户来运行dotCMS服务器。

sudo adduser -d /opt/dotcms -s /sbin/nologin dotcms

向dotCMS用户提供文件的所有权。

sudo chown -R dotcms:dotcms /opt/dotcms

创建一个新的Systemd服务。

sudo nano /etc/systemd/system/dotcms.service

填充文件。

[Unit]
Description=dotCMS service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/dotcms/bin/startup.sh
ExecStop=/opt/dotcms/bin/shutdown.sh
User=dotcms
Group=dotcms
Restart=always

[Install]
WantedBy=multi-user.target

启动应用程序,并使其能够在启动时自动启动。

sudo systemctl start dotcms
sudo systemctl enable dotcms

确保服务正在运行。

sudo systemctl status dotcms

配置反向代理

默认情况下,dotCMS服务器在port上侦听8080。我们将配置Nginx作为反向代理,这样应用程序可以通过标准的访问HTTPHTTPS端口。我们还将Nginx配置为使用“让我们加密免费SSL”生成的SSL。

安装Nginx Web服务器。

sudo yum -y install nginx

启动Web服务器,并使它能够在引导时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

安装Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo yum -y install certbot

在可以请求证书之前,您将需要允许端口80和/ 443或标准HTTPHTTPS服务通过防火墙。另外,8080从不再需要的防火墙例外列表中删除端口。

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

注意: 要从Let's Encrypt CA获得证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。

生成SSL证书。

sudo certbot certonly --webroot -w /usr/share/nginx/html -d cms.example.com

生成的证书可能存储在中/etc/letsencrypt/live/cms.example.com/。让我们加密证书的有效期限为90天,因此建议使用Cron作业设置证书的自动续订。

打开cron作业文件。

sudo crontab -e

在文件末尾添加以下行。

30 5 * * * /usr/bin/certbot renew --quiet

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新。

为dotCMS站点创建一个新的服务器阻止文件。

sudo nano /etc/nginx/conf.d/cms.example.com.conf

填充文件。

server {
    listen 80;
    server_name cms.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name cms.example.com;

    ssl_certificate           /etc/letsencrypt/live/cms.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/cms.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/dotcms.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

      proxy_redirect      http://localhost:8080 https://cms.example.com;
    }
  }

重新启动Nginx Web服务器,以使更改生效。

sudo systemctl restart nginx

现在,dotCMS应用程序已安装在服务器上以用于生产。访问以下地址上的管理仪表板。

https://cms.example.com/dotAdmin

使用初始管理员帐户[email protected]和 登录admin。登录后立即更改默认密码。

恭喜,您的服务器上现已安装了dotCMS内容管理系统。您可以修改演示站点,也可以从头开始构建站点。



Leave a Comment

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在Ubuntu 18.04 LTS上安装WonderCMS

如何在Ubuntu 18.04 LTS上安装WonderCMS

使用其他系统?WonderCMS是用PHP编写的开源,快速,小型平面文件CMS。WonderCMS源代码托管在Github上。本指南将

如何在FreeBSD 11 FAMP VPS上安装Omeka Classic 2.4 CMS

如何在FreeBSD 11 FAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

在Ubuntu 16.04上使用Nginx反向代理设置Keystone.js服务器

在Ubuntu 16.04上使用Nginx反向代理设置Keystone.js服务器

在本教程中,我们将使用反向代理来设置Web服务器。我们将使用的CMS是Keystone.js,这是众所周知的Web应用程序框架

如何在Fedora 28上安装Bludit CMS

如何在Fedora 28上安装Bludit CMS

使用其他系统?Bludit是一个用PHP编写的简单,快速且灵活的博客CMS。Bludit使用JSON格式的文件来存储内容,因此您不必

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在Fedora 26 LAMP VPS上安装Couch CMS 2.0

如何在Fedora 26 LAMP VPS上安装Couch CMS 2.0

使用其他系统?Couch CMS是一个简单,灵活,免费和开源的内容管理系统(CMS),可让Web设计人员进行设计

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

如何在FreeBSD 11 FAMP VPS上安装Couch CMS 2.0

如何在FreeBSD 11 FAMP VPS上安装Couch CMS 2.0

使用其他系统?Couch CMS是一个简单,灵活,免费和开源的内容管理系统(CMS),可让Web设计人员进行设计

如何在FreeBSD 11 FAMP VPS上安装ProcessWire CMS 3.0

如何在FreeBSD 11 FAMP VPS上安装ProcessWire CMS 3.0

使用其他系统?ProcessWire CMS 3.0是一个简单,灵活,功能强大,免费和开源的内容管理系统(CMS)。ProcessWire CMS 3。

如何在Fedora 28上安装PyroCMS

如何在Fedora 28上安装PyroCMS

使用其他系统?PyroCMS是用PHP编写的开源CMS。PyroCMS源代码托管在GitHub上。在本指南中,请仔细阅读整个条目

如何在Fedora 26 LAMP VPS上安装BlogoText CMS

如何在Fedora 26 LAMP VPS上安装BlogoText CMS

使用其他系统?BlogoText CMS是一个简单,轻便,免费和开源的内容管理系统(CMS)和极简博客引擎

如何在Debian 9 LAMP VPS上安装Pagekit 1.0 CMS

如何在Debian 9 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在FreeBSD 11 FAMP VPS上安装Redaxscript 3.2 CMS

如何在FreeBSD 11 FAMP VPS上安装Redaxscript 3.2 CMS

使用其他系统?Redaxscript 3.2 CMS是一款现代,超轻量级,免费和开源的内容管理系统(CMS),具有火箭fas

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息