本帖最后由 huhuimike 于 2015-1-5 02:26 編輯
CenOS 6.3 + nginx 1.2.4 + PHP 5.4.8 + MySQL 5.5.28 完整配置 #阿里云64位系統(tǒng)無法 安裝GCC需要安裝kernel-headers庫 rpm -ivh kernel-headers-2.6.18-274.el5.x86_64.rpm
CenOS 6.3 + nginx 1.2.4 + PHP 5.4.8 + MySQL 5.5.28 + memcached 搞了好幾天,終于把新服務(wù)器的配置弄完了,現(xiàn)在貼出來,也做個備忘! 另外還有 subversion-1.7.7 我就單獨(dú)一篇來寫了額
1. 修改 SSH 連接顯示字符集 (可以忽略這一步,偶爾出現(xiàn)亂碼影響也不大的) # vi /etc/profile 添加: LANG=zh_CN.GB2312 export LANG 使環(huán)境變量生效 保存后 斷開 SSH 重新連接 # source /etc/profile 注意: 如果有添加這一步,在設(shè)置 mysql 密碼時會出現(xiàn)個 sql 編碼問題,需要注釋掉這里的設(shè)置斷開ssh后重連就可以了
2. 設(shè)置時區(qū) # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 同步時間 # /usr/bin/rdate -s rdate.darkorb.net 寫入 BIOS 避免失效 # hwclock -w 建議加入定時同步 # crontab -e # 0 0 * * * /usr/bin/rdate -s rdate.darkorb.net
3. 配置服務(wù)器 yum 國內(nèi)更新源地址 # cd /etc/yum.repos.d # mv CentOS-Base.repo CentOS-Base.repo.bak # yum makecache
4. 更新軟件和安裝依賴包 # sudo -s # LANG=C # yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers ntpd nmap patch cmake bison cgi* *-gd-* libtool-* gettext *libxml-devel libcurl-devel libevent libevent-devel net-snmp-devel lsof unzip 如果出現(xiàn)錯誤 如:Error: Package: glibc-headers-2.12-1.80.el6_3.4.x86_64 (updates)
5. 設(shè)置路徑 # vi /etc/ld.so.conf 添加: /usr/lib/ /usr/local/lib/ /usr/lib64/ /usr/local/lib64/
6. 最好重啟一次 # reboot
7. 開始安裝 nginx 新建保存下載軟件的目錄 # mkdir -p /mydata/soft # mkdir -p /var/www/html # cd /mydata/soft/ 下載:
7.1 利用 TCMalloc 優(yōu)化 nginx 性能 針對 64 位操作系統(tǒng)必須安裝 libunwind 庫 # tar zxvf libunwind-1.1.tar.gz # cd libunwind-1.1/ # CFLAGS=-fPIC ./configure # make CFLAGS=-fPIC # make CFLAGS=-fPIC install # cd ../
安裝 google-perftools 優(yōu)化 # tar zxvf gperftools-2.0.tar.gz # cd gperftools-2.0/ # ./configure # make && make install # echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf # /sbin/ldconfig # cd ..
7.2 安裝 pcre 使 nginx 支持 URL 重寫 # tar zxvf pcre-8.31.tar.gz # cd pcre-8.31 # ./configure # make && make install # cd ../
7.3 編譯安裝 nginx # tar zxvf nginx-1.2.4.tar.gz # cd nginx-1.2.4 # ./configure --prefix=/usr/local/nginx --with-google_perftools_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/mydata/soft/pcre-8.31 # make && make install #cd ../
# mkdir /tmp/tcmalloc # chmod 0777 /tmp/tcmalloc
7.4 添加用戶和組 # /usr/sbin/groupadd www # /usr/sbin/useradd -g www www
7.5 配置 nginx.conf # vi /usr/local/nginx/conf/nginx.conf 注意:要在 pid 下一行添加下面的代碼才能使優(yōu)化生效 google_perftools_profiles /tmp/tcmalloc;
示例:替換為以下內(nèi)容
user www www; worker_processes 4; worker_cpu_affinity 0001 0100 1000 0010;
error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 65535; google_perftools_profiles /tmp/tcmalloc;
events { worker_connections 65535; }
http { #include deny_ips.conf; include mime.types; default_type application/octet-stream; server_tokens off;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m;
sendfile on; tcp_nopush on; tcp_nodelay on;
keepalive_timeout 60;
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on;
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on;
include vhost/*.conf; }
7.6 啟動 nginx # ulimit -SHn 65535 # /usr/local/nginx/sbin/nginx
7.7 驗證google-perftools是否已經(jīng)正常加載 命令:
# lsof -n | grep tcmalloc 顯示如下: nginx 2395 nobody 9w REG 8,8 0 1599440 /tmp/tcmalloc.2395 nginx 2396 nobody 11w REG 8,8 0 1599443 /tmp/tcmalloc.2396 nginx 2397 nobody 13w REG 8,8 0 1599441 /tmp/tcmalloc.2397 nginx 2398 nobody 15w REG 8,8 0 1599442 /tmp/tcmalloc.2398 由于在Nginx配置文件中,設(shè)置worker_processes的值為4,因此開啟了4個Nginx線程,每個線程會有一行記錄。每個線程文件后面的數(shù)字值就是啟動的Nginx的PID值。 至此,利用TCMalloc優(yōu)化Nginx的操作完成。
7.8 優(yōu)化 nginx 內(nèi)核 # vi /etc/sysctl.conf 末尾添加: net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_syncookies = 1 net.core.somaxconn = 262144 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 刷新配置 # /sbin/sysctl -p
7.9 添加 nginx 的系統(tǒng)服務(wù) 中間的啟動腳本需要自己寫也可以在網(wǎng)站找找。配置好后自己要多測試。
7.10 添加各站點配置目錄 # cd /usr/local/nginx/conf # mkdir vhost
7.10.1 配置 localhost 站點 # vi vhost/localhost.conf 添加: server { listen 80; server_name localhost; index index.html index.php; root /var/www/html/;
#limit_conn crawler 20;
location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; #upload filesize limit #client_max_body_size 10m; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } }
8. 安裝 mysql 8.1 檢測是否之前有安裝過 rpm mysql包 查看系統(tǒng)是否有安裝過 MySQL 注意大小寫,如果mysql 不行就換MySQL # rpm -qa | grep mysql 顯示如:mysql-5.1.61-4.el6.x86_64 將搜索出的包名全部卸載:(nodeps表示強(qiáng)制刪除), 例如: # rpm -e --nodeps mysql-libs-5.1.61-4.el6.x86_64
8.2 下載 MySQL 相關(guān)軟件包 # cd /mydata/soft
8.3 新建 MySQL 用戶和組 # /usr/sbin/groupadd mysql # /usr/sbin/useradd -g mysql mysql
8.4 新建目錄并設(shè)置權(quán)限 # chmod +w /usr/local/mysql # chown -R mysql:mysql /usr/local/mysql # mkdir -p /var/mysql/data/ # mkdir -p /var/mysql/log/ # chown -R mysql:mysql /var/mysql/ # mkdir /home/mysql/temp # chown -R mysql:mysql /home/mysql/temp
8.5 開始安裝 MySQL # tar xvf mysql-5.5.28.tar.gz # cd mysql-5.5.28/ # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_USER=mysql \ -DMYSQL_DATADIR=/var/mysql/data
以上代碼合并為:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql-DMYSQL_DATADIR=/var/mysql/data
以上代碼安裝DiscuzX_gbk時,提示數(shù)據(jù)庫不支持GBK,使用下面代碼成功運(yùn)行 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=gbk -DDEFAULT_COLLATION=gbk_chinese_ci -DWITH_EXTRA_CHARSETS:STRING=gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql-DMYSQL_DATADIR=/var/mysql/data # make && make install
8.6 配置 my.cnf 文件 # cd support-files/ 注意:my-large.cnf 適用于1G內(nèi)存左右的服務(wù)器, 可以根據(jù)自己配置情況選用 my-large.cnf 或 my-huge.cnf 等不同配置 # cp my-huge.cnf /etc/my.cnf
之前這里 my.cnf 的路徑設(shè)置有問題(現(xiàn)已修改),導(dǎo)致沒有生效,今天關(guān)閉 innodb 時才發(fā)現(xiàn)。。 是放在 etc 下面才會生效的。。 參考配置:關(guān)閉 innodb,binlog 保存 30 天內(nèi)的 # vi /etc/my.cnf --------------------------------------忽略分隔線---------------------------------------
[client] port = 3306 socket = /usr/local/mysql/mysql.sock
[mysqld] character-set-server = utf8 replicate-ignore-db = mysql replicate-ignore-db = test replicate-ignore-db = information_schema user = mysql port = 3306 socket = /usr/local/mysql/mysql.sock basedir = /usr/local/mysql datadir = /var/mysql/data tmpdir = /home/mysql/temp log-error = /var/mysql/log/error.log pid-file = /var/mysql/mysql.pid open_files_limit = 10240 back_log = 200 max_connections = 1024 max_connect_errors = 1024 table_cache = 614 external-locking = FALSE max_allowed_packet = 32M sort_buffer_size = 4M join_buffer_size = 1M thread_cache_size = 300 thread_concurrency = 4 query_cache_size = 512M query_cache_limit = 2M query_cache_min_res_unit = 2k default-storage-engine = MyISAM thread_stack = 192K transaction_isolation = READ-COMMITTED tmp_table_size = 246M max_heap_table_size = 246M long_query_time = 3 log-slave-updates log-bin = /var/mysql/binlog/binlog binlog_cache_size = 4M binlog_format = MIXED max_binlog_cache_size = 8M max_binlog_size = 1G #relay-log-index = /var/mysql/relaylog/relaylog #relay-log-info-file = /var/mysql/relaylog/relaylog #relay-log = /var/mysql/relaylog/relaylog expire_logs_days = 30 key_buffer_size = 256M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover
interactive_timeout = 120 wait_timeout = 120
#skip-name-resolve slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2 #master-user = username #master-password = password #master-port = 3306
server-id = 1
skip-innodb
innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 512M innodb_data_file_path = ibdata1:256M:autoextend innodb_file_io_threads = 4 innodb_thread_concurrency = 8 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M innodb_log_file_size = 128M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 innodb_file_per_table = 0
slow-query-log = On slow-query-log-file = /var/mysql/log/slow.log long_query_time = 30
[mysqldump] quick max_allowed_packet = 32M
--------------------------------------忽略分隔線---------------------------------------
# cp mysql.server /etc/init.d/mysqld # cd ../../
8.7 初始化安裝數(shù)據(jù)庫 # /usr/local/mysql/scripts/mysql_install_db \ --defaults-file=/var/mysql/my.cnf \ --basedir=/usr/local/mysql \ --datadir=/var/mysql/data \ --user=mysql 原文加粗地方有錯,應(yīng)為:/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/var/mysql/data --user=mysql
8.8 將 mysql 加入開機(jī)啟動 # chmod +x /etc/init.d/mysqld # vi /etc/init.d/mysqld 查找并修改: basedir=/usr/local/mysql datadir=/var/mysql/data
8.9 添加為系統(tǒng)服務(wù) # chkconfig --add mysqld # chkconfig --level 2345 mysqld on
8.10 啟動mysql 設(shè)置 root 密碼 # service mysqld start # /usr/local/mysql/bin/mysqladmin -u root password "123456" 錯誤一: mysqladmin, mysql ... 命令無法執(zhí)行: # export PATH=/usr/local/mysql/bin  PATH 錯誤二: Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # yum install ncurses-devel
8.11 添加并發(fā)優(yōu)化 # vi /usr/local/mysql/bin/mysqld_safe 在 executing mysqld_safe 的下一行,加上: export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
啟動 mysql: # service mysqld restart 使用lsof命令查看tcmalloc是否起效: # /usr/sbin/lsof -n | grep tcmalloc 如果發(fā)現(xiàn)以下信息,說明tcmalloc已經(jīng)起效: mysqld 10847 mysql mem REG 8,5 1203756 20484960 /usr/local/lib/libtcmalloc.so.0.0.0
9. 開始安裝 PHP 9.1 下載 php 和相關(guān)軟件包 # cd /mydata/soft
9.2 安裝 php 相關(guān)的軟件 這部分代碼安裝過好多太服務(wù)器幾乎沒有什么問題,可以直接全部復(fù)制粘貼到ssh就好了,我就不打 # 號了
tar zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure --prefix=/usr/local make && make install cd ../
tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure make && make install /sbin/ldconfig cd libltdl/ ./configure --enable-ltdl-install make && make install cd ../../
tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9/ ./configure make && make install cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
ln -s /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1 ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 ln -sv /usr/lib64/libldap* /usr/lib/
tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ /sbin/ldconfig ./configure make && make install cd ../
9.3 新建擴(kuò)展配置目錄 # mkdir -p /usr/local/php/etc/php.d/
9.4 開始安裝 PHP 5.4.8 # tar xvzf php-5.4.8.tar.gz # cd php-5.4.8/ # ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-pdo-mysql=/usr/local/mysql/ --with-iconv-dir=/usr/local --enable-fpm \ --disable-phar --with-fpm-user=www --with-fpm-group=www --with-pcre-regex \ --with-config-file-scan-dir=/usr/local/php/etc/php.d \ --with-zlib --with-bz2 --enable-calendar --with-curl --enable-dba --with-libxml-dir \ --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir \ --enable-gd-native-ttf --enable-gd-jis-conv --with-mhash --enable-mbstring --with-mcrypt \ --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip \ --enable-bcmath --with-snmp --disable-ipv6 --with-xmlrpc --with-ldap --with-ldap-sasl --enable-exif \ --enable-soap --enable-pdo --with-pdo-mysql --enable-sysvsem --enable-inline-optimization --with-curlwrappers
以上代碼合并為:./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/ --with-iconv-dir=/usr/local --enable-fpm --disable-phar --with-fpm-user=www --with-fpm-group=www --with-pcre-regex --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-zlib --with-bz2 --enable-calendar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-mhash --enable-mbstring --with-mcrypt --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-xmlrpc --with-ldap --with-ldap-sasl --enable-exif --enable-soap --enable-pdo --with-pdo-mysql --enable-sysvsem --enable-inline-optimization --with-curlwrappers
# make ZEND_EXTRA_LIBS='-liconv' # make test # make install # cp php.ini-production /usr/local/php/etc/php.ini
# PATH=/usr/local/php/bin  PATH # PATH=/usr/local/php/sbin  PATH
提示: --enable-fastcgi --enable-force-cgi-redirect PHP 5.3以后已經(jīng)強(qiáng)制開啟了 fastcgi 了,具體查看官方說明: https:// bugs./bug.php?id=50840&edit=1 最下面 FastCGI is now always enabled and cannot be disabled. 錯誤: configure: error: Cannot find ldap libraries in /usr/lib. 解決辦法: ln -sv /usr/lib64/libldap* /usr/lib/
注意 make test 的時候可能會出現(xiàn) : /mnt/sun/php-5.4.8/sapi/cli/php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory 32位系統(tǒng) # ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18 64位系統(tǒng) # ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
9.5 開機(jī)啟動 php-fpm # cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm # chmod +x /etc/init.d/php-fpm # chkconfig --add php-fpm # chkconfig --level 2345 php-fpm on # cd ../
9.6 關(guān)于php-fpm 的操作說明與添加系統(tǒng)服務(wù) PHP5.3.3以上版本的php-fpm重啟、停止命令已經(jīng)不是php-fpm start|stop|reload了, 需要使用信號控制: 啟動腳本可參照網(wǎng)上。
9.7 安裝 PHP 擴(kuò)展 9.7.1 服務(wù)器版 memcached memcached 把我搞暈了,有兩個 memcached,我也不是很清楚具體區(qū)別, 按我的理解應(yīng)該是分為 服務(wù)器版 和 php 擴(kuò)展版 一開始用 服務(wù)器版來編譯 php 擴(kuò)展,搞了半天都沒弄出來,后來才發(fā)現(xiàn)居然有兩個,暈死了
安裝依賴包: # tar zxvf libevent-2.0.20-stable.tar.gz # cd libevent-2.0.20-stable # ./configure --prefix=/usr/local/libevent # make && make install # cd ../
# tar xvzf memcached-1.4.15.tar.gz # cd memcached-1.4.15 # ./configure --enable-64bit --enable-threads --with-libevent=/usr/local/libevent # make && make install # cd ../
檢測是否安裝成功: # ls -al /usr/local/bin/memcached # mkdir -p /var/run/memcached/
啟動 memcached: # /usr/local/bin/memcached -d -m 128 -u root -l 22.11.5.91 -p 11211 -c 256 -P /var/run/memcached/memcached.pid # ps aux|grep memcached
關(guān)閉 memcached: # kill `cat /var/run/memcached/memcached.pid`
新建啟動和關(guān)閉腳本并賦執(zhí)行權(quán)限: # cp memcached-1.4.15/scripts/memcached.sysv /etc/init.d/memcached # chmod 755 /etc/init.d/memcached
修改配置: # vi /etc/init.d/memcached 修改: PORT=11212 USER=root OPTIONS=""
查找: daemon memcached -d -p .... 修改為: daemon /usr/local/bin/memcached -d -p ....
添加下面兩行: chown $USER /usr/local/bin/memcached /usr/local/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcache/memcached.pid $OPTIONS
添加到系統(tǒng)服務(wù): # chkconfig --add memcached # chkconfig --level 2345 memcached on # chkconfig --list memcached
測試啟動 檢測 關(guān)閉: # service memcached start # ps aux|grep memcached # service memcached stop
開啟防火墻外網(wǎng)訪問(單機(jī)可忽略該設(shè)置): # iptables -I INPUT -p tcp --dport 11211 -j ACCEPT # iptables -I OUTPUT -p tcp --sport 11211 -j ACCEPT # iptables-save # service iptables save
9.7.2 安裝php擴(kuò)展版 memcached 依賴庫: # tar zxvf libmemcached-1.0.13.tar.gz # cd libmemcached-1.0.13 # ./configure --prefix=/usr/local/libmemcached # make && make install # cd ../
安裝 memcached # tar vxzf memcached-2.1.0.tgz # cd memcached-2.1.0 # /usr/local/php/bin/phpize # ./configure --enable-memcached --with-libmemcached-dir=/usr/local/libmemcached --with-php-config=/usr/local/php/bin/php-config # make && make install # cd ..
9.7.3 安裝 memcache # tar zxvf memcache-3.0.7.tgz # cd memcache-3.0.7/ # /usr/local/php/bin/phpize # ./configure --prefix=/usr/local/memcache --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir # make && make install # cd ../
9.7.4 安裝圖片處理軟件 可取代 gd # tar zxvf ImageMagick-6.8.0-4.tar.gz # cd ImageMagick-6.8.0-4/ # export CFLAGS='-fPIC' # ./configure --prefix=/usr/local/ImageMagick --with-quantum-depth=8 --enable-share --enable-static # make && make install # cd ../
# tar zxvf imagick-3.1.0RC2.tgz # cd imagick-3.1.0RC2/ # /usr/local/php/bin/phpize # export PKG_CONFIG_PATH=/usr/local/ImageMagick/lib/pkgconfig/ # ./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/ImageMagick # make && make install # cd ../
9.7.5 安裝 eaccelerator 給 php 編譯加速+緩存 # mv master eaccelerator-eaccelerator-42067ac.tar.gz # tar zxvf eaccelerator-eaccelerator-42067ac.tar.gz # cd eaccelerator-eaccelerator-42067ac/ # /usr/local/php/bin/phpize # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config # make && make install # cd ../
新建目錄: # mkdir /tmp/eaccelerator_cache # chmod 0777 /tmp/eaccelerator_cache
9.7.6 配置擴(kuò)展 打開自動掃描的擴(kuò)展目錄: # cd /usr/local/php/etc/php.d --------------------------------忽略分割線------------------------------
# vi eaccelerator.ini 寫入: [eaccelerator] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so" eaccelerator.shm_size="20" eaccelerator.cache_dir="/tmp/eaccelerator_cache" 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"
--------------------------------忽略分割線------------------------------
# vi memcache.ini 寫入: extension = "memcache.so" memcache.chunk_size = 32768
--------------------------------忽略分割線------------------------------
# vi memcached.ini 寫入: extension = "memcached.so"
--------------------------------忽略分割線------------------------------
# vi imagick.ini 寫入: extension = "imagick.so"
--------------------------------忽略分割線------------------------------
修改php配置:
# vi /usr/local/php/etc/php.ini 查找并修改: cgi.fix_pathinfo=0 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/" expose_php = Off allow_url_fopen = Off open_basedir = /tmp/:/var/www/ disable_functions = exec,system,passthru,chroot,scandir,chgrp,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server date.timezone = Asia/Shanghai
拷貝 php-fpm 配置: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf # vi /usr/local/php/etc/php-fpm.conf
查找并修改: 以下為示例數(shù)值,按自己服務(wù)器實際性能配置: pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 10240 rlimit_files = 65535
10. 設(shè)置開機(jī)啟動 # vi /etc/rc.local 寫入: ulimit -SHn 65535 service mysqld start service php-fpm start service memcached start service nginx start
以上教程是基礎(chǔ)環(huán)境的教程還需要在配置PHP的時候加于GD2擴(kuò)展不然你的SHOPNC在上傳商品圖片的時候會不顯示。安裝完后再加REDIS擴(kuò)展。并且用探針軟件檢查好各SHOPNC要求的函數(shù)是否支持。如果有問題可聯(lián)系。 
|