服务器部署

本文详细介绍了服务器安全设置,包括限制用户登录、使用密钥认证和sudo权限管理。同时,深入讲解了LNMP(Linux+Nginx+MySQL+PHP)环境的搭建过程,涉及软件下载、编译安装、配置文件编辑等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:服务器安全设置:只允许普通用户登入,而且只能密钥登入,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 &quot;%r&quot; %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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值