如何在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

使用初始管理员帐户admin@dotcms.com和 登录admin。登录后立即更改默认密码。

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

留下評論

在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 機器變磚。閱讀這篇文章以了解更多信息