一:服务器安全设置:只允许普通用户登入,而且只能密钥登入,root只能普通用户sudo:
只允许普通用户登入,需要关闭root用户且密码登入:
#PermitRootLogin yes
改为
PermitRootLogin no
把PasswordAuthentication yes
改为
PasswordAuthentication no
还要修改,打开密钥安全认证:
PubkeyAuthentication yes
root只能普通用户sudo:
操作执行
visudo
编辑举例普通用户名ccc,aaa,bbb:
ADMINS ALL=(ALL) AAA_CMD
User_Alias ADMINS = aaa, bbb, ccc
Cmnd_Alias AAA_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat, /usr/bin/su
可以实现,例如ccc用户切换到root:
sudo su -
[sudo] ccc 的密码:
上一次登录:二 6月 25 10:48:42 CST 2019pts/1 上
代码审计:
mkdir -p /usr/local/aaa/records/
chmod 777 /usr/local/aaa/records/
chmod +t /usr/local/aaa/records/
vim /etc/profile
if [ ! -d /usr/local/aaa/records/${LOGNAME} ]
then
mkdir -p /usr/local/aaa/records/${LOGNAME}
chmod 300 /usr/local/aaa/records/${LOGNAME}
fi
export HISTORY_FILE="/usr/lcoal/aaa/records/${LOGNAME}/bash_history"
export PROMPT_COMMAND='{date "+%Y-%m-%d %T ###### $(who am i |awk "{print \$1\"\"\$2\"\"\$5}") #### $(history 1|{read x cmd; echo "$cmd";})";} >>HISTORY_FILE'
二.搭建lnmp:
下载nginx,mysql,php
1.先安装mysql:
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql
useradd mysql
mkdir /data
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
遇到dumper错误:
yum install -y perl-Module-Install
配置mysql文件:
可以直接编辑/etc/my.cnf:
datadir=/data/mysql
socket=/tmp/mysql.sock
编辑启动脚本:
cp support-files/mysql.server /etc/init.d/mysqld
更改:
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
设置权限:
chmod 755 /etc/init.d/mysqld
设置启动项:
chkconfig --add mysqld
chkconfig mysqld on
安装php:
http://cn2.php.net/distributions/php-5.6.30.tar.gz
cd /usr/local/src/
tar -zxvf php-5.6.30.tar.gz
useradd -s /sbin/nologin php-fpm
cd /usr/local/src/php-5.6.39
./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
报错curl,安装:
yum -y install libcurl-devel
编译安装:
make && make install
拷贝php的配置文件:
cp /usr/local/src/php-5.6.39/php.ini-production ./etc/php.ini
创建一个php-fpm.conf文件:
vim /usr/local/php-fpm/etc/php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid //pid存放路径
error_log = /usr/local/php-fpm/var/log/php-fpm.log //日志存放路径
[www] //这是一个模块
listen = /tmp/php-fcgi.sock //监听ip和端口,端口默认为9000
listen.mode = 666 //用来定义php-fcgi.sock文件的权限
user = php-fpm //定义服务的所属用户
group = php-fpm //定义服务的所属组
pm = dynamic //后面这些都是关于进程的信息
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
拷贝启动脚本:
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
[root@ligen php-fpm]# /usr/local/php-fpm/sbin/php-fpm -t
chkconfig --add php-fpm
启动:
service php-fpm start
安装nginx:
http://nginx.org/download/nginx-1.12.1.tar.gz
解压,进入解压目录,配置编译选项:
./configure --prefix=/usr/local/nginx
编译安装:
make && make install
编辑启动脚本:
vim /etc/init.d/nginx
然后将这网址里的文件内容复制进去:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx
设置启动脚本:
chmod 755 /etc/init.d/nginx
配置文件:
cd /usr/local/nginx/conf
mv nginx.conf nginx.conf.bak
vim nginx.conf
复制链接里的配置https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf
nginx解析php:
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
include fastcgi_params;
}
日志格式:
vim /usr/local/nginx/conf/nginx.conf
log_format ligen '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
ligen:是我自己定义的名字,随便写都可以
$remote_addr为访问网站的用户的出口ip
$http_x_forwarded_for:代理服务器的ip
$time_local:当前的时间
$host:访问的主机名
$request_uri:访问的url地址
$status:状态码
$http_referer:referer地址
$http_user_agent:user_agent
配置虚拟主机文件,增加如下:
access_log /tmp/test.com.log ligen;
三.tomcat+jdk环境准备:
安装tomcat:
tomcat的安装分为JDK和安装tomcat两个步骤,JDK是针对java开发的产品。安装tomcat的前提就是安装好jdk。
安装jdk:
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
cd /usr/local/src/
tar -zxvf jdk-8u101-linux-x64.tar.gz
mv jdk1.8.0_101/ /usr/local/jdk1.8
设置环境变量:
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/charsets.jar
source /etc/profile
检测设置是否正确:
java -version
安装Tomcat:
下载软件包:
https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40.tar.gz
tar -zxvf apache-tomcat-8.5.40.tar.gz
mv apache-tomcat-8.5.40 /usr/local/tomcat
启动:
/usr/local/tomcat/bin/startup.sh
ps aux |grep tomcat
netstat -lnpt |grep java
tcp6 0 0 :::8009 :::* LISTEN 10092/java
tcp6 0 0 :::8080 :::* LISTEN 10092/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 10092/java
8005为管理端口
8009为第三方服务调用端口
8080为web服务端口
设置开机启动:
echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local
chmod a+x /etc/rc.d/rc.local
配置tomcat:
配置tomcat服务的访问端口:
vim /usr/local/tomcat/conf/server.xml
修改:
<Connector port=“8080” protocol=“HTTP/1.1”
可以把8080端口改为80。
重启:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
tomcat的虚拟主机:
打开配置文件:
vim /usr/local/tomcat/conf/server.xml
<!–和-->之间是注释掉的
<host>和<\host>之间为配置虚拟主机部分
name定义域名
appBase定义应用的目录
java通常是一个jar的压缩包,将jar压缩包放到appBase目录下面,访问的tomcat默认页在appBase目录下面,在它的子目录ROOT里面
ls /usr/local/tomcat/webapps/ROOT/
其中index.jsp就是tomcat的默认页面
测试tomcat解析jsp:
vim /data/tomcatweb/111.jsp
curl -x127.0.0.1:8080 www.123.cn/111.jsp
tomcat日志:
cd /usr/local/tomcat/logs/
ls
catalina开头的日志为tomcat的综合日志,记录tomcat服务的相关信息,也记录错误日志
host-manager和manager为管理相关的日志
host-manager为虚拟主机的管理日志
四.搭建zrlog、discuz、dedecms
- 搭建zrlog:
下载zrlog地址:
wget http://dl.zrlog.com/release/zrlog-2.1.3-b5f0d63-release.war
把zrlog的war包复制到/usr/local/tomcat/webapps/
cp zrlog-2.1.3-b5f0d63-release.war /usr/local/tomcat/webapps/
mv zrlog-2.1.3-b5f0d63-release zrlog
安装:
访问ip:8080/zrlog
在数据库服务器上创建数据库zrlog及用户:
create database zrlog;
grant all on zrlog.* to 'zrlog'@zrlog站点ip地址 identified by '密码’;
退出mysql
接下来填写安装信息,注意数据库服务器地址填写数据库ip。
在服务器上编辑tomcat配置文件,添加如下:
vim /usr/local/tomcat/conf/server.xml
<Host name="www.zrlog.com" appBase=""
unpackWARs="ture" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/zrlog/zrlog.com/" debug="0" reloadable="true" crossContext="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
接下来:
mv /usr/local/tomcat/webapps/zrlog/* /data/zrlog/zrlog.com/
重启tomcat:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
自此zrlog安装好了。
- 安装discuz论坛:
上面已经配置了nginx解析php文件,接下来安装discuz论坛。
cd /usr/local/src/
wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
unzip Discuz_X3.3_SC_UTF8.zip
将upload下的所有文件拷贝到default目录下来
cp -r upload/* /data/discuz/
在浏览器上访问:站点ip/install
编写脚本赋予权限:
cd /data/discuz/
vim 1.txt
./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
vim add_w.sh
#!/bin/bash
for i in `cat ./1.txt`
do
chmod 777 $i
done
执行
sh add_w.sh
刷新浏览器:
选择“全新安装 Discuz! X (含 UCenter Server)”,如果你之前没有安装过Discuz就选择此项。
选择“仅安装 Discuz! X (手工指定已经安装的 UCenter Server )”,如果你之前安装过Discuz,现在只是升级的话,选择此项并保证之前的 UCenter 是 UCenter 1.6.0 版本,如果之前安装的 UCenter Server 没有进行升级操作的话,一般为 1.5.1 或 1.5.2 版本,你需要首先升级 Ucenter 到 1.6.0版本, 否则安装程序会提示错误,无法继续。
在数据库服务器上创建discuz数据库和用户:
create database discuz;
grant all on discuz.* to 'discuz'@discuz站点ip identified by '123457';
安装dedecms站点:
增加dedecms站点配置:
vim /usr/local/nginx/conf/vhost/www.dedecms.com.conf
server
{
listen 80 ;
server_name www.dedecms11.com;
index index.html index.htm index.php;
root /data/dedecms;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/dedecms$fastcgi_script_name;
}
}
创建文件:
mkdir /data/dedecms
下载dedecms:
wget http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz
tar zxvf DedeCMS-V5.7-UTF8-SP2.tar.gz
chmod -R 777 /data/dedecms
浏览器访问:
在数据库服务器上配置dedecms数据库和用户名:
create database dedecms;
grant all on dedecms.* to ‘dedecms’@dedecms站点的ip identified by ‘123457’;
搭建nfs 站点之间进行文件共享:
在其中一台web服务器上配置:
yum install -y nfs-utils
vim /etc/exports
举例自定义:
/home/nfstestdir 192.168.247.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
启动:
systemctl start nfs
systemctl enable nfs
systemctl start rpcbind
在另外几台web服务器上操作:
yum install -y nfs-utils
showmount -e 192.168.247.160
进行挂载:
mount -t nfs 192.168.247.160:/home/nfstestdir/ /mnt
df -h
中途最好把防火墙关了,自此便可以进行文件共享。
免重启nfs配置文件生效:
exportfs -arv
然后再到各个其他服务器上手动挂载。
mv DedeCMS-V5.7-UTF8-SP2/uploads/* /data/dedecms/
nginx负载均衡:
简单说就是代理多台
vim /usr/local/nginx/conf/vhost/load.conf
upstream zrlog_com
{
ip_hash;
server zrlog_webip_1:8080; #填写zrlogip
server zrlog_webip_2:8080;
server zrlog_webip_3:8080; #tomcat 默认8080端口,nginx80端口
}
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;
}
}