通常Linux環境下的網頁伺服器,預設是Apache為主。為了追求高效能及穩定高情況之下,Apache伺服器執行的品質就不是很好,因此俄羅斯的一個軟體公司就開發一款名為 Nginx網頁伺服器。本篇主要介紹LNMP(Linux+Nginx+Mysql+PHP)安裝,以編譯方式來安裝Nginx、MySQL及PHP這三套軟體。
sudo bash LANG=C yum 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
rpm -qa|egrep '(bison|cmake)'
[root@yao88 src]#tar zxvf mysql-5.5.16.tar.gz [root@yao88 mysql-5.5.16]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
[root@yao88 mysql-5.5.16]#make [root@yao88 mysql-5.5.16]#make install
#groupadd mysql #useradd -s /bin/nologin -r -g mysql mysql #cd /usr/local/mysql #chown -R mysql . #chgrp -R mysql .
#/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data (此資料庫會建立在 /var/lib/mysql)
#cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf #cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #ln -s /usr/local/mysql/bin/mysql /bin/mysql
#/etc/init.d/mysqld start
# cd libiconv-1.13.1/ #./configure #make #make install
#cd libmcrypt-2.5.8/ #./configure #make #make install #ldconfig #cd libltdl/ #./configure --enable-ltdl-install #make #make install
#cd mhash-0.9.9.9/ #./configure #make #make install
連結libmcrypt及mhash相關函數到 /usr/lib64/ (本文實作於64位元;若是32位元是在/usr/lib/) #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/bin/libmcrypt-config /usr/bin/libmcrypt-config #cd mcrypt-2.6.8 #./configure #make #make install
#ln -s /usr/local/mysql/lib/libmysqlclient.a /usr/lib64/mysql/libmysqlclient.a #ln -s /usr/local/mysql/lib/libmysqlclient_r.a /usr/lib64/mysql/libmysqlclient_r.a #ln -s /usr/local/mysql/lib/libmysqlclient_r.so /usr/lib64/mysql/libmysqlclient_r.so #ln -s /usr/local/mysql/lib/libmysqlclient_r.so.18 /usr/lib64/mysql/libmysqlclient_r.so.18 #ln -s /usr/local/mysql/lib/libmysqlclient_r.so.18.0.0 /usr/lib64/mysql/libmysqlclient_r.so.18.0.0 #ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/mysql/libmysqlclient.so #ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/mysql/libmysqlclient.so.18 #ln -s /usr/local/mysql/lib/libmysqlclient.so.18.0.0 /usr/lib64/mysql/libmysqlclient.so.18.0.0 #ln -s /usr/local/mysql/lib/libmysqld.a /usr/lib64/mysql/libmysqld.a #ln -s /usr/local/mysql/lib/libmysqlservices.a /usr/lib64/mysql/libmysqlservices.a #ln -s /usr/local/mysql/lib/plugin/ /usr/lib64/mysql/plugin
php5.3.3版本之後,php-fpm模組已經包含在原始碼中了,不必透過patch再執行編譯。 #cd php-5.3.8 #./configure --prefix=/usr/local/php \ (指php安裝目錄) -> --with-config-file-path=/usr/local/php/etc \ (指php設定檔安裝位置) -> --with-mysql=/usr/local/mysql \ (指mysql安裝的地方) -> --with-mysqli=/usr/local/mysql/bin/mysql_config \ (指 mysqli 資料庫連線執行檔) -> --with-iconv-dir=/usr/local \ (打開文字編碼自符集間的轉換) -> --with-freetype-dir \ (打開對freetype字體庫的支持) -> --with-jpeg-dir \ (打開jpeg圖片的支持) -> --with-png-dir \ (打開png圖片的支持) -> --with-zlib \ (zlib庫的支持) -> -with-curl \ (curl瀏覽工具的支持) -> --with-curlwrappers \(curl工具打開url流) -> --with-libXML-dir \ (xml函式庫支持) -> --enable-xml \ (允許xml函式庫) -> --disable-rpath \ ( 關閉額外的運行庫文件) -> --enable-safe-mode \ (打開安全模式) -> --enable-bcmath \ (圖片大小調整) -> --enable-shmop \ -> --enable-sysvsem \ -> --enable-fpm \ (允許php-fpm) -> --enable-fastcgi \ (支持fastcgi方式啟動PHP) -> --enable-force-cgi-redirect \ -> --enable-inline-optimization \ -> --enable-mbregex \ -> --enable-mbstring \ (多字節,字符串的支持) -> --with-mcrypt \ (mcrypt 演算法) -> --with-gd \ (gd圖形) -> --enable-gd-native-ttf \ (支持TrueType字符串函數庫) -> --with-openssl \ (安全 ssl) -> --with-mhash \ (mhash 演算法) -> --enable-pcntl \ (連結mysql用到的) -> --enable-sockets \(打開復口支持) -> --with-ldap \ (ldap支持) -> --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
#make #make install
#rpm -qi pcre
#yum -y install pcre
#./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module # make && make install
#useradd -s /sbin/nologin -d /usr/local/nginx/html -r www
#cp -a /usr/local/php/sbin/php-fpm /etc/init.d/php-fpm #cp -a /usr/local/nginx/sbin/nginx /etc/init.d/nginx
#vim /usr/local/nginx/conf/nginx.conf
user www; #剛新增系統帳號 worker_processes 5; #error_log logs/error.log; #error_log logs/error.log notice; error_log /usr/local/nginx/logs/error.log info; pid /usr/local/nginx/logs/nginx.pid; #nginx啟動時,會給定一個程序ID events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #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; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; #Web server Port server_name andy; #主機名稱 #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm index.php; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; #執行 *.php 程式所使用的Port fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
#/etc/init.d/nginx #/etc/init.d/php-fpm #netstat -tulnp|egrep '(80|9000)'