downcc php7.0.10
wm10 https://blog.csdn.net/qq_21792169/article/details/50975703
http://www.pangxieke.com/linux/981.html
http://www.centoscn.com/CentosServer/www/2015/0422/5245.html
https://sourceforge.net
++++++++++++++++++
一、準備工作:
1、建立一個軟件包目錄存放,最小化安裝centos6.5
mkdir -p /usr/local/src/
#清理已經安裝包
rpm -e httpd
rpm -e mysql
rpm -e php
yum -y remove httpd
yum -y remove mysql
yum -y remove php
#搜索apache包
rpm -qa http*
#強制卸載apache包
rpm -e --nodeps #查詢出來的文件名 例如rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps
#檢查是否卸載干凈
rpm -qa|grep http*
#selinux可能會致使編譯安裝失敗,我們先禁用它。永久禁用,需要重啟生效
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#臨時禁用,不需要重啟 setenforce 0
2、安裝必備工具
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
3、如果想軟件安裝速度,將yum源設置為阿里云開源鏡像
后期發現yum安裝一直報錯。提示Cannot find a valid baseurl for repo: PUIAS_6_computational
找好久,發現是鏡像源配置錯誤 刪除/etc/yum.repos.d/PUIAS_6_computational 重新配置鏡像才
cd /etc/yum.repos.d/
cp -a CentOS-Base.repo CentOS-Base.repo.bak
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum clean all
yum makecache
二、安裝mysql5.6.17
1、按照標準需要給mysql創建所屬用戶和用戶組
#創建群組
groupadd mysql
#創建一個用戶,不允許登陸和不創主目錄
useradd -s /sbin/nologin -g mysql -M mysql
#檢查創建用戶
tail -1 /etc/passwd
#centos最小化安裝后,會有mysql的庫因此先卸載!
#檢查安裝與否
rpm -qa|grep mysql
#強制卸載
rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps
2、MySQL從5.5版本開始,通過./configure進行編譯配置方式已經被取消,取而代之的是cmake工具。 因此,我們首先要在系統中源碼編譯安裝cmake工具。
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
#注:如果地址失效 wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz --no-check-certificate
tar zxvf cmake-2.8.12.2.tar.gz
cd cmake-2.8.12.2
./configure
make && make install
3、使用cmake來編譯安裝mysql5.6.17
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz --no-check-certificate
tar zxvf mysql-5.6.17.tar.gz
cd mysql-5.6.17
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql \
-DWITH_DEBUG=0 \
-DWITH_SSL=system
make && make install
#修改/usr/local/mysql權限
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
4、關于my.cnf配置文件:
在啟動MySQL服務時,會按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會搜索”$basedir/my.cnf” 就是安裝目錄下 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認位置! 注意:在CentOS 6.x版操作系統的最小安裝完成后,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字。 如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。 由于我們已經卸載了最小安裝完成后的mysq庫所以,就沒必要操作了。
#進入support-files目錄
cd support-files/
#如果還有my.cnf請備份
mv /etc/my.cnf /etc/my.cnf.bak
#如果愿意也可以復制配置文件到etc下
**cp my-default.cnf /etc/my.cnf**
#執行初始化配置腳本,創建系統自帶的數據庫和表,注意配置文件的路徑
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
#拷貝mysql安裝目錄下support-files服務腳本到init.d目錄
cp support-files/mysql.server /etc/init.d/mysqld
#賦予權限
chmod +x /etc/init.d/mysqld
#設置開機啟動
chkconfig mysqld on
#啟動MySQL
service mysqld start
#或者
/etc/init.d/mysql start
5、MySQL5.6.x啟動成功后,root默認沒有密碼,我們需要設置root密碼。
設置之前,我們需要先設置PATH,要不,不能直接調用mysql
#修改/etc/profile文件
vi /etc/profile
#在文件末尾添加
PATH=/usr/local/mysql/bin:$PATH
export PATH
#讓配置立即生效
source /etc/profile
#登陸測試,默認是沒有密碼,直接回車就可進入
mysql -uroot -p
#輸入空密碼,改成現有密碼 設置mysql密碼
/usr/local/mysql/bin/mysqladmin -uroot -p password '000000'
#登陸進命令行模式
mysql -uroot -p
#查看用戶
select user,host from mysql.user;
#刪除不必要的用戶
drop user ""@localhost;
drop user ""@c65mini.localdomain;
drop user root@c65mini.localdomain;
drop user root@'::1';
#賦予賬號遠程訪問的權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'c65mini.localdomain' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
#關于刪除MySQL的默認root用戶參考:http://blog.chinaunix.net/uid-16844903-id-3377690.html
#其它一些信息查詢: 檢查mysql版本
mysql -uroot -p"密碼" -e "select version();"
#驗證mysql安裝路徑
ls -ld /usr/local/mysql/
三、安裝PHP7
安裝依賴關系
1、libiconv庫為需要做轉換的應用提供了一個iconv()的函數,以實現一個字符編碼到另一個字符編碼的轉換。 錯誤提示:configure: error: Please reinstall the iconv library.
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
cd ..
2、libmcrypt是加密算法擴展庫。 錯誤提示:configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
wget --no-check-certificate http://iweb.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
cd ..
3、Mhash是基于離散數學原理的不可逆向的php加密方式擴展庫,其在默認情況下不開啟。 mhash的可以用于創建校驗數值,消息摘要,消息認證碼,以及無需原文的關鍵信息保存 錯誤提示:configure: error: “You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/”
wget http://hivelocity.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2
tar jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make && make install
cd ..
4、mcrypt 是 php 里面重要的加密支持擴展庫,Mcrypt擴展庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。
wget http://iweb.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure
make && make install
cd ..
編譯mcrypt可能會報錯:configure: error: *** libmcrypt was not found
vi /etc/ld.so.conf
#最后一行添加
/usr/local/lib/
#載入
ldconfig
編譯mcrypt可能會報錯:/bin/rm: cannot removelibtoolT’: No such file or directory`
修改 configure 文件,把RM=’$RM’改為RM=’$RM -f’ 這里的$RM后面一定有一個空格。 如果后面沒有空格,直接連接減號,就依然會報錯。
5、正式開始編譯php7
wget http://cn2.php.net/distributions/php-7.0.5.tar.gz
tar zxvf php-7.0.5.tar.gz
cd php-7.0.5
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
make && make install
修改fpm配置php-fpm.conf.default文件名稱
mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
#注意:發現啟動時錯誤,配置文件無法找到,需要mv /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/default.conf
#復制php.ini配置文件
cp php.ini-production /usr/local/php/etc/php.ini
#復制php-fpm啟動腳本到init.d
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#賦予執行權限
chmod +x /etc/init.d/php-fpm
#添加為啟動項
#chkconfig --add php-fpm
#設置開機啟動
chkconfig php-fpm on
#按照標準,給php-fpm創建一個指定的用戶和組
#創建群組
groupadd www
#創建一個用戶,不允許登陸和不創主目錄
useradd -s /sbin/nologin -g www -M www
#立即啟動php-fpm
service php-fpm start
#或者
/etc/init.d/php-fpm start
啟動錯誤:WARNING: Nothing matches the include pattern '/usr/local/php7/etc/php-fpm.d/*.conf'
解決方案:
# cd /usr/local/php/etc/php-fpm.d/
# cp www.conf.default www.conf
*# /usr/local/php/sbin/php-fpm -t*
[12-Oct-2017 08:33:29] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
[root@localhost php-fpm.d]# service php-fpm start
Starting php-fpm done
四、安裝nginx1.7
nginx所需的依賴關系,一般我們都需要先裝pcre, zlib,前者為了重寫rewrite,后者為了gzip壓縮。如果系統已經yum 安裝了這些庫也沒關系,無需卸載。直接編譯安裝最新的就可以了。為了一次性完成編譯,先準備編譯下面的依賴關系!
1、安裝PCRE庫
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.gz
注:如果地址失效,可以使用http://ufpr.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.zip
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install
2、安裝zlib庫
http://zlib.net/
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install
3、安裝nginx
wget http://nginx.org/download/nginx-1.7.0.tar.gz
tar zxvf nginx-1.7.0.tar.gz
cd nginx-1.7.0
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
make && make install
cd ..
4、啟動nginx測試
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
報錯:ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
新建啟動腳本:vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
sysconfig="/etc/sysconfig/$prog"
lockfile="/var/lock/subsys/nginx"
pidfile="/usr/local/nginx/logs/nginx.pid"
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f $sysconfig ] && . $sysconfig
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $pidfile $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest_q || return 6
stop
start
}
reload() {
configtest_q || return 6
echo -n $"Reloading $prog: "
killproc -p $pidfile $prog -HUP
echo
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
configtest_q() {
$nginx -t -q -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
# Upgrade the binary with no downtime.
upgrade() {
local oldbin_pidfile="${pidfile}.oldbin"
configtest_q || return 6
echo -n $"Upgrading $prog: "
killproc -p $pidfile $prog -USR2
retval=$?
sleep 1
if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]]; then
killproc -p $oldbin_pidfile $prog -QUIT
success $"$prog online upgrade"
echo
return 0
else
failure $"$prog online upgrade"
echo
return 1
fi
}
# Tell nginx to reopen logs
reopen_logs() {
configtest_q || return 6
echo -n $"Reopening $prog logs: "
killproc -p $pidfile $prog -USR1
retval=$?
echo
return $retval
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest|reopen_logs)
$1
;;
force-reload|upgrade)
rh_status_q || exit 7
upgrade
;;
reload)
rh_status_q || exit 7
$1
;;
status|status_q)
rh_$1
;;
condrestart|try-restart)
rh_status_q || exit 7
restart
;;
*)
echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"
exit 2
esac
啟動測試
#注意權限chmod +x /etc/init.d/nginx
#啟動測試
/etc/init.d/nginx restart
#或者
service nginx restart
#設置開機啟動
chkconfig nginx on
#訪問測試,暫時關閉防火墻
/etc/init.d/iptables stop
#訪問成功后,開啟防火墻,過濾80端口
#配置80,3306端口訪問
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
經過優化的nginx.conf
user www www;
worker_processes 1;
error_log /var/www/html/log/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
# google_perftools_profiles /tmp/tcmalloc;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
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;
keepalive_timeout 60;
tcp_nodelay on;
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;
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;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_zone crawler $binary_remote_addr 10m;
server_tokens off;
#log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
server
{
listen 80;
server_name www.t.com;
index index.html index.htm index.php;
root /var/www/html/www.t.com;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /status {
# stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log /var/www/html/log/t_access.log access;
}
include vhost/*.conf;
}
+++++++++++++++++++
[root@localhost conf]# cat nginx.conf
#nginx 監聽原理 先監聽端口 --> 再配置域名 -->匹配到就訪問local 否則 沒有匹配到域名就默認訪問第一個監聽端口的local地址
user www www; # 運 nginx的所屬組和所有者
worker_processes 2; # 開啟兩個 nginx工作進程,一般幾個 CPU核心就寫幾
error_log logs/error.log notice; # 錯誤日志路徑
pid logs/nginx.pid; # pid 路徑
events {
worker_connections 1024; # 一個進程能同時處理1024個請求
}
http {
include mime.types;
include /usr/local/nginx/conf/vhost/*.conf;
}
[root@localhost vhost]# cat nb.py1z.com.conf
server {
listen 80;
server_name nb.py1z.com;
root /var/www/html/py1z.com/web;
index index.php index.html index.htm;
location ~ .*\.(php|php5)?$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /usr/local/nginx/conf/fastcgi.conf;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ /\.ht {
deny all;
}
}
[root@localhost vhost]# cat www.test.com.conf
server {
listen 80;
server_name www.tt.com;
location ~ \.php$ {
root /var/www/html/www.tt.com;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
root /var/www/html/www.tt.com;
index index.php;
}
}
- 關于我
- laravel
- quickstart
- quickstart-intermediate
- swoole
- (一)快速起步
- php7
- swoole異步高性能
- 開發中常見問題
- event擴展的安裝
- phptrace
- 用C/C++寫php擴展
- 無聊的筆試題
- rewrite二級目錄轉二級域名
- php多進程
- rpc-yar
- php專家列表
- php守護進程
- php函數防止超時
- php分析報錯信息
- gdb調試php
- php-cli模式
- composer/pear
- 基礎
- sublime+xdebug
- 開啟opcache
- 前端
- js
- linux
- Xshell連接不上Ubuntu解決方式
- xshell
- centos安裝中文輸入
- centos下安裝谷歌瀏覽器
- centos安裝phpstorm
- php7之phpredis安裝
- 磁盤大小
- dns
- TCP/IP協議
- HTTP
- tcpdump
- zbacktrace
- gdb調試php擴展
- lsof
- perf
- lnmp
- first
- 重定向
- echo
- 鍵盤高效操作
- 權限控制
- 進程
- 環境變量
- vi
- 軟件包管理
- 網絡
- 查找文件
- 壓縮
- 正則
- sed/awk
- 編譯程序
- shell腳本
- shell認識
- sh腳本
- sh調試相關
- win共享文件夾給虛擬機
- git
- git的安裝
- 常用命令
- 本地到遠程倉庫
- 遠程到本地倉庫
- 分支管理
- bug分支
- feature
- 標簽
- 多人協作
- FAQ
- C/C++
- 難點
- 修飾符
- 數組
- 字符串
- 指針
- 引用
- 面向對象
- 類訪問修飾符
- 構造函數
- 操作文件
- mysql集群
- 使用navicat操作MySQL數據庫能不能整個數據庫搜索一條數據?
- 幫助的使用
- 存儲引擎的選擇
- 數據類型/字符集
- 索引
- kafka集群
- rabbitmq集群
- (一)初識rabbitmq
- (二)原理
- (三)消息模型
- (四)rabbitmq&php基礎
- (五)持久化&route&指定exchange
- (六)發布訂閱
- (七)route key
- (八)topic
- elasticsearch集群
- (一)服務端搭建
- (二)elasticsearch&php
- (三)head插件
- redis集群
- github
- 設計模式
- createType
- factory_method.php
- abstract_factory.php
- mysql_singleton.php
- builder.php
- prototype.php
- structType
- adapter.php
- 數據結構與算法
- python