服務器環境搭建

安裝&注意點

apt-get install build-essential(gcc基本環境) 
apt-get install gcc 

apt-get install g++

yum install gcc 

yum install gcc-c++


1.mysql

1.下載mysql源碼包

1.5 刪除殘留的mysql

刪除 mysql


sudo apt-get autoremove --purge mysql-server-5.1
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common (非常重要)

上面的其實有一些是多餘的,建議還是按照順序執行一遍

清理殘留數據
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

2.安裝依賴包 

cmake

wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
make
make install

3.

#添加 mysql 用戶組/用戶

groupadd mysql
useradd -r -g mysql mysql

配置編譯參數,開始編譯

/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci

#編譯安裝

make && make install

#設置目錄權限屬性

chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

#將 mysql 配置文件複製到系統的配置文件夾中

cp support-files/my-small.cnf /etc/my.cnf
chown mysql:mysql /etc/my.cnf
# 修改my.cnf的配置(略)


#數據庫初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#執行完全安裝腳本,(注:建議在生產中使用的服務器中對所有MySQL運行該腳本的所有部分!請仔細閱讀每一步!)
/usr/local/mysql/bin/mysql_secure_installation (注意mysql.sock的權限)

添加到系統服務&開機啓動

#將mysql的啓動服務添加到系統服務中
cp support-files/mysql.server /etc/init.d/mysql.server 
#現在可以使用下面的命令啓動mysql
service mysql.server start
#停止mysql服務
service mysql.server stop
#重啓mysql服務
service mysql.server restart 
#將mysql服務添加到開機啓動項,讓mysql服務開機啓動 
chkconfig --add mysql.server 
chkconfig --level 2345 mysql.server on

2.nginx

groupadd nginx #添加nginx 組

useradd -g nginx nginx -s /bin/false  #創建nginx運行賬戶www並加入到www組,不允許www用戶直接登錄系統


tar zxvf nginx-1.0.12.tar.gz

cd nginx-1.0.12


./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module --with-pcre=/data/soft/pcre-8.35 --with-openssl=/data/soft/openssl-1.0.1g --with-zlib=/data/soft/zlib-1.2.8


注意:--with-pcre/openssl/zlib   這三項指向的是源碼包解壓的路徑,而不是安裝的路徑,否則會報錯
make
make && install

3.php(php-fpm)

前戲、php常用擴展的軟件

yum -y install libtool

yum -y install zlib
yum -y install freetype
yum -y install libpng
yum -y install jpegsrc //
yum -y  install libpng-devel
yum -y install libjpeg-devel
yum -y install freetype-devel
yum -y install libxml2
yum -y install libxml2-devel
yum -y install pcre-devel
yum -y install curl
yum -y install curl-devel
yum -y install openssl

yum  install  php-mcrypt  libmcrypt  libmcrypt-devel

 

 
2、安裝 jpeg
wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/jpeg-6b.tar.gz
mkdir -p /usr/local/jpeg6
mkdir -p /usr/local/jpeg6/bin
mkdir -p /usr/local/jpeg6/lib
mkdir -p /usr/local/jpeg6/include
mkdir -p /usr/local/jpeg6/man
mkdir -p /usr/local/jpeg6/man1
mkdir -p /usr/local/jpeg6/man/man1
tar -zxf jpeg-6b.tar.gz
cd jpeg-6b
./configure –prefix=/usr/local/jpeg6 –enable-shared –enable-static
make
make install
安裝完成提示:
Libraries have been installed in:
/usr/local/jpeg6/lib
 
5、安裝 GD
wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/gd-2.0.33.tar.gz
tar -zxf gd-2.0.33.tar.gz
cd gd-2.0.33
mkdir -p /usr/local/gd2
./configure –prefix=/usr/local/gd2 –with-jpeg=/usr/local/jpeg6/ –with-png=/usr/local/lib/ –with-zlib=/usr/local/lib/ –with-freetype=/usr/local/freetype/
make
make install
 
