首發於:我是買家博客
作者:楊鑫奇
最近在公司搭建環境過程中收到各種的折磨,在這里整理了下,貼出來希望對大家有所幫助。文章有不足的地方請大家提醒我更正。
始終是超級小白鼠就來嘗試下最新的包的安裝,測試了好多次之后,終於安裝成功的了,現在安裝在本地的虛擬機上,安裝通過,現在拿的是linode的虛擬機做測試。安裝完成后記錄步驟如下,大家如果不是用Lnmp之類的自動安裝腳本,如果對於安裝細節不是很明白,可以建議自己動手操作一邊,明白現在所需要的相關的組件的安裝過程,也能更深入的了解系統的各個部分。
操作系統版本:Ubuntu 12.04 64bit
使用root賬號登陸系統,建立相關的目錄
下載存放路徑
/home/ubuntu/down
安裝目錄
/usr/local/php #install php-5.4.3
/usr/local/mysql #install mysql5.5.25
/usr/local/openresty #ngx_openresty-1.0.15.9
/usr/local/redis #2.4.14
存儲
/storage/redis
配置文件路徑:
php配置
/usr/local/php/etc/php/php.ini
/usr/local/php/etc/php/php-fpm.ini
nginx配置
/usr/local/openresty/nginx/conf
項目部署的代碼路徑,分項目在整個目錄下,這里其實有很多的混合的代碼,咋個組織比較好呢?
/source/
/source/restybuddy
安裝完系統之后,設置root權限
設置root賬戶
sudo passwd root #設置root的密碼
su – root #切換到root正好
替換服務器最近的源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
看屬於哪個國家,替換最快的源,這樣更新會更快些
更新服務器時間(這里有不同的時區可以自己更改)
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系統時間
apt-get install -y ntpdate
ntpdate -u pool.ntp.org
date
升級系統組件
apt-get update
apt-get autoremove -y
apt-get -fy install
apt-get install -y build-essential gcc g++ make
for packages in build-essential gcc g++ make automake autoconf re2c wget cron bzip2 libzip-dev libc6-dev file rcconf flex vim nano bison m4 gawk less make cpp binutils diffutils unzip tar bzip2 libbz2-dev unrar p7zip libncurses5-dev libncurses5 libncurses5-dev libncurses5-dev libtool libevent-dev libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlibc openssl libsasl2-dev libxml2 libxml2-dev libltdl3-dev libltdl-dev libmcrypt-dev libmysqlclient15-dev zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libglib2.0-0 libglib2.0-dev libpng3 libfreetype6 libfreetype6-dev libjpeg62 libjpeg62-dev libjpeg-dev libpng-dev libpng12-0 libpng12-dev curl libcurl3 libmhash2 libmhash-dev libpq-dev libpq5 gettext libncurses5-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libxml2-dev zlib1g-dev libfreetype6 libfreetype6-dev libssl-dev libcurl3 libcurl4-openssl-dev libcurl4-gnutls-dev mcrypt libcap-dev;
do apt-get install -y $packages –force-yes;apt-get -fy install;apt-get -y autoremove; done
安裝語言包
apt-get install language-pack-zh-hans language-pack-zh-hant
服務器支持中文,如果代碼里面有中文,可以設置下,也可以不設置
export LC_ALL=”zh_CN.UTF-8″
如果是虛擬機上安裝vitualbox tools
現在我們還要到客戶機操作系統下,我的是ubuntu下,運行一個命令行控制 台,通過命令將虛擬光驅掛載進來。
mkdir /mnt/cdrom //創建cdrom目錄
mount /dev/cdrom /mnt/cdrom //掛載cdrom
下面進入cdrom,運行虛擬光盤上 VBoxLinuxAdditions.run(注意:如果客戶機是windows,則需要運行VBoxLinuxAdditions.exe):
cd /mnt/cdrom
sh ./VBoxLinuxAdditions.run
虛擬機上設置網卡
1.配置成nat根據本機來上網
2.設置成host-only然后mac下virtual box有問題,先在偏好設置里面添加一個host之后就好了,添加了host 192.168.56.1 這里啟用了dhcp但是虛機獲取不到還是有問題的。
配置后了之后,需要設置虛機里面的ip,192.168.56.2 之后設置完成就可以通過主機和虛機都可以訪問了
3.至此就可以長期的開着的了。
配置多個網卡ip
vim /etc/network/interfaces
添加
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.56.3
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gatway 192.168.56.1
重起網卡
/etc/init.d/networking restart
安裝JRE
sudo apt-get install openjdk-7-jre-headless
配置開機啟動
支持securecrt上傳用的(我這里沒有在WIN下所以沒有安裝)
sudo apt-get install chkconfig
sudo apt-get install cmake
sudo apt-get install libncurses5-dev
sudo apt-get install bison
安裝git
apt-get install -y git
安裝svn
apt-get install -y subversion
設置默認語言及LC
vim ~/.bashrc 添加
export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C
source ~/.bashrc
配置 ssh自動登陸ubuntu
生成rsa_pub
ssh-keygen -t rsa
如果用戶名和目標機器用戶名不一樣,請修改一下文件
vim ~/.ssh/config
添加,多個多行:
Host 192.168.56.3
user ubuntu
復制authorized的key,可以復制多次:
cat ~/.ssh/id_rsa.pub | ssh ubuntu@192.168.56.3 “cat >> ~/.ssh/authorized_keys”
接下來就可以之間
ssh ubuntu@192.168.56.3 自動登陸
安裝MySQL 5.5.25
apt-get install bar
apt-get install libncurses5-dev
groupadd mysql
useradd -s /sbin/nologin -g mysql mysql
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/
tar zxvf myql-5.5.25.tar.gz
mv mysql-5.5.25 mysql
cd mysql-5.5.25
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql/ -DSYSCONFDIR=/usr/local/mysql/etc/ -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_SSL=bundled -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -LH
make
make install
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
sudo install -m644 /usr/local/mysql/support-files/my-medium.cnf ./etc/my.cnf
sudo /usr/local/mysql/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data
sudo install -m755 /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo ln -s /usr/local/mysql/bin/mysql /usr/bin/
sudo ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/
sudo ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin/
sudo ln -s /usr/local/mysql/bin/mysql_conf /usr/bin/
sudo ln -s /usr/local/mysql/share/mysql/mysql.server /usr/bin/
vim ./etc/my.cnf
在[mysqld] 下添加
datadir = /usr/local/mysql/data
language= /usr/local/mysql/share/english #此處為language配置項
/etc/init.d/mysqld start
給mysql設置root命令
mysqladmin -h 127.0.0.1 -u root password 123456
/etc/init.d/mysqld status
嘗試登陸看看
./mysql -u root -p
use mysql;
update user set Host=”%” where User=”root” and Host=”localhost”;
需要修改my.cnf配置中添加bind_address
設置開機自動啟動
update-rc.d mysqld defaults
查看是否設置成功 chkconfig -list mysqld
安裝MySQL 5.1.63
groupadd mysql
useradd -g mysql mysql
mkdir -p /usr/local/mysql5001
mkdir -p /usr/local/mysql5001/data
mkdir -p /usr/local/mysql5001/etc
./configure –prefix=/usr/local/mysql5001/ –localstatedir=/usr/local/mysql5001/data/ –sysconfdir=/usr/local/mysql5001/etc/ –with-charset=utf8
make
make install
chown -R root:mysql /usr/local/mysql5001
chown -R mysql:mysql /storage/mysql5001
chown -R mysql:mysql /usr/local/mysql5001/lib
cd /usr/local/mysql5001/bin
cp /usr/local/mysql5001/share/mysql/mysql.server /etc/init.d/mysqld5001
cp /usr/local/mysql5001/share/mysql/my-medium.cnf /usr/local/mysql5001/etc/my.cnf
./mysql_install_db –user=mysql
./mysql -u root -P 5001 -p
use mysql;
update user set Host=”%” where User=”root” and Host=”localhost”;
flush privileges;
安裝PHP 5.4.3
apt-get install php5-gd
apt-get install libxpm-dev
apt-get build-dep t1lib
apt-get install libxslt-dev
apt-get install libt1-dev
apt-get install libmysql++-dev
./configure –prefix=/usr/local/php \
–with-config-file-path=/usr/local/php/etc \
–with-curl \
–with-pear \
–with-gd \
–with-jpeg-dir –with-png-dir –with-zlib \
–with-freetype-dir –with-t1lib \
–with-mcrypt \
–with-mhash \
–with-mysql –with-mysqli \
–with-pdo-mysql –with-openssl \
–with-xmlrpc \
–with-xsl \
–with-bz2 \
–with-gettext \
–with-fpm-user=www-data –with-fpm-group=www-data –enable-fpm \
–enable-exif \
–enable-wddx \
–enable-zip \
–enable-bcmath \
–enable-calendar \
–enable-ftp \
–enable-mbstring \
–enable-soap \
–enable-sockets \
–enable-shmop \
–enable-dba \
–enable-sysvmsg \
–enable-sysvsem \
–enable-sysvshm
make && make install
添加PHP的路徑到path
vim ~/.bashrc
export PATH=”$PATH:/usr/local/php/bin:/usr/local/php/sbin”
source /etc/profile
准備PHP5的日志文件目錄:
mkdir -p /usr/local/php/logs/php-fpm
chown -R www-data:www-data /usr/local/php/logs/php-fpm
准備PHP的配置文件:
cp -f php.ini-production /usr/local/php/etc/php.ini
chmod 644 /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
注意: PHP5的配置文件在/usr/local/php/etc/php.ini, php-fpm的配置文件在/usr/local/php/etc/php-fpm.conf.
設置php-fpm啟動管理文件,並讓PHP在ubuntu啟動時自動運行(下面地sapi是PHP5.4.0安裝包中的):
cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
設置開機啟動
update-rc.d -f php-fpm defaults
vim /usr/local/php/etc/php.ini
添加php.ini中的error_log
error_log = /usr/local/php/logs/
安裝PHP5.3
./configure –prefix=/usr/local/php –enable-fpm –with-fpm-user=www-data –with-fpm-group=www-data –with-curl –with-mcrypt –enable-mbstring –enable-pdo –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd –with-mysql=mysqlnd –with-openssl –with-imap-ssl –with-gd –with-jpeg-dir=/usr/lib/ –with-png-dir=/usr/lib/ –enable-exif –enable-zip
make
make install
自己編譯nginx
查看nginx的版本及配置信息
Nginx -V
配置Nginx
apt-get install schedutils
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
aptitude install geoip-database
groupadd www
useradd -g www www
apt-get install libpcre3 libpcre3-dev openssl libssl-dev gcc automake make
wget http://luajit.org/download/LuaJIT-2.0.0-beta9.tar.gz
make && make install
配置文件
./configure –prefix=/usr/local/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/Logs/nginx/error.log \
–http-client-body-temp-path=/Temps/nginx/body –http-fastcgi-temp-path=/Temps/nginx/fastcgi \
–http-log-path=/Logs/nginx/access.log –http-proxy-temp-path=/Temps/nginx/proxy \
–http-scgi-temp-path=/Temps/nginx/scgi –http-uwsgi-temp-path=/Temps/nginx/uwsgi –lock-path=/Locks/nginx.lock \
–pid-path=/Pids/nginx.pid –with-debug –with-http_addition_module –with-http_dav_module \
–with-http_gzip_static_module –with-http_realip_module –with-http_stub_status_module \
–with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-ipv6 –with-sha1=/usr/include/openssl \
–with-md5=/usr/include/openssl –with-mail –with-mail_ssl_module \
–add-module=/Packages/nginx_modules/ngx_devel_kit \
–add-module=/Packages/nginx_modules/lua-nginx-module \
–add-module=/Packages/nginx_modules/lua-resty-memcached \
–add-module=/Packages/nginx_modules/lua-resty-mysql \
–add-module=/Packages/nginx_modules/lua-resty-redis
–with-http_image_filter_module \
–with-http_geoip_module
make make install
安裝Nginx擴展模塊
1. 使用參數重新配置:
./configure –prefix=/app/nginx -user=nobody -group=nobody –with-http_stub_status_module \
–with-http_ssl_module –with-http_realip_module \
–add-module=../nginx_upstream_hash-0.3.1/ \
–add-module=../gnosek-nginx-upstream-fair-2131c73/
2. 編譯:
make
#不要make install,否則就是覆蓋安裝
3. 替換nginx二進制文件:
cp /app/nginx/sbin/nginx /app/nginx/sbin/nginx.bak
cp ./objs/nginx /app/nginx/sbin/
nginx的第三方的插件
http://wiki.nginx.org/3rdPartyModules
日志處理
http://www.xmydlinux.org/201105/493.html 啟動配置
http://addcn.blogbus.com/logs/107131815.html 腳本
http://longzhiyi.blog.51cto.com/350171/822159 nginx處理cookie
http://linuxcommand.org/man_pages/logrotate8.html log輪詢
http://www.5ilinux.com/2011/12/nginx-logrotate.html 詳細log輪詢配置
咋個安裝nginx的模塊的內容
http://www.dewen.org/q/655/%E5%A6%82%E4%BD%95%E5%8D%95%E7%8B%AC%E6%B7%BB%E5%8A%A0nginx%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97
LUA語言
http://blog.csdn.net/hong201/article/category/531338
安裝OpenResty套件,本次選擇agentzh大俠做的,省去上面配置的麻煩
apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl
./configure –with-luajit
make
make install
默認安裝到/usr/local/openresty/目錄下
nginx.conf中有配置文件錯誤的時候也會出錯的。導致無法route
安裝全文檢索coreseek/sphinx
wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
tar zxvf coreseek-4.1-beta.tar.gz
cd mmseg-3.2.14
./bootstrap #輸出的warning信息可以忽略,如果出現error則需要解決
./configure –prefix=/usr/local/mmseg3
make && make install
cd ..
##安裝coreseek
cd csft-4.1
sh buildconf.sh #輸出的warning信息可以忽略,如果出現error則需要解決
./configure –prefix=/usr/local/coreseek –without-unixodbc –with-mmseg –with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg3/lib/ –with-mysql ##如果提示mysql問題,可以查看MySQL數據源安裝說明
make && make install
cd ..
編譯安裝mysql 5.1-*的sphinxse引擎:
1. 在MySQL源碼目錄中建立storage/sphinx目錄,並將Sphinx源碼目錄中的mysqlse目錄下的全部文件拷貝到這個目錄。示例:
mkdir -p /home/yangxinqi/down/mysql-5.1.57/storage/sphinx
cp -R /home/yangxinqi/down/coreseek-4.1-beta/csft-4.1/mysqlse/* /home/yangxinqi/down/mysql-5.1.57/storage/sphinx
2. 在MySQL源碼目錄運行
sh BUILD/autorun.sh
3. 配置(configure)MySQL,啟用Sphinx引擎,prefix指定安裝到所在的目錄
./configure –with-plugins=sphinx –prefix=/usr/local/mysql5004
4. 構建(build)並安裝MySQL
make
make install
編譯安裝mysql 5.5系列的sphinx引擎
cd mysql-5.5.25
mkdir ./storage/sphinx
cp -r /home/ubuntu/down/coreseek-4.1-beta/csft-4.1/mysqlse/* ./storage/sphinx
cmake . -DCMAKE_BUILD_TYPE=Release -DWITH_SPHINX_STORAGE_ENGINE=1
make
cp storage/sphinx/ha_sphinx.so /usr/local/mysql/lib/plugin
mysql -uroot -p
mysql>install plugin sphinx soname “ha_sphinx.so”;
mysql>show engines;
安裝redis
1、下載安裝Redis:cd /tmp
wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz
tar -zxf redis-2.4.6.tar.gz
cd redis-2.4.6
make
make PREFIX=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/bin
2. 配置init腳本:wget https://github.com/ijonas/dotfiles/raw/master/etc/init.d/redis-server
wget https://github.com/ijonas/dotfiles/raw/master/etc/redis.conf
sudo mv redis-server /etc/init.d/redis-server
sudo chmod +x /etc/init.d/redis-server
sudo mv redis.conf /etc/redis.conf
3. 初始化用戶和日志路徑第一次啟動Redis前,建議為Redis單獨建立一個用戶,並新建data和日志文件夾
sudo useradd redis
sudo mkdir -p /var/lib/redis
sudo mkdir -p /var/log/redis
sudo chown redis.redis /var/lib/redis
sudo chown redis.redis /var/log/redis
4、設置開機自動啟動,關機自動關閉update-rc.d redis-server defaults
5、啟動Redis:
/etc/init.d/redis-server start
安裝scws分詞組件
wget http://www.ftphp.com/scws/down/scws-1.2.0.tar.bz2
tar xvf scws-1.2.0.tar.bz2
./configure –prefix=/usr/local/scws
make
make install
安裝scws的php擴展
cd phpext
phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install
vim /usr/local/php/etc/php.ini
extensiton=scws.so
安裝phpredis
wget https://github.com/nicolasff/phpredis/zipball/master
unzip master
cd nicolasff-phpredis-f1231c9
phpize
./configure -with-php-config=/usr/local/php/bin/php-config
make && make install
vim /usr/local/php/etc/php.ini
extension=redis.so
安裝phpunit
cd /usr/local/php/bin #如果不是root,請使用sudo ./pear ….
pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear install phpunit/PHPUnit
安裝vim ide (喜歡的可以安裝,個人感覺還不錯)
http://code.google.com/p/vimide/wiki/GuideCn
sudo apt-get install exuberant-ctags wget unzip
svn checkout http://vimide.googlecode.com/svn/trunk/linux vimide
cd vimide/
sh install.sh
vim /root/.vimrc
map <silent><F3> <ESC>:NERDTreeToggle<CR
FastDFS配置
編譯錯誤的時候需要找到libpthread.a的位置
/usr/lib/x86_64-linux-gnu/libpthread.a
http://blog.csdn.net/chen861201/article/details/7341637
find / -name ‘libpthread.so’
/usr/lib/x86_64-linux-gnu/libpthread.so
按照后配置
1. extension = fastdfs_client.so
2. fastdfs_client.tracker_group_count = 1
3. fastdfs_client.tracker_group0 = /etc/fdfs/client.conf
然后修改client.conf 中的traceserver的地址就好了
http://code.google.com/p/fastdfs/
這里是支持的地方
http://bbs.chinaunix.net/forum.php?mod=forumdisplay&fid=240&page=1
可以直接部署nginx+fastdfs進行存儲,還是很方便的
安裝memcached
wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
./configure –prefix=/usr/local/memcached
/usr/local/memcached/bin/memcached -m 64 -p 11211 -u ubuntu -l 127.0.0.1 &
telnet 127.0.0.1 11211
安裝php memcachd擴展
wget https://launchpad.net/libmemcached/1.0/1.0.6/+download/libmemcached-1.0.6.tar.gz
sudo apt-get install libcloog-ppl0
make && make install
wget http://pecl.php.net/get/memcached-2.0.1.tgz
tar zxvf memcached-2.0.1.tgz
cd memcached-2.0.1
phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install
vim /usr/local/php/etc/php.ini
extension=memcached.so
/etc/init.d/php-fpm restart
memcat –servers=127.0.0.1:11211
輸出的為 memcached 服務器的一些統計數據等。
一些維護工具的文章
安裝ClusterShell服務器運維工具
sudo apt-get install clustershell
http://huoding.com/2011/11/12/133
MYSQL高可用性方案
http://code.google.com/p/mysql-master-ha/
需要系統開機啟動的則可以加入到chkconfig 或者 加入到 /etc/init.d/rc.local中開機自動啟動
禁用ROOT,這樣會更安全
將ubuntu加入到root
chmod u+w /etc/sudoers
vim /etc/sudoers
添加
loginusername ALL=(ALL) ALL
chmod u-w /etc/sudoers
完成后禁用root