Web服务器初始化脚本

简介: Tengine + mysql + php
#!/bin/bash


#  set environment
yum groupinstall "Development tools" -y
yum install lrzsz ntpdate sysstat -y
yum install wget openssl-devel kernel-devel  -y 
yum install subversion -y


#  install nginx
function nginx_install ()
{
mkdir -p /home/tar/
cd /home/tar
if [ -f pcre-8.37.tar.gz ] ;then
   tar zxf pcre-8.37.tar.gz
else
   wget http://ncu.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
   tar zxf pcre-8.37.tar.gz
fi

if [ -f zlib-1.2.8.tar.gz ] ;then
   tar zxf zlib-1.2.8.tar.gz
else
   wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz
   tar zxf zlib-1.2.8.tar.gz
fi

if [ -f openssl-1.0.2c.tar.gz ] ;then
   wget http://www.openssl.org/source/openssl-1.0.2c.tar.gz
   tar zxf openssl-1.0.2c.tar.gz
else
   tar zxf openssl-1.0.2c.tar.gz
fi

if [ -f tengine-2.1.0.tar.gz ] ;then  
   wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
   tar zxf  tengine-2.1.0.tar.gz
else
   tar zxf  tengine-2.1.0.tar.gz
fi

cd tengine-2.1.0
sed -i 's/1.6.2/1.2.1/g;s/2.1.0/1.2.1/g;s/Tengine/Weyes-Web/g;s/nginx\//Weyes-Web\//g' src/core/nginx.h
./configure --with-http_ssl_module --with-pcre=/home/tar/pcre-8.37 --with-zlib=/home/tar/zlib-1.2.8 --with-openssl=/home/tar/openssl-1.0.2c
make && make install

}

# install php 
function php_install ()
{
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
yum install yum-priorities -y
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/remi-release-16.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum --enablerepo=remi install php php-cli php-common php-gd php-ldap  php-mbstring php-mcrypt php-mysql php-pdo php-imap php-odbc php-xml php-xmlrpc php-fpm  php-soap php-bcmath php-redis mysql-libs libpng-devel  libgd-devel libjpeg-devel zlib-devel libxml2-devel  gd-2  apr-util-devel


}

# install redis

yum --enablerepo=remi list redis


#  set iptables

function set_iptables ()
{
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -F
iptables -X
iptables -Z

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 123 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j ACCEPT
iptables -A INPUT -p tcp --dport 199 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 50000:50500 -j ACCEPT


service iptables save
service iptables restart

}

#  Security configuration

function set_env ()
{
# chkconfig off
chkconfig auditd off
chkconfig ip6tables off
chkconfig mdmonitor off
chkconfig iscsi off
chkconfig iscsid off
chkconfig lvm2-monitor off

# del user
userdel adm
userdel lp
userdel shutdown
userdel halt
userdel uucp
userdel operator
userdel games
userdel gopher

# set date
echo "* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org >/dev/null 2>&1"  >> /etc/crontab
service crond restart

# set ulimit

echo "* hard nofile" >> /etc/security/limits.conf 
echo "* soft nofile" >> /etc/security/limits.conf 
echo "* hard nproc" >> /etc/security/limits.conf 
echo "* soft nproc" >> /etc/security/limits.conf 
echo "fs.file-max=65535" >> /etc/sysctl.conf

# set sysctl
 
echo "net.ipv4.tcp_syncookies = 1"  >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf 
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_tw_buckets = 5000" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 4096" >> /etc/sysctl.conf
echo "net.core.netdev_max_backlog = 10240" >> /etc/sysctl.conf
echo "net.core.somaxconn = 2048" >> /etc/sysctl.conf
echo "net.core.wmem_default = 8388608" >> /etc/sysctl.conf
echo "net.core.rmem_default = 8388608" >> /etc/sysctl.conf 
echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_synack_retries = 2" >> /etc/sysctl.conf
echo "net.ipv4.tcp_syn_retries = 2" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_orphans = 3276800" >> /etc/sysctl.conf
echo "net.ipv4.tcp_mem = 786432 2097152 3145728" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4096 4096 16777216" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 4096 4096 16777216" >> /etc/sysctl.conf

}


nginx_install  >> /home/log/Web_install.log
php_install  >> /home/log/Web_install.log
set_iptables  >> /home/log/Web_install.log
set_env >> /home/log/Web_install.log




目录
相关文章
|
3月前
|
存储 数据库 开发者
Ruby的魔法之旅:如何从命令行脚本演变为Web应用
【8月更文挑战第31天】在编程领域,Ruby凭借其灵活优雅的语法深受开发者喜爱。从命令行脚本到Web应用,Ruby均能游刃有余。它可以帮助我们简化日常任务,如批量重命名文件或自动备份数据。随着技能提升,Ruby还能用于开发复杂的数据抓取工具,并通过Sinatra框架快速搭建Web接口,实现功能共享。其强大的社区支持和简洁的代码风格,使Ruby成为探索编程世界的理想选择,无论处理文本还是构建应用,Ruby都能带来高效与便捷。
35 0
|
15天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
20 1
|
23天前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
39 3
|
3月前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
52 1
|
3月前
|
运维 监控 数据库
自动化运维:使用Python脚本实现服务器监控
【8月更文挑战第31天】在这篇文章中,我们将探索如何利用Python编写简单的脚本来实现对服务器的基本监控。通过学习和应用这些技术,你可以快速检测服务器的状态,包括CPU使用率、内存占用和磁盘空间等关键指标。这不仅有助于及时发现问题,还能提升运维效率。文章将逐步引导你理解监控的重要性,并展示如何从零开始构建自己的监控工具。
|
3月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
110 0
|
3月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
37 0
|
3月前
|
存储 运维 监控
自动化运维:使用Python脚本进行服务器监控
【8月更文挑战第31天】在数字化时代,服务器的稳定运行对于企业至关重要。本文将介绍如何使用Python编写一个简单的服务器监控脚本,帮助运维人员及时发现并解决潜在问题。我们将从基础的服务器资源监控开始,逐步深入到日志分析与报警机制的实现。通过实际代码示例和操作步骤,使读者能够快速掌握自动化监控的技能,提升工作效率。
|
3月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
49 0
|
3月前
|
JavaScript 前端开发 UED
服务器端渲染新浪潮:用Vue.js和Nuxt.js构建高性能Web应用
【8月更文挑战第30天】在现代Web开发中,提升应用性能和SEO友好性是前端开发者面临的挑战。服务器端渲染(SSR)能加快页面加载速度并改善搜索引擎优化。Vue.js结合Nuxt.js提供了一个高效框架来创建SSR应用。通过安装`create-nuxt-app`,可以轻松创建新的Nuxt.js项目,并利用其自动路由功能简化页面管理。Nuxt.js默认采用SSR模式,并支持通过`asyncData`方法预取数据,同时提供了静态站点生成和服务器端渲染的部署选项,显著提升用户体验。
73 0