前言
Drupal 是一款用 php 实现的开源 CMS 软件
Drupal is open-source (free) content-management framework , and you can use it to build a wide range of web applications, from basic websites to elaborate API driven monoliths.
因为插件丰富,架构灵活,可以简单而快速实现大部分的网站功能,在国外很受欢迎
这里演示一下如何构建 Drupal
参考 Installing Drupal 8
Tip: 当前的版本为 Drupal 8.5.2
操作
依赖
Software | requirements |
---|---|
浏览器 | Browser requirements |
Web | Web Server |
php | Drupal 8 PHP requirements |
数据库 | Database server |
详细信息可以参考 System requirements
OS 环境
代码语言:javascript复制[root@drupal ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
[root@drupal ~]# hostnamectl
Static hostname: drupal
Icon name: computer-vm
Chassis: vm
Machine ID: 316348df30744c9c91b9202baf3915a6
Boot ID: 086f7e7994e542728868f6f422776936
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-693.21.1.el7.x86_64
Architecture: x86-64
[root@drupal ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:8c:97:19 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
valid_lft 83367sec preferred_lft 83367sec
inet6 fe80::334c:bc63:1266:56b3/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:ab:2c:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.56.217/24 brd 192.168.56.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::2be7:a317:cc4b:666b/64 scope link
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:14:54:5c brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:14:54:5c brd ff:ff:ff:ff:ff:ff
[root@drupal ~]#
软件环境
代码语言:javascript复制[root@drupal ~]# systemctl status mariadb
● mariadb.service - MariaDB 10.2.14 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since 五 2018-04-20 23:40:17 EDT; 25s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 2619 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 2575 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 2573 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 2587 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
└─2587 /usr/sbin/mysqld
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586119506048 [Note] Plugin 'FEEDBACK' is disabled.
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586119506048 [Note] Server socket created on IP: '::'.
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586119506048 [ERROR] Missing system table mysql.roles_mapping; please run mysql_upgrade to create it
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586025043712 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: Table 'm...oesn't exist
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586119506048 [Note] Reading of all Master_info entries succeded
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586119506048 [Note] Added new Master_info '' to hash table
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140586119506048 [Note] /usr/sbin/mysqld: ready for connections.
4月 20 23:40:17 drupal mysqld[2587]: Version: '10.2.14-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
4月 20 23:40:17 drupal mysqld[2587]: 2018-04-20 23:40:17 140585193162496 [Note] InnoDB: Buffer pool(s) load completed at 180420 23:40:17
4月 20 23:40:17 drupal systemd[1]: Started MariaDB 10.2.14 database server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@drupal ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2018-04-20 23:40:23 EDT; 27s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 2627 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 2632 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─2632 /usr/sbin/httpd -DFOREGROUND
├─2633 /usr/sbin/httpd -DFOREGROUND
├─2634 /usr/sbin/httpd -DFOREGROUND
├─2635 /usr/sbin/httpd -DFOREGROUND
├─2636 /usr/sbin/httpd -DFOREGROUND
└─2637 /usr/sbin/httpd -DFOREGROUND
4月 20 23:40:23 drupal systemd[1]: Starting The Apache HTTP Server...
4月 20 23:40:23 drupal httpd[2632]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::334c:bc63:1266:56b3. Set the 'Serv...this message
4月 20 23:40:23 drupal systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@drupal ~]# php --version
PHP 7.2.4 (cli) (built: Mar 27 2018 17:23:35) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.4, Copyright (c) 1999-2018, by Zend Technologies
[root@drupal ~]# rpm -qa | grep httpd
httpd-tools-2.4.6-67.el7.centos.6.x86_64
httpd-2.4.6-67.el7.centos.6.x86_64
[root@drupal ~]# rpm -qa | grep -i mariadb
MariaDB-client-10.2.14-1.el7.centos.x86_64
MariaDB-compat-10.2.14-1.el7.centos.x86_64
MariaDB-common-10.2.14-1.el7.centos.x86_64
MariaDB-server-10.2.14-1.el7.centos.x86_64
[root@drupal ~]#
下载 drupal 包
代码语言:javascript复制[root@drupal drupal]# ls
[root@drupal drupal]# wget https://ftp.drupal.org/files/projects/drupal-8.5.2.tar.gz
--2018-04-20 23:53:12-- https://ftp.drupal.org/files/projects/drupal-8.5.2.tar.gz
Resolving ftp.drupal.org (ftp.drupal.org)... 151.101.197.175
Connecting to ftp.drupal.org (ftp.drupal.org)|151.101.197.175|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15527091 (15M) [application/octet-stream]
Saving to: ‘drupal-8.5.2.tar.gz’
100%[===============================================================================================================================================>] 15,527,091 3.17MB/s in 7.6s
2018-04-20 23:53:21 (1.95 MB/s) - ‘drupal-8.5.2.tar.gz’ saved [15527091/15527091]
[root@drupal drupal]# echo $?
0
[root@drupal drupal]# ls
drupal-8.5.2.tar.gz
[root@drupal drupal]#
解压到合适的位置
先解压
代码语言:javascript复制[root@drupal drupal]# ls
drupal-8.5.2.tar.gz
[root@drupal drupal]# tar -zxvf drupal-8.5.2.tar.gz
...
...
drupal-8.5.2/vendor/zendframework/zend-feed/src/Writer/Source.php
drupal-8.5.2/vendor/zendframework/zend-feed/src/Writer/StandaloneExtensionManager.php
drupal-8.5.2/vendor/zendframework/zend-feed/src/Writer/Version.php
drupal-8.5.2/vendor/zendframework/zend-feed/src/Writer/Writer.php
drupal-8.5.2/vendor/autoload.php
drupal-8.5.2/vendor/.htaccess
drupal-8.5.2/vendor/web.config
drupal-8.5.2/LICENSE.txt
[root@drupal drupal]# ls
drupal-8.5.2 drupal-8.5.2.tar.gz
[root@drupal drupal]#
再拷贝到合适的位置
代码语言:javascript复制[root@drupal drupal]# mkdir /var/www/html/drupal
[root@drupal drupal]# ls drupal-8.5.2
autoload.php composer.json composer.lock core example.gitignore index.php LICENSE.txt modules profiles README.txt robots.txt sites themes update.php vendor web.config
[root@drupal drupal]# cp -r drupal-8.5.2/* /var/www/html/drupal/
[root@drupal drupal]# ls /var/www/html/drupal/
autoload.php composer.json composer.lock core example.gitignore index.php LICENSE.txt modules profiles README.txt robots.txt sites themes update.php vendor web.config
[root@drupal drupal]#
顺便调整权限
代码语言:javascript复制[root@drupal drupal]# ll /var/www/html/drupal/
total 224
-rw-r--r-- 1 root root 262 4月 21 00:00 autoload.php
-rw-r--r-- 1 root root 2740 4月 21 00:00 composer.json
-rw-r--r-- 1 root root 161072 4月 21 00:00 composer.lock
drwxr-xr-x 12 root root 4096 4月 21 00:00 core
-rw-r--r-- 1 root root 1272 4月 21 00:00 example.gitignore
-rw-r--r-- 1 root root 549 4月 21 00:00 index.php
-rw-r--r-- 1 root root 18092 4月 21 00:00 LICENSE.txt
drwxr-xr-x 2 root root 24 4月 21 00:00 modules
drwxr-xr-x 2 root root 24 4月 21 00:00 profiles
-rw-r--r-- 1 root root 5889 4月 21 00:00 README.txt
-rw-r--r-- 1 root root 1596 4月 21 00:00 robots.txt
drwxr-xr-x 3 root root 130 4月 21 00:00 sites
drwxr-xr-x 2 root root 24 4月 21 00:00 themes
-rw-r--r-- 1 root root 848 4月 21 00:00 update.php
drwxr-xr-x 17 root root 298 4月 21 00:00 vendor
-rw-r--r-- 1 root root 4555 4月 21 00:00 web.config
[root@drupal drupal]# chown -R apache.apache /var/www/html/drupal/
[root@drupal drupal]# ll /var/www/html/drupal/
total 224
-rw-r--r-- 1 apache apache 262 4月 21 00:00 autoload.php
-rw-r--r-- 1 apache apache 2740 4月 21 00:00 composer.json
-rw-r--r-- 1 apache apache 161072 4月 21 00:00 composer.lock
drwxr-xr-x 12 apache apache 4096 4月 21 00:00 core
-rw-r--r-- 1 apache apache 1272 4月 21 00:00 example.gitignore
-rw-r--r-- 1 apache apache 549 4月 21 00:00 index.php
-rw-r--r-- 1 apache apache 18092 4月 21 00:00 LICENSE.txt
drwxr-xr-x 2 apache apache 24 4月 21 00:00 modules
drwxr-xr-x 2 apache apache 24 4月 21 00:00 profiles
-rw-r--r-- 1 apache apache 5889 4月 21 00:00 README.txt
-rw-r--r-- 1 apache apache 1596 4月 21 00:00 robots.txt
drwxr-xr-x 3 apache apache 130 4月 21 00:00 sites
drwxr-xr-x 2 apache apache 24 4月 21 00:00 themes
-rw-r--r-- 1 apache apache 848 4月 21 00:00 update.php
drwxr-xr-x 17 apache apache 298 4月 21 00:00 vendor
-rw-r--r-- 1 apache apache 4555 4月 21 00:00 web.config
[root@drupal drupal]#
创建数据库和用户
代码语言:javascript复制[root@drupal drupal]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 11
Server version: 10.2.14-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE drupal_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal_db.* TO 'drupal'@'localhost' IDENTIFIED BY 'drupal';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show create database drupal_db;
----------- -----------------------------------------------------------------------
| Database | Create Database |
----------- -----------------------------------------------------------------------
| drupal_db | CREATE DATABASE `drupal_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
----------- -----------------------------------------------------------------------
1 row in set (0.00 sec)
MariaDB [(none)]> show grants for "drupal"@"localhost";
------------------------------------------------------------------------------------------------------------------------------------
| Grants for drupal@localhost |
------------------------------------------------------------------------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'drupal'@'localhost' IDENTIFIED BY PASSWORD '*7AFEAE5774E672996251E09B946CB3953FC67656' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON `drupal_db`.* TO 'drupal'@'localhost' |
------------------------------------------------------------------------------------------------------------------------------------
2 rows in set (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@drupal drupal]#
可以参考 Create a database
防火墙
代码语言:javascript复制[root@drupal drupal]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: ssh dhcpv6-client http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@drupal drupal]#
确保开放了 web 端口
SELINUX
代码语言:javascript复制[root@drupal drupal]# getenforce
Disabled
[root@drupal drupal]#
Selinux 已经放行
进行配置
访问 http://192.168.56.217/drupal/core/install.php
进入配置界面
选择语言
选择安装方式
对环境进行评估,看是否有依赖的缺失
数据库配置
安装网站
安装翻译
设置网站
更新配置翻译
完成安装,进入站点
关于 Drupal 的其它细节操作可以基于这个状态进行更深入地探索
总结
Drupal 是一个经典的 LAMP 应用
所以在 Linux Apache Mysql PHP 等环境准备好了的情况下只需要将相应的软件包解压并放在合适的位置就可以了