標籤:
一.環境準備
1.首先介紹一下環境,以及我們今天的主角們
我用的環境是迷你安裝的centos7,mariadb(江湖傳言mysql被oracle收購後,人們擔心像java一樣毀在oracle手上於是成了新的分支,但是還是像mysql一樣用),
php7.1.0(版本無所謂,都是7版本),nginx1.10(我們安裝的是穩定版而沒有一味的追求新),memcached,和redis可以隨機播放一個,當然全安裝也沒有幹擾
2.軟體包下載
1)mariadb軟體包(yum安裝,編譯安裝因為boost問題掛掉了而且耗時極其長,放棄了)
首先添加mariadb的yum源
cd /etc/yum.repos.d/ vim /etc/yum.repos.d/MariaDB.repo
添加下列內容# MariaDB 10.0 CentOS repository list - created 2015-08-12 10:59 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
2)php7.10軟體包
wget https://downloads.php.net/~davey/php-7.1.0beta3.tar.gz
3)nginx軟體包
wget http://nginx.org/download/nginx-1.10.1.tar.gz
nginx還需要下載ngx_http_upstream_consistent_hash(多台快取服務器的時候使用一致性hash演算法需要)
和ngx_http_redis(支援redis)(--add-dynamic-module=PATH時候等於他們的路徑即可)
cd /usr/local/src/
#下載 ngx_http_consistent_hash 和
wget https://codeload.github.com/replay/ngx_http_consistent_hash/zip/masterunzip master
#解壓之後的檔案夾名字
ngx_http_consistent_hash-maste
wget http://people.freebsd.org/~osa/ngx_http_redis-0.3.8.tar.gztar zxvf ngx_http_redis-0.3.8.tar.gz
#解壓之後的檔案夾名字
ngx_http_redis-0.3.8
4)memcached軟體包(以及php支援memcached的php7版)(需要libevent libevent-devel)
#memcachedwget http://memcached.org/files/memcached-1.4.31.tar.gz#memcache for php7wget https://github.com/websupport-sk/pecl-memcache/archive/php7.zip
5)redis軟體包以及redis-php7包
#rediswget http://download.redis.io/releases/redis-3.2.3.tar.gz#redis for php7wget https://codeload.github.com/phpredis/phpredis/zip/php7
3.安裝編譯的相關環境以及php等依賴的相關庫
yum update && yum upgradeyum groupinstall "Development tools"
當然下面的代碼和上面的有的重複,不用擔心,安裝過的會略過
yum -y install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap lsof libxslt libxslt-devel
二、軟體安裝以及配置
0.建立使用者以及檔案夾
#建立群組www(nginx,php),mysql(mysql)groupadd wwwgroupadd mysql#建立一個使用者,不允許登陸和不創主目錄 useradd -s /sbin/false -g www -M wwwuseradd -s /sbin/false -g mysql -M mysql
#建立web目錄
mkdir -R /var/www/html
chown -R www:www /var/www/
1.安裝mariadb
yum -y install MariaDB-server MariaDB-client mariadb-devel
安裝完成後,改my.cnf,重啟
mv /etc/my.cnf /etc/my.cnf.bak cp /usr/share/mysql/my-huge.cnf /etc/my.cnfservice mysql start 或者 /etc/init.d/mysql restart 重啟
2.編譯安裝php7
當然是先解壓檔案cd /usr/local/src/tar zxvf php-7.1.0beta3.tar.gzcd php-7.1.0beta3
#需要安裝什麼就 ./configure --help | grep mysql(這裡只是個例子XXX) 看看他的選項是什麼./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc \
--with-xsl --with-zlib --enable-mysqli --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip#提示缺啥就安裝什麼,或者安裝libXXX-devel
#比如提示我缺少xslt
#我就試著安裝了libXXX libXXX-devel(devel是標頭檔)
# yum install libxslt
# yum install libxslt-devel
make && make install
#漫長的等待後成功
從編譯目錄中取出php.ini檔案(生產環境和開發環境任選其一),注意是lib下,不信事後可查看phpinfo中的Configuration File (php.ini) Path這個選項,將php.ini移入到此位置cp php.ini-development /usr/local/php/lib/php.ini從編譯目錄中將php-fpm放入到etc/init.d/目錄下cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmchmod +x /etc/init.d/php-fpm到php安裝目錄將兩個需要改名的設定檔改改名字cd /usr/local/php/etc/mv php-fpm.conf.default php-fpm.confcd php-fpm.d/mv www.conf.default www.conf
#修改www.conf的使用者為www
user = www
group = www
#啟動
service php-fpm start
3.編譯安裝nginx
進入/usr/local/src/下的目錄,解壓nginx檔案不再詳述#添加模組就是用--add-dynamic-module=模組解壓的檔案夾
./configure --prefix=/usr/local/nginx --add-dynamic-module=/usr/local/src/ngx_http_consistent_hash-master --add-dynamic-module=/usr/local/src/ngx_http_redis-0.3.8 --with-http_stub_status_module
make && make install
簡單配置nginx讓其啟動,詳細配置最佳化我們專門有一篇文章
#user改為wwwuser www#添加index.php location / { root /var/www/html; index index.php index.html index.htm;}#支援phplocation ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params;}
#儲存退出
#啟動
cd /usr/local/nginx/sbin/
./nginx
#會在/usr/local/nginx/logs/產生一個nginx.pid,以後就可以使用訊號量了
ps aux |grep nginx
4.編譯安裝redis
解壓,進入目錄不再詳述
#直接編譯安裝就行make && make install#為redis建立工作目錄mkdir /usr/local/redis#從編譯目錄將設定檔,用戶端,伺服器端複製過去cp redis.conf /usr/local/redis/cd src/cp redis-cli redis-server /usr/local/redis#簡單配置redis.conf(設定為後台啟動)
cd /usr/local/redis
vim redis.conf
daemonize yes
儲存退出
cd /usr/local/redis
#啟動伺服器端
./redis-server redis.conf
#啟動用戶端,可以進行各種操作了
./redis-cli
讓php支援redis(php安裝拓展都是千篇一律的,進入加壓後的檔案夾中執行phpize,然後./configure 指向php-config,結束會告訴你拓展目錄是啥複製放到php.ini中)
/usr/local/php/bin/phpize./configure --with-php-config=/usr/loca/php/bin/php-config
vim /usr/local/php/lib/php.ini
在差不多最後的地方添加(memcache的也是一樣,後面不再詳述)
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/" (當然這個目錄是編譯redis拓展完成後提示的地址)
[redis]
extension=redis.so
5.編譯安裝memcached(解壓進入目錄不再詳述)
#因為是yum安裝的libevent,不必再--with-libevent指定libevent./configure --prefix=/usr/local/memcachedmake && make install
#啟動(使用者www , 後台啟動 -d ),www沒有的自己建個
cd /usr/local/memcached/bin
./memcached -u www -d
php支援memcache的拓展(解壓進入目錄)
/usr/local/php/bin/phpize./configure --with-php-config=/usr/loca/php/bin/php-config
php.ini中添加
[memcache]
extension=memcache.so
#重啟nginx和php-fpm
service php-fpm restart
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
centos7下搭建nginx+php7.1+mariadb+memcached+redis