./configure --enable-shared --enable-static 這些lib這種包用默認路徑就行。不然如果其他的需要這個包還得指它的路徑
這裏可能會出錯
checking host system type… Invalid configuration `x86_64-unknown-linux-gnu ‘: machine `x86_64-unknown ‘ not recognized
checking build system type… Invalid configuration `x86_64-unknown-linux-gnu ‘: machine `x86_64-unknown ‘ not recognized
configure: error: libtool configure failed
或者
/libtool --mode=compile gcc -O2 -I. -c ./jcapimin.c
make: ./libtool:命令未找到
make: *** [jcapimin.lo] 錯誤 127
./libtool --mode=compile gcc -O2 -I. -c ./cjpeg.c
make: ./libtool:命令未找到
make: *** [cjpeg.lo] 錯誤 127
解決方法
cp /usr/share/libtool/config/config.guess .
cp /usr/share/libtool/config/config.sub .
cp到jpeg的安裝文件目錄,注意後面的個“.”
make clean
再重新
./configure --prefix=/usr/local/libjpeg/ --enable-shared --enable-static
make
make install
--------------------------------
如果已經安裝php,建議通過追加編譯安裝
進入“[php解壓目錄]/ext/gd”目錄,執行如下命令:
[php安裝目錄]/bin/phpize
Java代碼
./configure --with-php-config=[php安裝目錄]/bin/php-config --with-jpeg=[jpeg-6b安裝目錄] --with-png=[libpng安裝目錄] --with-freetype=[freetype安裝目錄] --with-gettext=[gettext安裝目錄] --with-gd=[gd安裝目錄]
make
make install
安裝成功後會在“[php安裝目錄]/lib/php/extensions/no-debug-non-zts-20060613”目錄下生成gd.so文件,
然後cp [php安裝目錄]/lib/php/extensions/no-debug-non-zts-20060613/gd.so /opt/php/ext
修改php.ini文件加載gd組件,添加extension_dir=/opt/php/ext和extension=gd.so,如果有extension_dir=/opt/php/ext則不需要增加
Java代碼
extension_dir=/opt/php/ext
extension=gd.so

 

 

 

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl=/usr/lib --with-gd=/usr/local --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-safe-mode --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir=/usr/ 
 
// 裝PHP顯示gd 必須>= 2.1.0
// 安裝最新版gd庫ok
// 裝PHPconfigure OK,make時顯示缺少libxpm,需要裝libXmp-devel,yum中沒找到
// yum install gd
// --with-gd=/usr/local/ => --with-gd 自動找系統的gd庫路徑 OK了
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir

PHP5.4
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir --with-mcrypt --without-pear --without-pdo-sqlite

PHP5.5+
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --with-mysqli --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir --with-mcrypt --with-pdo-mysql --without-pdo-sqlite --without-pear --enable-opcache

ZTS 線程安全
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --with-mysqli --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir --with-mcrypt --with-pdo-mysql --without-pdo-sqlite --without-pear --enable-opcache --enable-maintainer-zts


確保
yum install openssl openssl-devel
才能裝上--with-openssl-dir

yum install httpd-devel for /usr/bin/apxs
--with-apxs=/usr/bin/apxs 可以編譯出libphp.so for apache

  • –enable-opcache:這個配置是在5.5中新增的。Zend Opcache已被集成到PHP 5.5的核心中,這個配置用於在你編譯PHP 5.5時啓用opcache。它默認是禁用的。

將命令加入系統環境變量
修改/etc/profile文件,添加
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin
export PATH
最後:執行 命令source /etc/profile或 執行點命令 ./profile使其修改生效,執行完可通過echo $PATH命令查看是否添加成功。

4.memcached

memcached -p 11211 -l 127.0.0.1 -d -u nobody -P /data/run/memcached/memcached.pid -m 64M -c 32

telnet localhost 11211

5.apache

啓用rewrite
LoadModule rewrite_module modules/mod_rewrite.so 

啓用.htaccess 
Options FollowSymLinks 
AllowOverride None 
改爲 
Options FollowSymLinks 
AllowOverride All 

6.redis

groupadd redis
useradd -g redis -d /home/redis -m redis
-g 指定所屬的用戶組
-d -指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
最後的-m之後的“redis” 是用戶名

以 redis 用戶身份運行
su redis -c "/path/to/redis-server /path/to/redis.conf"


服務的運維

1.apache

apache重啓
httpd -t

apachectl configtest
apache2ctl configtest
檢查配置文件

/var/www/bin/httpd -k restart

 

 

2.nginx

啓動:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
強制關閉:kill -9 nginx
平滑重啓:/usr/local/nginx/sbin/nginx -s reload

 

3.php-fpm

php 5.3.3 下的php-fpm 不 再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信號控制:

master進程可以理解以下信號

INT, TERM 立刻終止
QUIT 平滑終止
USR1 重新打開日誌文件
USR2 平滑重載所有worker進程並重新載入配置和二進制模塊

示例:
php-fpm 開啓:
{phpdir}/sbin/php-fpm
php-fpm 關閉:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重啓:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

 

4.mysql

10、只需本機使用Mysql服務,在啓動時還可以加上--skip-networking參數使Mysql不監聽任何TCP/IP連接
(./safe_mysqld --skip-networking &),增加安全性。(非常推薦)

 

1、通過rpm包安裝的MySQL

service mysqld restart

2、從源碼包安裝的MySQL

// linux關閉MySQL的命令

$mysql_dir/bin/mysqladmin -uroot -p shutdown

// linux啓動MySQL的命令

$mysql_dir/bin/mysqld_safe &

