现在的位置: 首页 > IT运维 > 正文

Ubuntu安装VPS及LNMP环境

2010年04月18日 IT运维 ⁄ 共 7775字 暂无评论 ⁄ 被围观 0+

Linux下的VPS(虚拟服务器)已经成为很多服务器空间运营商的必备的产品,这样可以用最小的投资获得最大化的效益。
VPS是在一台服务器上安装若干虚拟服务器,每个虚拟服务器都可以具备独立的ip地址,环境互不干扰,安全性方面也比虚拟主机要高,除非有人能够从虚拟服务器溢出得到宿主服务器的权限。对于ubuntu爱好者,如果安装vps,部署不同的LNMP环境,可以方便开发调试优化等各种不同应用的需要。

那么在ubuntu 下如何安装vps的服务器呢?且看下文:)

ubuntu安装完毕后,首先更改密码:

passwd

根据需要更改root账户的密码:

sudo passwd root

将系统软件源更新下,打开 /etc/apt/sources.list 文件,修改为以下内容:

deb http://archive.ubuntu.com/ubuntu/ karmic main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ karmic-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ karmic-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ karmic main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ karmic-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ karmic-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ karmic-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ karmic-backports main restricted universe multiverse

还有 locale 的问题,可能会造成在 SSH 终端下的乱码,Debian 可以用 dpkg-reconfigure locales 来设定,Ubuntu就不是这样了。可以先查看一下 /usr/share/i18n/SUPPORTED 这个文件,有哪些受支持的 locale 设定,然后用命令激活即可。

locale-gen en_US.UTF-8
locale-gen fr_FR
locale-gen zh_CN.UTF-8
locale-gen zh_CN
locale-gen zh_CN.GBK
locale-gen zh_CN.GB18030

然后设定系统默认的编码语言,这样 SSH 下面就不会有乱码了,打开 /etc/default/locale 文件,输入以下内容,然后重启系统即可。

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"

因为系统的pygrub已经更换成pvgrub,此时我们可以根据自己的喜好升级系统内核了...那么我们就敲命令把内核也一起升掉好了...

apt-get update
apt-get upgrade
apt-get dist-upgrade

现在我们需要确认一下系统内核,然后把多余的系统内核给卡擦了...

uname -a #确定下版本,不要把现在正在用的给删了
dpkg --get-selections | grep linux  #可以看到系统内核的列表

然后更改 /boot/grub/menu.lst,修改其中的版本就可以了,当然建议重启一下然后再删除系统内核。
安装一些必备的软件:

aptitude install vim
aptitude install wget
aptitude install rcconf
aptitude install cron
aptitude install build-essential
aptitude install imagemagick
aptitude install postfix
aptitude install vsftpd
aptitude install mailx
aptitude install gawk
aptitude install bison

然后将一堆文件库什么的都给装上,Ubuntu的autoconf貌似有问题,要装老的...

aptitude install autoconf2.13 \
libjpeg62 libjpeg62-dev \
libpng12-0 libpng12-dev \
libfreetype6 libfreetype6-dev \
libxml2 libxml2-dev \
zlib1g zlib1g-dev \
bzip2 libbz2-dev \
libncurses5 libncurses5-dev \
libpcre3 libpcre3-dev \
curl \
libssl-dev \
slapd ldap-utils \
libcurl4-openssl-dev \
libmcrypt-dev \
libmhash-dev \
libmysqlclient15-dev \
libxpm-dev libt1-dev \
libgmp3-dev libpspell-dev \
libsnmp-dev libtidy-dev

在编译 PHP 的时候,有可能会提示缺少啥啥的,缺啥补啥,自己给装上即可。

# mm 的安装
wget ftp://ftp.ossp.org/pkg/lib/mm/mm-1.4.2.tar.gz
tar -zxvf mm-1.4.2.tar.gz
./configure
make
make install

# libevent 的安装
wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar xzvf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure && make && make install
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib

然后直接 aptitude 把 MySQL 给装上吧。

aptitude install mysql-server mysql-client

现在编译更加简单,PHP 里面内置了 php-fpm 了,安装要简单很多了...
咱们只要 SVN 一下然后编译就可以了哦,等5.3.2正式版出来应该就可以直接上php-fpm而不用svn了...咱们就先装其他的软件:

wget http://sysoev.ru/nginx/nginx-0.8.32.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.01.tar.gz

安装 libiconv:

tar zxf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local
make
make install
ln -s /usr/local/lib/libiconv.so /usr/lib

开始装Nginx了:

tar xzf nginx-0.8.32.tar.gz
cd nginx-0.8.32

# 编译nginx,增加 http_stub_status模块,默认安装到目录/usr/local/nginx,指定可执行脚本到/usr/local/sbin
cd nginx-0.8.32
./configure --sbin-path=/usr/local/sbin \
--user=www-data --group=www-data \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_realip_module

# --with-http_realip_module 这个就是把负载平衡也就是反向代理的模块给装上,以后会用上的

