LNMP+tomcat部署discuz、dedecms及zrlog
阿新 • • 發佈:2018-12-19
搭建lnmp
Mysql的安裝
· 移動到安裝包存放路徑:
cd /usr/local/src/
· 下載MySQL的二進位制免編譯包:
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
·解壓mysql原始碼包檔案:
tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
·移動解壓後的目錄並更名:
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
·移動至mysql目錄下:
cd /usr/local/mysql
·建立一個新使用者:
useradd mysql
·建立datadir的目錄:
mkdir /data/
·初始化mysql,指定使用者和data目錄:
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
安裝需要的依賴包:yum install -y perl-DBD-MySQL
·將mysql自帶的配置檔案移至系統配置目錄下,並修改配置檔案,指定datadir的目錄,以及socket的目錄:
cp support-files/my-default.cnf /etc/my.cnf
· 修改內容如下:
datadir= /data/mysql
socket=/tmp/mysql.sock
· 將mysql自帶的指令碼檔案移至chkconfig的執行目錄下,並定義basedir(程式目錄)和datadir:
cp support-files/mysql.server /etc/init.d/mysqld
· 定義指令碼中的basedir(程式目錄)和datadir:
basedir=/usr/local/mysql
datadir=/data/mysql
· 將指令碼檔案的許可權更改為755:
chmod 755 /etc/init.d/mysqld
· 將指令碼檔案加入到chkconfig服務中:
chkconfig --add mysqld
· 啟動mysql服務
/etc/init.d/mysqld start
PHP安裝
· 相關的依賴包:
yum -y install libxml2-devel libpng-devel openssl openssl-devel bzip2 bzip2-devel libjpeg-devel freetype-devel libmcrypt.x86_64 libmcrypt-devel.x86_64 curl curl-devel
· 移動到安裝包存放路徑:
cd /usr/local/src/
· 下載php5原始碼包:
wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2
· 解壓php5原始碼包
tar -jxvf php-5.6.32.tar.bz2
· 移至解壓後的目錄下執行命令:
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl
· 最後進行編譯和安裝:
make && make install
· 複製解壓目錄中的配置模板到php-fpm目錄下:
cp php.ini-production /usr/local/php-fpm/etc/php.ini
· 建立並修改主配置檔案:
vim /usr/local/php-fpm/etc/php-fpm.conf
加入以下內容:
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
include = /etc/php/php-fpm.d/*.conf
· 新增discuz論壇的php-fpm配置檔案:
vim /etc/php/php-fpm.d/discuz.conf
[discuz]
listen = /tmp/discuz.sock
listen.mode=666
user = php-fpm
group = php-fpm
pm = static
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 1
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 2
slowlog = /usr/local/php-fpm/var/log/discuz-slow.log
· 新增dedecms論壇的php-fpm配置檔案:
vim /etc/php/php-fpm.d/dedecms.conf
內容如下:
[dedecms]
listen = /tmp/dedecms.sock
listen.mode=666
user = php-fpm
group = php-fpm
pm = static
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 1
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
request_slowlog_timeout = 2
slowlog = /usr/local/php-fpm/var/log/dedecms-slow.log
· 定時自動切割php-fpm的日誌指令碼
vim /usr/local/sbin/php-fpm_logrotate.sh
#! /bin/bash
#php-fpm的日誌存放路徑為/usr/local/php-fpm/var/log/
d=`date -d "-1 day" +%Y%m%d`
logdir="/usr/local/php-fpm/var/log/"
cd $logdir
for log in `ls *.log`
do
mv $log $log-$d
done
##3 自動刪除一個月以前的日誌
find /usr/local/php-fpm/var/log/ -name discuz-slow.log-* -type f –mtime +30 |xargs rm
· 建立php-fpm_logrotate.sh的日誌計劃任務
crontab –e
0 0 * * * /bin/bash /usr/local/sbin/discuz-php-fpm_logrotate.sh &>>/tmp/php-fpm_logrotate.log
· 複製解壓後的原始碼包中的啟動指令碼:
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
· 修改啟動指令碼許可權:
chmod 755 /etc/init.d/php-fpm
· 將指令碼檔案加入到chkconfig服務中:
chkconfig --add php-fpm
· 設定開機啟動php-fpm:
chkconfig php-fpm on
· 檢視配置檔案是否正確:
/usr/local/php-fpm/sbin/php-fpm -t
· 啟動php-fpm服務:
service php-fpm start
· 測試服務是否啟動成功:
ps aux |grep php-fpm
Nginx安裝
· 移動至目錄
cd /usr/local/src
· 下載Nginx1.14版本:
wget http://nginx.org/download/nginx-1.14.0.tar.gz
· 解壓原始碼包:
tar zxvf nginx-1.14.0.tar.gz
· 移至解壓後的cd nginx-1.14.0目錄下執行命令:
./configure --prefix=/usr/local/nginx
· 編譯安裝nginx:
make && make install
· 建立編輯nginx啟動指令碼:
vim /etc/init.d/nginx
內容如下:
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start()
{
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart()
{
stop
start
}
configtest()
{
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL
· 修改nginx啟動指令碼許可權:
chmod 755 /etc/init.d/nginx
· 將nginx啟動指令碼檔案加入到chkconfig服務中:
chkconfig --add nginx
· 將nginx啟動指令碼設定為開機啟動:
chkconfig nginx on
· 建立nginx主配置檔案
vim /usr/local/nginx/conf/nginx.conf
內容如下:
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 6000;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm
application/xml;
include vhost/*.conf;
}
· 建立discuz的虛擬主機配置檔案
vim /usr/local/nginx/conf/vhost/discuz.conf
內容如下:
server
{
listen 80;
server_name www.discuz.com;
index index.html index.htm index.php;
root /data/wwwroot/discuz.com;
location ~ admin\.php
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
include fastcgi_params;
fastcgi_pass unix:/tmp/discuz.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/discuz.com$fastcgi_script_name;
}
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/discuz.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/discuz.com$fastcgi_script_name;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
access_log /usr/local/nginx/logs/discu
z.logs "combined_realip";
}
· 建立dedecms的虛擬主機配置檔案
vim /usr/local/nginx/conf/vhost/dedecms.conf
內容如下:
server
{
listen 80;
server_name www.dedecms.com;
index index.html index.htm index.php;
root /data/wwwroot/dedecms.com;
location ~ login\.php
{
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
include fastcgi_params;
fastcgi_pass unix:/tmp/dedecms.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/dedecms.com$fastcgi_script_name;
}
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/dedecms.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/dedecms.com$fastcgi_script_name;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
access_log /usr/local/nginx/logs/dedecms.logs "combined_realip";
}
· 建立zrlog的虛擬主機配置檔案
vim /usr/local/nginx/conf/vhost/zrlog.conf
內容如下:
upstream cxsw.xyz
{
ip_hash;
server localhost:8080;
}
server
{
listen 80;
server_name zrlog.com;
location /
{
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
access_log off;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /usr/local/nginx/logs/zrlog.logs "combined_realip";
}
· 建立nginx的日誌切割指令碼
vim /usr/local/sbin/nginx_logrotate.sh
內容如下:
#!/bin/bash
d=`date -d "-1 day" +%Y%m%d`
logdir="/usr/local/nginx/logs/"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in `ls *.logs`
do
mv $log $log-$d
done
/bin/kill -HUP `cat $nginx_pid`
· 建立nginx_logrotate.sh的計劃任務
crontab -e
0 0 * * * /bin/bash /usr/local/sbin/nginx_logrotate.sh &>>/tmp/nginx_logrotate.log
· 檢查配置nginx配置是否正確
/usr/loca/nginx/sbin/nginx -t
· 啟動nginx
/etc/init.d/nginx start
搭建tomcat+jdk
jdk的安裝
· 前往ORACLE官網下載jdk,版本為1.8:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
· 下載完成後,使用xftp等工具上傳到伺服器/usr/local/src/目錄下。
· 解壓jdk壓縮包
tar zxvf jdk-8u181-linux-x64.tar.gz
· 移動解壓後的jdk檔案:
mv jdk1.8.0_181/ /usr/local/jdk1.8
· 設定jdk環境變數:
vim /etc/profile
在檔案最好加入以下內容:
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib
· 載入jdk環境變數生效:
source /etc/profile
· 檢驗jdk環境是否生效:
java -version
tomcat的安裝
· 移動至/usr/local/src目錄下,下載tomcat免編譯包:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
· 解壓tomcat的壓縮包:
tar zxvf apache-tomcat-8.5.34.tar.gz
· 移動解壓後的tomcat目錄:
mv apache-tomcat-8.5.34 /usr/local/tomcat
· 啟動tomcat:/usr/local/tomcat/bin/startup.sh
部署zrlog
· 編輯tomcat配置檔案:
增加以下內容:
<Host name="www.zrlog.com" appBase="/data/wwwroot/zrlog.com/"
unpackWARs= "true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/wwwroot/zrlog.com/" debug="0" reloadable="true" crossContext="true"/>
<Valve
</Host>
· 下載zrlog(移動至/usr/local/src下):
wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
· 建立zrlog的網站根目錄
mkdir -p /data/wwwroot/zrlog.com/
· 更名並移動zrlog的war包到配置檔案指定的網站根目錄:
mv zrlog-1.7.1-baaecb9-release.war /data/wwwroot/zrlog.com/ROOT.war
· 連線mysql後建立zrlog資料庫,以及zrlog資料庫使用者
mysql -uroot -p
create database zrlog;
grant all on zrlog.* to 'zrlog'@'%' identified by 'password';
· 啟動tomcat:
/usr/local/tomcat/bin/startup.sh
· 遊覽器訪問域名,根據提示安裝即可
zrlog的後臺二次認證
· 修改tomcat根目錄下的tomcat-users.xml檔案
vim /usr/local/tomcat/conf/tomcat-users.xml
增加內容如下:
<role rolename="zrolg"/>
<user username="zrlog" password="zrlog" roles="tomcat"/>
· 修改tomcat根目錄下的web.xml檔案
vim /usr/local/tomcat/conf/web.xml
增加內容如下:
<security-constraint>
<web-resource-collection>
<web-resource-name>www.zrlog.com</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
## tomcat-users.xml中配置的rolename ##
<role-name>zrlog</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
## 訪問提示自定義 ##
<realm-name>aminglinux</realm-name>
</login-config>
· 重新啟動tomcat:
/usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh
部署discuz
· 下載discuz安裝包到/usr/local/src/目錄下
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
· 解壓discuz壓縮包
unzip Discuz_X3.3_SC_UTF8.zip
· 建立discuz的網站根目錄
mkdir -p /data/wwwroot/discuz.com/
· 把upload目錄下檔案拷貝到/data/wwwroot/discuz.com/
mv upload/* /data/wwwroot/discuz.com/
· 建立discuz的資料庫和資料庫使用者
mysql -uroot -p
create database discuz;
grant all on discuz.* to 'discuz'@'localhost' identified by 'password';
· 在遊覽器輸入域名或IP安裝,例:
www.discuz.com/install
· 移動至/data/wwwroot/discuz.com/目錄下,根據安裝提示修改以下目錄和檔案的許可權
chmod 777 config data data/cache data/avatar data/plugindata data/download data/addonmd5 data/template data/threadcache data/attachment data/attachment/album data/attachment/forum data/attachment/group data/log uc_client/data/cache uc_server/data/ uc_server/data/cache uc_server/data/avatar uc_server/data/backup uc_server/data/logs uc_server/data/tmp uc_server/data/view
· 然後根據提示輸入資料庫和使用者資訊,即可完成安裝。
discuz的後臺二次認證
· 使用命令htpasswd建立使用者和密碼:
/usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd discuz
· 再次訪問後臺時需要輸入使用者認證資訊(nginx配置在前面已經完成)
部署dedecms
· 移動到目錄/usr/local/src,下載dedecms壓縮包:
wget http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz
· 解壓dedecms
tar zxvf DedeCMS-V5.7-UTF8-SP2.tar.gz
· 進入解壓後的DedeCMS目錄
cd DedeCMS-V5.7-UTF8-SP2
· 建立dedecms的網站根目錄
mkdir -p /data/wwwroot/dedecms
· 把解壓後的uploads目錄下的所有檔案拷貝到dedecms指定的跟目錄下:
mv ./uploads/* /data/wwwroot/dedecms.com
· 建立discuz的資料庫和資料庫使用者
mysql -uroot -p
create database dedecms;
grant all on dedecms.* to 'dedecms'@'localhost' identified by 'password';
· 在遊覽器輸入域名或IP安裝,例:
www.dedecms.com/install
· 根據安裝提示,修改以下檔案的許可權
chmod 777 /data/wwwroot/dedecms.com /data/wwwroot/dedecms.com/install /data/wwwroot/dedecms.com/special && chmod -R 777 /data/wwwroot/dedecms.com/plus/ /data/wwwroot/dedecms.com/dede/ /data/wwwroot/dedecms.com//data/ /data/wwwroot/dedecms.com/a/ /data/wwwroot/dedecms.com/uploads/
· 根據提示繼續安裝即可。
dedecms的後臺二次認證
· 使用命令htpasswd建立使用者和密碼(第二次建立不需要-c選項):
/usr/local/apache2.4/bin/htpasswd /usr/local/nginx/conf/htpasswd dedecms
· 再次訪問後臺時需要輸入使用者認證資訊(nginx配置在前面已經完成)
NFS共享靜態檔案
· 在服務端安裝:
yum install -y nfs-utils rpcbind
· 在服務端編輯配置檔案
vim /etc/exports
加入以下內容:
/data/wwwroot/discuz.com/data/attachment 127.0.0.1/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
/data/wwwroot/dedecms.com/upload 127.0.0.1/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
/data/wwwroot/zrlog.com/ 127.0.0.1/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
· 啟動rpcbind服務並設定開機啟動:
systemctl start rpcbind && systemctl enable rpcbind (一般安裝完rpcbind會自動啟動該服務)
· 啟動nfs服務並設定開機啟動:
systemctl start nfs && systemctl enable nfs
· 檢視埠是否監聽:nfs服務通過rpcbind服務監聽埠的
netstat -lntp |grep rpcbind
· 在客戶端安裝:
yum install -y nfs-utils
· 檢視NFS服務端共享的目錄:
showmount -e 192.168.229.128
· 掛載指定的NFS共享目錄(需要將在服務端將目錄許可權修改為777):
mkdir discuz-nfs && mount -t nfs 192.168.133.130:/data/wwwroot/discuz/data/attachment /discuz-nfs
mkdir dedecms-nfs && mount -t nfs 192.168.133.130:/data/wwwroot/dedecms/upload /dedecms-nfs
Nginx負載均衡
· 在nginx代理伺服器安裝nginx,內容如上
· 建立zrlog的負載均衡配置檔案:
vim /usr/local/nginx/conf/vhost/zrlog.com.conf
內容如下:
upstream zrlog.com
{
ip_hash;
server 127.0.0.1:80; ##IP屆時需做修改
server 127.0.0.1:80;
server 127.0.0.1:80;
}
server
{
listen 80;
server_name www.zrlog.com;
location /
{
proxy_pass http://zrlog.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
· 建立discuz的負載均衡配置檔案:
vim /usr/local/nginx/conf/vhost/discuz.com.conf
內容如下:
upstream discuz.com
{
ip_hash;
server 127.0.0.1:80; ##IP屆時需做修改
server 127.0.0.1:80;
server 127.0.0.1:80;
}
server
{
listen 80;
server_name www.discuz.com;
location /
{
proxy_pass http://discuz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
· 建立dedecms的負載均衡配置檔案:
vim /usr/local/nginx/conf/vhost/dedecms.com.conf
內容如下:
upstream dedecms.com
{
ip_hash;
server 127.0.0.1:80; ##IP屆時需做修改
server 127.0.0.1:80;
server 127.0.0.1:80;
}
server
{
listen 80;
server_name www.dedecms.com;
location /
{
proxy_pass http://dedecms.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
· 配置完檢查語法,並重新載入配置檔案
nginx -t && nginx -s reload