當MySQL啓動時,在沒有指定配置文件位置時,MySQL會按順序到下面一些路徑去讀取配置文件:
在unix環境下:
1. /etc/my.cnf
2. DATADIR/my.cnf
3. ~/.my.cnf
 
在Windows環境:
1. %SystemRoot%/my.ini
2. c:\my.cnf
 
也可以通過命令行參數來告訴MySQL要讀取的配置文件:
--no-defaults
沒有配置文件
 
--defaults-file=/PATH/TO/FILE
/PATH/TO/FILE 就是配置文件位置及文件名, 如D:\MySQL5\my.ini, 
讓MySQL只讀取這個配置文件,額外的配置文件可以通過下面的參數指定。
 
--defaults-extra-file=/PATH/TO/FILE
指定一個額外的配置文件
 
如在Windows環境下要安裝一個MySQL服務,即可使用如下命令行:
D:\MySQL5\bin\mysqld --install MySQL5 --defaults-file=D:\MySQL5\my.ini
 
如果%SystemRoot%/my.ini 裏指定了MySQL的端口是3306,而c:\my.cnf卻指定了是3308,那麼MySQL會以後者爲準。
注意:配置文件可以是多個,相同的設置,會以最後一個配置文件的設置爲準。
 
當需要在同一臺主機上運行多個MySQL Server的時候,可以把相同的設置寫在/etc/my.cnf裏,不同的設置保存在各自的DATADIR/my.cnf。

 

5.memcached

 

 

配置&調優

1.apache

2.nginx

3.php(php-fpm)

PHP5.3 起的fast-cgi進程管理方式:
;pm = dynamic
pm = static

如果設置成static,php-fpm進程數自始至終都是pm.max_children指定的數量,不再增加或減少。

如果設置成 dynamic,則php-fpm進程數是動態的,最開始是pm.start_servers指定的數量,如果請求較多,則會自動增加, 保證空閒的進程數不小於pm.min_spare_servers,如果進程數較多,也會進行相應清理,保證多餘的進程數不多於 pm.max_spare_servers。

這兩種不同的進程管理方式,可以根據服務器的實際需求來進行調整。

這裏先說一下涉及到這個的幾個參數,他們分別是pm、pm.max_children、pm.start_servers、pm.min_spare_serverspm.max_spare_servers

pm表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件的說明。

下面4個參數的意思分別爲:
pm.max_children:靜態方式下開啓的php-fpm進程數量。
pm.start_servers:動態方式下的起始php-fpm進程數量。
pm.min_spare_servers:動態方式下的最小php-fpm進程數量。
pm.max_spare_servers:動態方式下的最大php-fpm進程數量。

如果dm設置爲static,那麼其實只有pm.max_children這個參數生效。系統會開啓設置數量的php-fpm進程。如果dm設置爲 dynamic,那麼pm.max_children參數失效,後面3個參數生效。系統會在php-fpm運行開始 的時候啓動pm.start_servers個php-fpm進程,然後根據系統的需求動態在pm.min_spare_servers和 pm.max_spare_servers之間調整php-fpm進程數。

那麼,對於我們的服務器,選擇哪種執行方式比較好呢?事實上,跟Apache一樣,運行的PHP程序在執行完成後,或多或少會有內存泄露的問題。這也是爲什麼開始的時候一個php-fpm進程只佔用3M左右內存,運行一段時間後就會上升到20-30M的原因了。

對於內存大的服務器(比如8G以上)來說,指定靜態的max_children實際上更爲妥當,因爲這樣不需要進行額外的進程數目控制,會提高效 率。因爲頻繁開關php-fpm進程也會有時滯,所以內存夠大的情況下開靜態效果會更好。數量也可以根據 內存/30M 得到,比如8GB內存可以設置爲100,那麼php-fpm耗費的內存就能控制在 2G-3G的樣子。如果內存稍微小點,比如1G,那麼指定靜態的進程數量更加有利於服務器的穩定。這樣可以保證php-fpm只獲取夠用的內存,將不多的 內存分配給其他應用去使用,會使系統的運行更加暢通。

對於小內存的服務器來說,比如256M內存的VPS,即使按照一個20M的內存量來算,10個php-cgi進程就將耗掉200M內存,那系統的崩 潰就應該很正常了。因此應該儘量地控制php-fpm進程的數量,大體明確其他應用佔用的內存後,給它指定一個靜態的小數量,會讓系統更加平穩一些。或者 使用動態方式,因爲動態方式會結束掉多餘的進程,可以回收釋放一些內存,所以推薦在內存較少的服務器或VPS上使用。具體最大數量根據 內存/20M 得到。比如說512M的VPS,建議pm.max_spare_servers設置爲20。至於pm.min_spare_servers,則建議根據服 務器的負載情況來設置,比較合適的值在5~10之間。

 

4.mysql

5.memcached


可能出現的問題



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章