#Ubuntu服务器常用组件安装包
user
目录,并在该目录下添加任意.sh的文件即可(加载模式是ls ./user/.sh,暂时无排序顺序,以后会考虑加入)。补充说明一下,我管理的服务器比较多,我的做法是,先获取这个项目的代码到服务器git clone https://git.oschina.net/janpoem/ubuntu-server-deploy.git
,然后再通过svn checkout http://anyhost/php-server/ ./user
,将某个服务器的配置文件从svn中导出。之后执行所需的安装命令即可。
一般来说,都不会在一台服务器上集中全部功能组件,一般会区分如:tengine_node_blancer、tengine_php_server、memcached_cluster、memcached_router等。这个安装包的作为开源项目,只提供了一个基础的环境,而具体的服务器配置,则保存在用户自己的版本库中(这个项目的user目录已经设置了忽略)。
##todo
###phase1
###phase2
##server.sh
./tengine.sh init|prepare|timezone|upgrade|clean|dns
这个脚本主要执行apt-get upgrade和修正服务器的时区。
/etc/resolvconf/resolv.conf.d/head
文件实现,会根据用户定义的DNS变量,注释掉该文件中正在使用的nameserver,并追加新的DNS。用户可修改变量
#!/usr/bin/env bash
# file: user/dns.sh
# oneDNS
DNS[1]=112.124.47.27
DNS[2]=114.215.126.16
# 时区
TIMEZONE=Asia/Shanghai
# 有需要追加的安装包,请使用这个变量,但最好使用+=的方式追加。
SERVER_REQUIRE_PKGS+="...需要增加的包..."
##tengine.sh
可用的命令
./tengine.sh install|rebuild|conf|conf-all|conf-main|conf-deny|conf-common|conf-php|script|sh|test|ensite|enphpsite
./tengine.sh conf-php 127.0.0.1:8832 php53_settings
./tengine.sh ensite default 80 default
./tengine.sh enphpsite default 80 default
,参数如ensite,注意,该命令会出发自动执行conf-php的命令。所以如果要确保php环境的正确性,请先提前手动执行./tengine.sh conf-php
。上述的所谓重新初始化,是指,修改了配置,并按照最新的配置覆盖到指定的配置文件。
用户可修改变量
# 所需要的包的版本号……这个最好和要下载的包名称保持一致,这里需要调整一下
TENGINE_NAME=tengine-2.1.0
PCRE_NAME=pcre-8.36
ZLIB_NAME=zlib-1.2.8
OPENSSL_NAME=openssl-1.0.2a
# www_user和www_group,这个配置也对应到php编译使用
WWW_USER=www-data
WWW_GROUP=www-data
# tengine的目录,呃,这个不用怎么修改
TENGINE_CONF_DIR=/etc/tengine
# tengine pidfile 这个也不用改了吧
TENGINE_PID_FILE=/var/run/tengine.pid
# ...不说了
TENGINE_LOG_DIR=/var/log/tengine
TENGINE_TMP_DIR=/var/tmp/tengine
# ...不说了
TENGINE_TMP_CLIENT=${TENGINE_TMP_DIR}/client_body
TENGINE_TMP_PROXY=${TENGINE_TMP_DIR}/proxy
TENGINE_TMP_FCGI=${TENGINE_TMP_DIR}/fcgi
TENGINE_TMP_UWSGI=${TENGINE_TMP_DIR}/uwsgi
TENGINE_TMP_SCGI=${TENGINE_TMP_DIR}/scgi
# tengine config配置变量
TENGINE_WORK_PROS=8
TENGINE_RLIMIT=102400
TENGINE_WORKER_CONNS=102400
TENGINE_DEFAULT_MIME_TYPE=text/html
TENGINE_DEFAULT_CHARSET=text/html
TENGINE_VHOST_LOG_DIR=/var/log/vhost
TENGINE_VHOST_CONF_DIR=${TENGINE_CONF_DIR}/vhost
# www的根目录
TENGINE_WWW_HOME=/var/www
##mc.sh
memcached和mcrouter相关的安装和配置。
mcrouter,facebook团队荣誉出品,安装过程十分费劲,所以也打包在这个脚本里面了。
Mcrouter is a memcached protocol router for scaling memcached (http://memcached.org/) deployments. It's a core component of cache infrastructure at Facebook and Instagram where mcrouter handles almost 5 billion requests per second at peak.
可用的命令
./mc.sh install|conf|mcr-install|mcr-build|mcr-fb-build|mcr-conf|mcr-script|mcr-sh
MCR_POOL_SERVERS
./mc.sh mcr-build 1
如果你的服务器已经安装过facebook/folly,再执行mcr-install的时候,安装过程无异常,但是安装完毕,当你执行mcrouter --help,有可能会报出如下的错误:
mcrouter: error while loading shared libraries: libfolly.so.35: cannot open shared object file: No such file or directory
不管你如何重新编译安装folly,都无法解决,目前可行的方案是用facebook提供的方式进行安装,不过他会将你的gcc和g++用4.8替换掉。
如果你是全新的服务器安装,执行mcr-install都不会有这个异常出现,如果你已经自己手动编译安装过folly,则可能会出现上述的问题。发生这个问题的时候,请使用mcr-fb-build。
并且,mcr-fb-build和mcr-install安装的目标目录是不同的。
这个问题已经提交到mcrouter的issues了。https://github.com/facebook/mcrouter/issues/39
用户可修改变量
# memcached的配置
MC_HOST=127.0.0.1
MC_PORT=11211
MC_LOG_FILE=/var/log/memcached.log
MC_USER=memcache
MC_SIZE=64
# mcrouter配置
MCR_PORT=5000
MCR_CONF_FILE=/etc/mcrouter.json
MCR_LOG_FILE=/var/log/mcrouter.log
MCR_PID_FILE=/var/run/mcrouter.pid
# mcrouter pooled servers配置,这里当时没想清楚,所以实现的好,以后会改成数组的模式
MCR_POOL_SERVERS="\"${MC_HOST}:${MC_PORT}\",\"other_ip:other_port\""
###/etc/init.d/mcrouter使用说明
执行./mc.sh mcr-sh,会生成一个服务启动的脚本/etc/init.d/mcrouter
,这个脚本用于日常启动、重启、停止mcrouter服务使用。
service mcrouter start|stop|restart|status|proc
调试
如上所述,因为folly的这个问题,所以适当的调试是必要的。如果当你执行service mcrouter start
,看到他输出了ok,并且在PIDFILE也看到了进程id,但实际上当你执行service mcrouter status
或service mcrouter proc
时,却没有在运行的状态,这时多半是启动过程发生了异常。
这时你可以尝试直接执行:mcrouter --help
来看看是不是有什么异常,如果help输出正常,那么就需要对/etc/init.d/mcrouter进行一些小修改:
# 上面省略....
# 在这一行开始
. /lib/lsb/init-functions
${DAEMON} ${DAEMON_ARGS}
exit 1
# 下面省略....
然后执行/etc/init.d/mcrouter
来直接启动服务,你可能会看到一些其它的异常,比如他会提示你,端口被占用什么的。
当调试完毕服务已经可以正常启动了,再执行mc.sh mcr-sh
,会重新生成这个服务启动脚本,并覆盖你修改的内容。
##php.sh
./php.sh install|rebuild|fpm-conf|fpm-sh|ini|bin
/php编译目录/etc/php-fpm.conf
,而非/etc/php-fpm.conf/php编译目录/lib/php.ini
用户可修改变量
以下只列出推荐用户修改的
# PHP源代码下载的目录,可以留空,会以ubuntu-server-deploy/temp作为下载目录
PHP_TEMP_DIR=
# 所需要的PHP版本,注意,目前这个编译,测试过php5.5和php5.6,其它的版本要实际测试
PHP_VER=5.5.23
# php的下载连接,注意,这里可选的有:${PHP_HK_SOURCE}、${PHP_CN_SOURCE}、${PHP_US_SOURCE}
PHP_SOURCE=${PHP_HK_SOURCE}
# php可执行命令的前缀,提供这个变量,主要为了能让系统同时存在多个php的版本,比如有些开源代码只支持php5.3...
PHP_BIN_PREFIX=php
# 需要追加apt-get的包名称,如果要多行,请用双引号包起来
PHP_REQ_PKGS=
# php编译的命令,如果不是必要,最好不要直接修改这个命令,而是使用+=的方式追加,如下:
PHP_CONF_CMD+="...追加的编译配置..."
# php日志、pid文件
PHP_FPM_LOG_DIR=/var/log/${PHP_BIN_PREFIX}-fpm
PHP_FPM_PID_FILE=/var/run/${PHP_BIN_PREFIX}-fpm.pid
PHP_FPM_ERR_FILE=${PHP_FPM_LOG_DIR}/error.log
PHP_FPM_LOG_LEVEL=warning
# FPM最大进程数、超时时间、RLIMIT
PHP_FPM_PROCESS_MAX=10
PHP_FPM_PROCESS_TIMEOUT=30
PHP_FPM_RLIMIT=65535
# FPM listen,你可以修改为unix:....
PHP_FPM_LISTEN="127.0.0.1:9902"
# listen mode
PHP_FPM_LISTEN_MODE=0666
# FPM PM设定
PHP_FPM_PM_MODE=static
PHP_FPM_PM_START=10
PHP_FPM_PM_MAX_CHILDREN=10
PHP_FPM_PM_MAX_REQUESTS=0
# php.ini设置相关
PHP_INI_MAX_EXECUTION_TIME=60
PHP_INI_MAX_INPUT_TIME=60
PHP_INI_DEFAULT_CHARSET=UTF-8
PHP_INI_POST_MAX_SIZE=10M
PHP_INI_UPLOAD_MAX_SIZE=10M
##user.sh示例
#!/usr/bin/env bash
MC_HOST=192.168.55.122
MC_PORT=11212
MC_LOG_FILE=/var/log/memcached.log
MC_USER=memcache
MC_SIZE=64
MCR_POOL_SERVERS="\"${MC_HOST}:${MC_PORT}\""
##ubuntu的中国源
如果你需要使用中国的apt-get更新源,请使用sohu源,已知163源在一些包的版本上有错误,谨慎谨慎。
sohu源
deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型