# 编译并安装
make
make install

安装完成后,使用下面的语句启动nginx并在浏览器中输入 http://localhost 访问,如果访问能够出现的页面显示"Welcome to nginx!"那就说明您的nginx安装成功。当然远程服务器上没啥好试的...

/usr/local/sbin/nginx

安装下PCRE先:

cd pcre-8.01
./configure --enable-utf8 --enable-unicode-properties --enable-pcregrep-libz --enable-pcregrep-libbz2
make
make install

开始安装PHP-FPM了:

svn co http://svn.php.net/repository/php/php-src/branches/PHP_5_3_FPM php_5_3_fpm
cd php_5_3_fpm
./buildconf

# 应该没什么错误,咱们就开始编译了
./configure --enable-fastcgi --enable-fpm \
--enable-force-cgi-redirect \
--with-gd --enable-gd-native-ttf \
--with-openssl --with-mcrypt --with-openssl-dir \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib \
--with-gettext=/usr/lib --with-curl=/usr/lib \
--with-curlwrappers --with-freetype-dir=/usr/lib \
--with-zlib --with-zlib-dir=/usr/include \
--enable-mbstring --enable-sockets \
--with-iconv-dir=/usr/local \
--with-libxml-dir=/usr --enable-xml \
--enable-discard-path --enable-bcmath \
--enable-shmop --enable-sysvsem \
--enable-inline-optimization --enable-mbregex \
--enable-pcntl --enable-ltdl-install \
--with-ldap --with-xmlrpc --enable-zip --enable-soap \
--with-mhash --enable-exif --enable-ftp \
--enable-gd-jis-conv --enable-calendar \
--enable-sqlite-utf8 --with-bz2 --with-gmp \
--with-mm --with-pspell --with-snmp --with-t1lib \
--with-tidy --with-ttf --with-xpm-dir \
--with-libevent=/usr/ --with-pear --enable-zend-multibyte \
--with-pdo-pgsql --with-pgsql

# 编译并安装
make
make install

安装完成后运行命令:
在编译安装PHP的时候,照上面config以后,make时会出错(undefined reference to libiconv_open'之类的),此时修改Makefile,查找EXTRA_LIBS = ..... -lcrypt,再最后面添加上 -liconv,然后运行make命令即可。
将php目录下的php.ini-production文件复制为/usr/local/lib/php.ini

cp php.ini-production /usr/local/lib/php.ini

可以用PCRE命令安装上memcache、zip和apc扩展,不过我喜欢用eaccelerator,所以APC就不装了,至于ZIP这个,发现和某个已经冲突了,虽然装了,但是没写到php.ini里面。

# 安装memcache扩展,用于启用wordpress的memcached支持。
pecl install memcache

上面其他两个安装方法也都一样,然后在php.ini中配置一下,编辑/usr/local/lib/php.ini文件。

  1. 首先修改配置 extension_dir 为 /usr/local/lib/php/extensions/no-debug-non-zts-20090626/ (注意:根据所安装php的版本和编译选项的不同,本设置可能不完全相同)。
  2. 在Dynamic Extensions 设置部分,加入下面的设置,载入zip, memcached和apc扩展,也就是在php.ini的下面自己添加上即可。

安装eaccelerator缓存器:

wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6-rc2.tar.bz2
tar jxf eaccelerator-0.9.6-rc2.tar.bz2
cd eaccelerator-0.9.6-rc2
phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config
make
make install

还是老样子,把eaccelerator.so添加到php.ini配置文件中即可,设置个目录放缓存,mkdir -p /var/cache/eaccelerator。
然后在php.ini添加eaccelerator.so,可以改成这样:

extension="eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

安装Zend Optimizer 目前还是未知数,支持 PHP 5.3 的还没出...
启动Nginx:

ulimit -SHn 51200
/usr/local/sbin/nginx

启动PHP-FPM:

/usr/local/sbin/php-fpm

配置Nginx和PHP-FPM开机自启动:

vi /etc/rc.local
# 在末尾添加内容

ulimit -SHn 51200
/usr/local/sbin/nginx
/usr/local/sbin/php-fpm

重新载入nginx和php配置命令

# 在不重新启动nginx的情况下重新载入nginx.conf文件
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

# 在不重启php-fpm的情况下重新载入php.ini
/usr/local/sbin/php-fpm reload

配置日志轮循

#!/bin/bash
# This script run at 4:38

# The Nginx logs path
logs_path="/usr/local/nginx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

将这个脚本路径/usr/local/nginx/sbin /cut_nginx_log.sh,用 chmod +x cut_nginx_log.sh将其设置为可执行,使用 crontab -e 命令编辑系统定时任务,将下面这一句加入其中。其中的设置 38 4 * * * 表示本程序每天4点38分定时运行。

38 4 * * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh

现在Nginx + PHP + MySQL就可以用用了,参数优化方面需要结合具体应用慢慢摸索。

给我留言

您必须 [ 登录 ] 才能发表留言!

×
#