準備工作,安裝依賴庫
//檢查並安裝組件
yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel 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-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libmcrypt libmcrypt-devel cmake
- 1
- 2
幾點說明:
pcre、openssl、zlib是安裝nginx時需要的
cmake是安裝mysql時需要的
一、查看linux版本
[root@centos src]# cat /etc/issue
CentOS release 6.7 (Final)
Kernel \r on an \
- 1
- 2
- 3
二、編譯安裝nginx
1、下載nginx(stable版本)
wget -P /tmp http://nginx.org/download/nginx-1.8.1.tar.gz
- 1
-P指定下載文件目錄
或者
[root@centos /]# cd /usr/local/src
[root@centos src]# wget http://nginx.org/download/nginx-1.8.1.tar.gz
- 1
- 2
默認下載到當前目錄下
2、解壓nginx
[root@centos src]# tar xf nginx-1.8.1.tar.gz
[root@centos src]# cd nginx-1.8.1
[root@centos nginx-1.8.1]# ./configure --help(查看參數)
- 1
- 2
- 3
- 4
3、編譯nginx
如果指定用戶和用戶組,需要先創建
//創建用戶www和用戶組www
groupadd www
useradd -g www www
- 1
- 2
- 3
./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --user=www --group=www --with-http_ssl_module --with-http_gzip_static_module
- 1
make && make install
//啓動nginx
**第一種方式 指定--sbin-path=/usr/sbin/nginx**
nginx //啓動
nginx -s stop// 停止
nginx -s reload // 重新加載
**第二種方式 不指定--sbin-path**
cd /usr/local/nginx
./sbin/nginx
重啓nginx /usr/local/nginx/sbin/nginx -s reload
**第三種方式**
配置開機啓動
首先寫一個shell腳本,腳本名稱:nginx
vi /etc/rc.d/init.d/nginx
#! /bin/bash
# chkconfig: 35 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME (這裏是nginx安裝是 --sbin-path指定的路徑)
SCRIPTNAME=/etc/init.d/$NAME
test -x $DAEMON || exit 0
d_start(){
$DAEMON || echo -n " already running"
}
d_stop() {
$DAEMON -s quit || echo -n " not running"
}
d_reload() {
$DAEMON -s reload || echo -n " counld not reload"
}
case "$1" in
start)
echo -n "Starting $DESC:$NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC:$NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 2
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit 0
//將shell腳本放入到 /etc/rc.d/init.d/中,並執行下列命令
chmod +x /etc/rc.d/init.d/nginx (設置可執行權限)
chkconfig --add nginx (添加系統服務)
service nginx start
service nginx stop
service nginx restart
service nginx reload
瀏覽器訪問:http://localhost如能出現nginx頁面則表示成功
// 查看nginx進程
ps -ef | grep nginx
// 查看進程個數 去掉首位的
ps -ef | grep nginx | wc -l
// 查看80端口
netstat -anpt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
4、安裝PHP
//php下載
cd /usr/local/src/
//如果下載文件的文件是mirror,直接解壓mirror即可
wget http://cn2.php.net/get/php-5.6.13.tar.gz/from/this/mirror
tar zxvf php-5.6.13.tar.gz
cd php-5.6.13
./configure --prefix=/usr/local/php --with-curl --with-bz2 --with-zlib --with-mhash --with-pcre-regex --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-openssl --with-pdo-mysql --with-libxml-dir --with-freetype-dir --with-iconv --enable-opcache --enable-bcmath --enable-ftp --enable-shmop --enable-fpm --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-calendar --enable-zip --enable-mbstring --enable-pdo
make (重新編譯需要 make clean清除)
make install
// 配置php-fpm
cd /usr/local/php/etc
cp php-fpm-default.conf php-fpm.conf
//創建用戶www和用戶組www
groupadd www
useradd -g www www
//修改php-fpm.conf
vi php-fpm.conf
//將user = nobody group = nobody 修改爲 user = www group = www
//將;pid = run/php-fpm.pid 前面的分號刪掉
//創建php.ini
cp /usr/local/src/php-5.6.13/php.ini-production /usr/local/php/lib/php.ini
//設置php-fpm開機啓動
//拷貝php-fpm腳本至/etc/init.d目錄
cp /usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
//設置權限並啓動php-fpm:
chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start
chkconfig --add php-fpm
//最後,給出php-fpm以服務的方式啓動、停止和重啓:
service php-fpm start
service php-fpm stop
service php-fpm reload
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
5、配置支持php
cd /usr/local/nginx/conf
vi nginx.conf
user www www; #修改nginx運行賬號爲:www組的www用戶
index index.php index.html index.htm; #增加index.php
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#取消FastCGI server部分location的註釋,並要注意fastcgi_param行的參數,改爲$document_root$fastcgi_script_name,或者使用絕對路徑
//驗證nginx配置語法
cd /usr/local/nginx
./sbin/nginx -t
//測試
cd/usr/local/nginx/html
vim index.php
//內容如下
<?php phpinfo(); ?>
//如果能顯示出php的環境信息,則表示配置成功
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
6、虛擬主機設置
這裏使用多個.conf的方法配置
這裏測試的時候把項目放在www目錄下,對應的域名爲onethinkcms.com
下載後的項目放入到/www/onethinkcms下
打開 /usr/local/nginx/conf/nginx.conf
在最後加入如下一行
# 包含所有的虛擬主機的配置文件 在conf目錄下新建vhosts目錄 添加相應的.conf配置文件
include vhosts/*.conf;
- 1
- 2
- 3
在/usr/local/nginx/conf下新建目錄
mkdir vhosts
cd vhosts
vim onethinkcms.conf
// 加入如下配置
server {
listen 80;
server_name onethinkcms.com www.onethinkcms.com;
access_log /www/onethinkcms.log;
location / {
root /www/onethinkcms;
index index.php index.html index.htm;
}
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root /usr/share/nginx/html;
# }
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
# 這裏的值對應的是$document_root
root /www/onethinkcms;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#注意這裏的路徑
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
配置hosts文件
vi /etc/hosts 添加 127.0.0.1 onethinkcms.com
重啓nginx
訪問 onethinkcms.com即可
7、安裝MYSQL
①下載 MySQL
mysql官網->Downloads->Community->MySQL Community Server->下拉框裏選擇Source Code
cd /usr/local/src wget
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz
②安裝編譯源碼所需的工具和庫
如果缺少cmake庫
yum install cmake(可以從http://www.cmake.org下載源碼並編譯安裝) (安裝包安裝cmake)
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzvf cmake-2.8.10.2.tar.gz
./bootstrap make make
install
③設置MySQL用戶和組
新增mysql用戶組 groupadd mysql
新增mysql用戶 useradd -r -g mysql mysql
④ 新建MySQL所需要的目錄
新建mysql安裝目錄 mkdir -p /usr/local/mysql
新建mysql數據庫數據文件目錄 mkdir -p /data/mysqldb
⑤ MySQL源碼包解壓
cd /usr/local/src
tar zxvf mysql-5.6.27.tar.gz
cd cd mysql-5.6.27cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/mysqldb -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1
(注:重新運行配置,需要刪除CMakeCache.txt文件 rm CMakeCache.txt ) make make install
⑥ 修改mysql目錄所有者和組
修改mysql安裝目錄 cd /usr/local/mysql chown -R mysql:mysql .
修改mysql數據庫文件目錄 cd /data/mysqldb chown -R mysql:mysql .(注意後面的.指的是當前目錄)
⑦ 初始化mysql數據庫
cd /usr/local/mysql
./scripts/mysql_install_db –user=mysql –datadir=/data/mysqldb
⑧ 複製mysql服務啓動配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
(注:如果/etc/my.cnf文件存在,則覆蓋。)
⑨ 複製mysql服務啓動腳本及加入PATH路徑
cp support-files/mysql.server /etc/init.d/mysqld
⑩ 啓動mysql服務並加入開機自啓動
service mysqld start
chkconfig –level 35 mysqld on
⑪ 檢查mysql服務是否啓動
netstat -tulnp | grep 3306
需要把mysql加入環境變量 vim /etc/profile
在最後加入如下命令
MYSQL_HOME=/usr/local/mysql
PATH=$MYSQL_HOME/bin:$PATH
export PATH MYSQL_HOME
source /etc/profile
mysql -u root -p (密碼爲空,如果能登陸上,則安裝成功)
⑫ 修改MySQL用戶root的密碼
方法一:mysql -u root -p
use mysql
update user set password=password(‘123456’) where user=’root’
flush privileges(刷新權限)
方法二:/usr/local/mysql/bin/mysql_secure_installation
(修改MySQL用戶root的密碼,同時可禁止root遠程連接,移除test數據庫和匿名用戶。)
⑬ 可能會出現的錯誤
錯誤一:Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).
解決:修改/etc/my.cnf 中datadir,指向正確的mysql數據庫文件目錄
錯誤二:ERROR 2002 (HY000): Cannot connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
解決:新建一個鏈接或在mysql中加入-S參數,直接指出mysql.sock位置。ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock
錯誤三:-bash:mysql:command not found (也可以直接添加環境變量)
解決:因爲mysql命令的路徑在/usr/local/mysql/bin下面,所以你直接使用mysql命令時,系統在/usr/bin下面查此命令,所以找不到了
ln -s /usr/local/mysql/bin/mysql /usr/bin 做個鏈接即可
安裝配置過程中遇到的問題彙總
1、出現pdo連接錯誤 SQLSTATE[HY000] [2002] No such file or directory Caused by: PDOException
vi /usr/local/php/lib/php.ini
mysql.default_socket = /usr/local/mysql/mysql.sock
pdo_mysql.default_socket= /usr/local/mysql/mysql.sock
mysqli.default_socket = /usr/local/mysql/mysql.sock
- 1
- 2
- 3
- 4
重啓php-fpm service php-fpm restart
2、端口及防火牆問題
配置防火牆,開啓80端口、3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允許80端口通過防火牆)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允許3306端口通過防火牆)
特別提示:很多網友把這兩條規則添加到防火牆配置的最後一行,導致防火牆啓動失敗,正確的應該是添加到默認的22端口這條規則的下面
添加好之後防火牆規則如下所示:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
/etc/init.d/iptables restart #最後重啓防火牆使配置生效
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
查看防火牆狀態
/etc/init.d/iptables status
關閉SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #註釋掉
#SELINUXTYPE=targeted #註釋掉
SELINUX=disabled #增加
:wq 保存,關閉
shutdown -r now #重啓系統
- 1
- 2
- 3
- 4
- 5
- 6
PHP命令找不到問題
①可以通過yum install php-cli安裝(php-cli的版本較低)
yum remove php-cli
② bash: php: command not found
解決:
export PATH=$PATH:/usr/local/php/bin
然後,再 echo $PATH 看看,就看見了。
usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php/bin
這時候,你可以在系統的任意目錄直接敲入php -i 都可以執行
安裝php擴展
① 在php源碼包裏找到相應的擴展
cd /usr/local/src/php-5.6.13/ext/pdo
② 在該目錄下執行
/usr/local/php/bin/phpize
③ 執行
./configure –with-php-config=/usr/local/php/bin/php-config
make & make install
④ 打開php.ini文件
cd /usr/local/php/lib/
加入 extension=pdo.so
⑤ 重啓php-fpm
service php-fpm restart
如果遇到缺少`mysql_driver.lo’ is not a valid libtool object這類問題
清除已編譯的文件 make clean 或者刪除php安裝包,重新解壓新的
下載鏈接
//nginx下載
wget
http://nginx.org/download/nginx-1.8.0.tar.gz
//openssl下載
wget
http://www.openssl.org/source/openssl-1.0.2d.tar.gz
//pcre下載
wget
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
//php下載
wget
http://cn2.php.net/get/php-5.6.13.tar.gz/from/this/mirror(如果下載文件的文件是mirror,直接解壓mirror即可)
//libmcrypt下載
wget
ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
// mysql下載
wget
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30.tar.gz
安裝libmcrypt擴展
cd /usr/local/src
tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure --prefix=/usr/local/libmcrypt
make && make install
vi /etc/ld.so.conf.d/local.conf
添加 “/usr/local/libmcrypt/lib”
ldconfig -v
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
附:本人親測,可行!參考的小夥伴一步步來