Centos + nginx1.3.9 + php5.4.9 + mysql5.5.28 + memcached 1: install Nginx 1 and add a user who cannot log on and does not have a home directory:
# Useradd www-M-s/sbin/nologin (nginx can be used for www, indicating nginx users)
2. necessary components
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.13.zip# unzip pcre-8.13.zip# cd pcre-8.13# ./configure# make && make install
(If there is an error message:
./Configure: error: the HTTP rewrite module requires the PCRE library.
Follow the steps below to install pcre-devel and openssl-devel to solve the problem.
yum -y install pcre-devel openssl openssl-devel)
MGB, a problem occurs during installation. make: *** No rule to make targetbuild ', needed bydefault'. Stop. it is an inexplicable wonder;
Install make:
yum -y install gcc automake autoconf libtool make
Install g ++:
yum install gcc gcc-c++yum -y install openssl openssl-devel
3. Compile and install nginx
# Tar-zxvf nginx-1.3.9.tar.gz # D nginx-1.3.9 #. /configure -- prefix =/opt/nginx -- user = www -- group = www -- with-http_stub_status_module -- with-http_ssl_module -- with-pcre =/usr/local/src/pcre-8.34 # make & make install -- The path after with-pcre is the path after the source code package is decompressed, instead of the installation path. Otherwise, an error is reported!
[2]. install PHP 1 and install necessary components
# Yum-y install libjpeg-devel libpng-devel # wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.8.tar.gz (download, this path is not necessarily correct and can be downloaded through other methods) # tar-zxvf libmcrypt-2.5.8.tar.gz # cd libmcrypt-2.5.8 #. /configure # make & make install
= 64-bit system =
ln -s /usr/lib64/mysql/ /usr/lib/mysql
= 64-bit system =
2. Compile and install php
# Cd php-5.4.9 #. /configure -- prefix =/opt/php -- with-iconv -- with-zlib -- enable-xml -- disable-rpath -- enable-safe-mode -- enable-bcmath -- enable-shmop -- enable-sysvsem -- enable-inline-optimization -- with-curl -- with-curlwrappers -- enable-mbregex -- enable-mbstring -- with-mcrypt = 'installation directory for libmcrypt '--- gd -- enable-gd-native-ttf -- with-openssl -- with-mhash -- enable-pcntl -- enable-sockets -- with-xmlrpc -- enable-zip -- enable-soap --- pear -- with-mysql -- with-mysqli -- enable-sqlite-utf8 -- with-pdo-mysql -- enable-ftp -- with-jpeg-dir -- with-freetype-dir -- with-png-dir -- enable-fpm -- with-fpm-user = www -- with-fpm-group = www # make & make install
Troubleshooting:
Checking for cURL in default path... not found
Configure: error: Please reinstall the libcurl distribution-easy. h shoshould be in/include/curl/
In fact, the dev package of curl is not installed. Solution: under the terminal
# yum -y install curl-devel
Then you can continue.
When you compile PHP5 in CentOS, you may encounter the following errors. basically, you can install the corresponding libraries using yum. The following are some specific solutions:
Checking for BZip2 support... Yes checking for BZip2 in default path... Not found configure: error: Please reinstall the BZip2 distribution
Fix: yum install bzip2-devel
Checking for cURL support... Yes checking if we shocould use cURL for url streams... No checking for cURL in default path... Not found configure: error: Please reinstall the libcurl distribution? Easy. h shoshould be in/include/curl/
Fix: yum install curl-devel
Checking for curl_multi_strerror in-lcurl... Yes checking for QDBM support... No checking for GDBM support... No checking for NDBM support... No configure: error: DBA: cocould not find necessary header file (s ).
Fix: yum install db4-devel
Checking for fabsf... Yes checking for floopen-end... Yes configure: error: Invalid Lib. h not found.
Fix: yum install libjpeg-devel
Checking for fabsf... Yes checking for floopen-end... Yes checking for pai_read_header in-ljpeg... Yes configure: error: png. h not found.
Fix: yum install libpng-devel
Checking for png_write_image in-lpng... Yes If configure fails try? With-xpm-dir = configure: error: freetype. h not found.
Fix: Reconfigure your PHP with the following option. -- with-xpm-dir =/usr
Checking for png_write_image in-lpng... Yes configure: error: libXpm. (a | so) not found.
Fix: yum install libXpm-devel
Checking for bind_textdomain_codeset in-lc... Yes checking for gnu mp support... Yes configure: error: Unable to locate gmp. h
Fix: yum install gmp-devel
Checking for utf8_mime2text signature... New checking for U8T_DECOMPOSE... Configure: error: utf8_mime2text () has new signature, but U8T_CANONICAL is missing. This shocould not happen. Check config. log for additional information.
Fix: yum install libc-client-devel
Checking for LDAP support... Yes, shared checking for LDAP Cyrus SASL support... Yes configure: error: Cannot find ldap. h
Fix: yum install openldap-devel
Checking for mysql_set_character_set in-lmysqlclient... Yes checking for mysql_stmt_next_result in-lmysqlclient... No checking for Oracle Database OCI8 support... No checking for unixODBC support... Configure: error: ODBC header file '/usr/include/sqlext. h' not found!
Fix:
Yum install unixODBC-devel
Checking for PostgreSQL support for PDO... Yes, shared checking for pg_config... Not found configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
Fix: yum install postgresql-devel
Checking for sqlite 3 support for PDO... Yes, shared checking for PDO implements des... (Cached)/usr/local/src/php-5.3.7/ext checking for sqlite3 files in default path... Not found configure: error: Please reinstall the sqlite3 distribution
Fix: yum install sqlite-devel
Checking for utsname. domainname... Yes checking for PSPELL support... Yes configure: error: Cannot find pspell
Fix: yum install aspell-devel
Checking whether to enable ucd snmp hack... Yes checking for default_store.h... No checking for kstat_read in-lkstat... No checking for snmp_parse_oid in-lsnmp... No checking for init_snmp in-lsnmp... No configure: error: SNMP sanity check failed. Please check config. log for more information.
Fix: yum install net-snmp-devel
Checking whether to enable XMLWriter support... Yes, shared checking for xml2-config path... (Cached)/usr/bin/xml2-config checking whether libxml build works... (Cached) yes checking for XSL support... Yes, shared configure: error: xslt-config not found. Please reinstall the libxslt> = 1.1.0 distribution
Fix: yum install libxslt-devel
Configure: error: xml2-config not found. Please check your libxml2 installation.
Fix: yum install libxml2-devel
Checking for PCRE headers location... Configure: error: cocould not find pcre. h in/usr
Fix: yum install pcre-devel
Configure: error: Cannot find MySQL header files under yes. Note that the MySQL client library is not bundled anymore!
Fix: yum install mysql-devel
Checking for unixODBC support... Configure: error: ODBC header file '/usr/include/sqlext. h' not found!
Fix: yum install unixODBC-devel
Checking for pg_config... Not found configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path
Fix:
Yum install postgresql-devel
Configure: error: Cannot find pspell
Fix: yum install pspell-devel
Configure: error: cocould not find net-snmp-config binary. Please check your net-snmp installation.
Fix: yum install net-snmp-devel
Configure: error: xslt-config not found. Please reinstall the libxslt> = 1.1.0 distribution
Fix: yum install libxslt-devel
3. copy and modify the php configuration file
# Cp php. ini-production/opt/php/lib/php. ini or/usr/local/lib/php. ini # cp/opt/php/etc/php-fpm.conf.default/opt/php/etc/php-fpm.conf #/opt/php/bin/php -- ini // test whether the ini file is loaded
Modify php. ini
[PHP]safe_mode = Onregister_globals = Offmagic_quotes_gpc = Offallow_url_fopen = Offallow_url_include = Offexpose_php=Offdisable_functions = shell_exec,system,exec,passthru,show_source,curl_exec,curl_multi_exec,get_cfg_var[Date]date.timezone = “Asia/Shanghai”
Modify php-fpm.conf
[Global] pid = run/php-fpm.piderror_log = log/php-fpm.loglog_level = noticeemergency_restart_threshold = 0emergency_restart_interval = 0 [www] pm. start_servers = 20pm. min _spare_servers = 5. max_spare_servers = 35 (cannot be greater than max_children) pm. max_requests = 500
4. add a service startup script
# cp nginx /etc/init.d/nginx# cp php-fpm /etc/init.d/php-fpm# chmod 755 /etc/init.d/nginx# chmod 755 /etc/init.d/php-fpm# chkconfig --add nginx# chkconfig --add php-fpm# chkconfig nginx on# chkconfig php-fpm on
3. install Mysql 3.1 and create the mysql installation directory.
mkdir -p /opt/mysql/
3.2. create a data storage directory
mkdir -p /data/mysql/
3.3 Create users and user groups and grant data storage directory permissions
# useradd mysql -M -s /sbin/nologin# chown mysql.mysql -R /data/mysql/
3.4 install necessary components
# yum -y install cmake# yum -y install ncurses-devel
3.5. Compile and install Mysql
tar -zxvf mysql-5.5.28.tar.gz cd mysql-5.5.28cmake . -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306# make && make install
After the installation, the mysql server runs normally, but the gbk character set cannot be used. The system has Chinese support installed, and mysql cannot be reinstalled several times.
There is no gbk in the show character set;
If set names gbk is set, an error is returned. #1115-Unknown character set: 'gbk'
Solution:
The preceding compilation parameter-DWITH_EXTRA_CHARSETS: STRING = utf8, the gbk parameter causes problems. Method 1. remove this parameter, the default value is charset that supports all. Method 2: directly change to-DWITH_EXTRA_CHARSETS = all. after the-DDEFAULT_COLLATION = utf8_general_ci option is added, mysql may be started. add the cnf file [mysqld] to character_set_server = utf8
3.6 initialize the database
# cd /opt/mysql# scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/data/mysql/
3.7. configure the environment
# Cp support-files/my-medium.cnf/etc/my. cnf (my. the memory size of the cnf reference server is generally 256 M in my-medium.cnf and 512 M in my-large.cnf) # cp support-files/mysql. server/etc/init. d/mysql # chmod 755/etc/init. d/mysql # chkconfig mysql on # export PATH =/opt/mysql/bin: $ PATH // Set the environment variable
3.8. start and set the initial password
# /etc/init.d/mysql start# mysqladmin -uroot password '123123'
Statement for modifying the password
1: UPDATE mysql. user SET Password = PASSWORD ('newpwd') WHERE User = 'root'; (New Password) 2: flush privileges; (refresh permission)
Note: the mysql log file is saved under/data/mysql/and corresponds to the path (for example,. err) of the data file ).
4. install memcached. 1. download libevent and memcached.
http://memcached.googlecode.com/files/memcached-1.4.13.tar.gzhttps://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
2. install libevent
tar -zxvf libevent-2.0.18-stable.tar.gzcd libevent-2.0.18-stable./configure --prefix=/usr/local/libeventmake && make installcd ../
3. install memcached
tar -zxvf memcached-1.4.13.tar.gzcd memcached-1.4.13./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/make && make installcd ..
4: install PHP extension for Memcache
(1). select the memcache version you want to download in the http://pecl.php.net/package/memcache. (2) install the memcache extension of PHP
tar vxzf memcache-2.2.6.tar.gz cd memcache-2.2.6/usr/local/php/bin/phpize ./configure ?enable-memcache ?with-php-config=/usr/local/php/bin/php-config ?with-zlib-dir make make install
(3) after the above installation is complete, a message similar to this will be displayed:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
(4) modify extension_dir = "./" in php. ini
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/”
(5) add a row to load the memcache extension: extension = memcache. so
5. start and add a startup item
/usr/local/memcached/bin/memcached -d -l 192.168.1.2 -u www -m 512 -c 10240 -p 12000 -P /tmp/memcached.pid
Add the above to/etc/rc. local for automatic start next time * Note: User-u must be specified. In this example, the WEB user www is used.
6. use telnet to view the status
Telnet 192.168.1.2 12000 stats # view the running status quit # exit
Note:
Php5.4.9 startup command:/opt/php/sbin/php-fpm check php running process ps aux | grep php-fpmphp-fpm close: after kill-INT 'cat/usr/local/php/var/run/php-fpm.pid 'is disabled,/opt/php/sbin/php-fpm is required to start; create with touch without a php-fpm.pid. Php-fpm restart: kill-USR2 'cat/usr/local/php/var/run/php-fpm.pid 'Nginx service startup command: /opt/nginx/sbin/nginx syntax check/opt/nginx/sbin/nginx-t check nginx. conf file syntax;
Php startup error:
ERROR: [pool www] cannot get uid for user 'fpm'
Change user = fpm group = fpm to nginx on php-fpm (for nginx installation)