如何在Ubuntu 16 04上安装dotCMS
Tianye
・16 分钟阅读
使用不同的系统?
DOTCMS是一个开源的,用Java编写的企业级内容管理系统,它提供了一个RESTful API,可以与其他服务集成,如CRM,移动应用,它使用Elasticsearch来实时索引内容和Redis实现多层缓存。
前提条件
- Ubuntu 16.04服务器实例,
- 一个sudo用户 ,
- 指向服务器的域名,
对于本教程,我们将使用192.168.0.1
作为公共IP地址和cms.example.com
,作为该实例指向的域名,请确保将例子域名和公用IP地址全部替换为实际的。
使用向导更新基本系统(如何Update Ubuntu 16.04) ,系统更新后,继续安装Java 。
安装Java
添加Oracle Java 8.的Ubuntu知识库
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
安装Java 。
sudo apt -y install oracle-java8-installer
你将能够验证Java版本。
java -version
你将看到以下输出。
user@vultr:~$ java -version
java version"1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
通过安装以下包设置Java的缺省路径。
sudo apt -y install oracle-java8-set-default
你可以验证JAVA_HOME
是否已设置。
echo $JAVA_HOME
你应该看到以下内容。
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
如果没有看到输出,则需要从当前shell注销,然后重新登录。
安装postgresql
默认情况下,dotCMS配置为使用h2数据库引擎,H2数据库引擎是基于平面文件引擎的,不建议在生产中使用,在本教程中,我们将使用PostgreSQL服务器来存储dotCMS数据库。
PostgreSQL是一个对象关系数据库系统,它的稳定性和速度是已知的,默认的Ubuntu存储库包含旧版本的PostgreSQL,所以,添加PostgreSQL存储库。
echo"deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
安装PostgreSQL数据库服务器。
sudo apt -y install postgresql
启动PostgreSQL服务器,并且使它在引导时自动启动。
sudo systemctl start postgresql
sudo systemctl enable postgresql
更改默认PostgreSQL用户的密码。
sudo passwd postgres
以PostgreSQL用户身份登录。
sudo su - postgres
为dotCMS创建一个新的PostgreSQL用户。
createuser dotcms
PostgreSQL提供psql
shell来在数据库服务器上运行查询,切换到PostgreSQL shell 。
psql
为新创建的dotCMS数据库用户设置密码。
ALTER USER dotcms WITH ENCRYPTED password 'DBPassword';
将数据库用户密码DBPassword
替换为安全密码。
为dotCMS安装创建一个新数据库。
CREATE DATABASE dotcms OWNER dotcms;
从psql
shell退出。
q
切换到sudo
用户。
exit
安装dotCMS
下载dotCMS存档。
wget https://dotcms.com/physical_downloads/release_builds/dotcms_4.3.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:/opt/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: /usr
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服务器,以便在端口8080上提供服务。
打开你喜爱的浏览器,并且浏览到http://192.168.0.1:8080
,你将看到应用程序正在运行一个演示网站,如果你没有看到你的网站,请等待,因为dotCMS服务器的首次启动需要5到10分钟,因为它将数据写入PostgreSQL数据库,并且构建缓存,你还可以检查启动日志。
tail -n 1000 -f /opt/dotcms/dotserver/tomcat-*/webapps/ROOT/dotsecure/logs/dotcms.log
配置Systemd
可以使用安装程序包中提供的启动脚本直接启动dotCMS服务器,为方便起见,你应该为dotCMS服务器设置Systemd单元文件,这将确保在系统重启和失败时自动启动应用服务器。
使用关机脚本停止正在运行的dotCMS服务器。
sudo bin/shutdown.sh
出于安全原因,创建一个非权限用户来运行dotCMS服务器。
sudo adduser --home /opt/dotcms -gecos"dotCMS User" --disabled-password --disabled-login 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服务器侦听端口8080
,我们将配置Nginx作为反向代理,以便通过标准HTTP
和HTTPS
端口访问应用程序,我们还将配置Nginx以便使用let's Encrypt生成的SSL 。
安装Nginx 。
sudo apt -y install nginx
启动Nginx并使其在引导时自动启动。
sudo systemctl start nginx
sudo systemctl enable nginx
添加Certbot存储库。
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
安装Certbot,它是let's Encrypt CA的客户端应用程序。
sudo apt -y install certbot
注:要从let's Encrypt CA获取证书,必须将要生成证书的域名指向服务器,如果不是,必须对域名的DNS记录进行必要的更改,然后等待DNS再次传播以再次进行证书请求,Certbot在提供证书之前检查域颁发机构。
生成SSL证书。
sudo certbot certonly --webroot -w /var/www/html -d cms.example.com
生成的证书存储在 /etc/letsencrypt/live/cms.example.com/
,Let's Encrypt证书在90天内到期,因此建议使用Cron作业设置证书的自动续订。
打开cron作业文件。
sudo crontab -e
在文件的末尾添加以下行。
30 5 * * * /usr/bin/certbot renew --quiet
上面的cron工作将每天早上5:30运行。如果证书到期到期,将自动续订该证书。
为dotCMS站点创建新的服务器块文件。
sudo nano /etc/nginx/sites-available/dotcms
填充文件。
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;
}
}
激活配置。
sudo ln -s /etc/nginx/sites-available/dotcms /etc/nginx/sites-enabled/dotcms
重新启动Nginx web服务器,以便更改生效。
sudo systemctl restart nginx
访问下列地址的管理仪表板。
https://cms.example.com/dotAdmin
使用初始管理员帐户admin@dotcms.com
和密码admin
登录,登录后立即更改默认密码。
恭喜你,DOTCMS内容管理系统现已安装在你的服务器上,你可以修改演示站点,也可以从头开始构建你的网站。