為了學習linux下配置web服務器環境,於是安裝了vmware,准備在虛擬機里面學習web服務器的搭建!
首先是在虛擬機里安裝centos,我選擇的是32位的centos6.6版本,因為新版本7據說更改了好多命令,況且是新版本,於是沒有采用!
至於選擇32位的是因為我回頭的vps的環境最大也就是2G(沒有毛爺爺啊...) 所以就選擇了32位的!
虛擬機安裝centos基本上沒啥說的,一直next就行了!(PS:vmware11 真心不錯...)
----------------------------------------------------------------------------- 關閉GUI ----------------------------------------------------------------------------------
安裝成功之后,為了學習命令行,肯定是先關閉xwindow,也就是關閉GUI
操作就是編輯/etc/inittab文件 將id:5:initdefault: 改成 id:3:initdefault:

然后reboot就會進入命令行模式了!
----------------------------------------------------------------------------- 分辨率配置 ----------------------------------------------------------------------------------
進入命令行以后發現顯示的界面很小,稍微長一點的內容都會換行,於是更改命令行下的分辨率:
操作就是編輯/boot/grub/menu.lst文件,在kernel開頭的那一行添加vga參數:

如果不知道自己分辨率的值,可以在行為添加vga=ask,這樣在每次啟動的時候,都會列出所有支持的分辨率讓我們選擇:

比如我輸入379 就會進入1280*768的分辨率。
已經改更改了命令行模式以及分辨率,那么首先肯定要先打一下補丁了!
su
******
yum update
就是root下使用yum update命令更新系統補丁或者漏洞
----------------------------------------------------------------------------- tty設置 ----------------------------------------------------------------------------------
更新完成后,我們首先關閉多余的tty,tty是啥呢,我看了半天網上的解釋,大致感覺就是終端差不多的東西!
centos默認是開啟6個tty的
不過對於vps來說,我們基本上都是使用putty這一類的來遠程連接的,於是我們開啟2個tty就可以了!
具體操作有如下兩步:
1.編輯/etc/init/start-ttys.conf
將其中開啟6個終端的配置改成2個

就是將[1-6]改成[1-2]
從上面的腳本看出這個配置文件執行了/etc/sysconfig/init文件,那么就是我們要操作的第2步了
2.編輯/etc/sysconfig/init文件
同樣的將ACTIVE_CONSOLES改成2個

reboot后使用ps命令查看當前終端就會只有tty1和tty2了:
ps aux | grep tty
----------------------------------------------------------------------------- IPV6配置 ----------------------------------------------------------------------------------
然后就是為節省系統資源,關閉ipv6 以及ipv6的防火牆,對於VPS來說使用一個獨立的IPV4是最常見的了!
操作就是編輯/etc/modprobe.d/dist.conf文件,在文件的末尾添加如下兩行:
alias net-pf-10 off alias ipv6 off

然后reboot 使用lsmod | grep ipv6 可以發現ipv6已經關閉了
然后就是關閉ipv6的防火牆,關閉就是開機不啟動了,那就是使用chkconfig命令了
chkconfig ip6tables off
這樣就關閉了ipv6以及ip6tables了!
----------------------------------------------------------------------------- FTP配置 ----------------------------------------------------------------------------------
然后就是配置ftp了,以方便我們能夠上傳文檔或者代碼
首先就是檢查是否已經安裝了vsftpd
rpm -qa | grep vsftpd
如果沒有就安裝
yum install vsftpd
然后啟動vsftpd
service vsftpd start
然后可是使用chkconfig命令設置ftp開機啟動
(注:我並沒有設置,因為VPS基本上也就我一個人管理,沒有必要設置開機啟動,就算需要使用ftp,我一般也會通過putty鏈接后,開啟vsftpd ,然后使用結束后,關閉它)
安裝vsftpd后,下面我們就是配置vsftpd了:
首先肯定是要禁止ftp的匿名登錄:
操作就是編輯/etc/vsftpd/vsftpd.conf文件,設置anonymous_enable=NO,以及啟用chroot_list_enable 和 chroot_list_file選項


然后更改FTP下默認的21端口號 操作就是在vsftpd.conf添加listen_port **** 以及設置啟用ftp被動模式和設置被動模式端口范圍!
listen_port ****
pasv_enable=YES
pasv_min_port=10020
pasv_max_port=10040

然后就是修改/etc/services文件下的ftp的端口號

然后在/etc/vsftpd下建立chroot_list文件並編輯
並一行輸入一個ftp用戶
然后就是添加ftp用戶組:
groupadd webftp
然后創建剛才添加的ftp用戶(比如test用戶):
useradd -g webftp -M -d /var/www -s /sbin/nologin test
使用-g參數將它歸集到webftp用戶組下,-M參數不設置它的主目錄(沒有-M參數/home里會有個wwwer文件夾,這個文件夾沒多少實際用處,所以不用設置),-d參數設定它的初始登入目錄為/var/www,-s參數設定它不需要登陸系統/sbin/nologin,它被命名為test。
補一條命令,如果要修改用戶的主目錄可以使用usermod命令,語法如下:
usermod -d /var/www2 username
然后為這個用戶設置密碼:
passwd test
將目錄權限更改為該用戶:
chown -R test.webftp /var/www
然后重啟vsftpd服務
service vsftpd restart
現在可以使用netstat -ntlp | grep vsftpd 查看vsftpd監聽的端口號是否改變了!
不過ftp還是不能鏈接的,因為我們還沒有在防火牆里面為更改的端口添加通過的權限:
操作就是編輯/etc/sysconfig/iptables文件,照葫蘆畫瓢添加指定的端口就行了!
然后重啟iptables,這樣就可以訪問ftp了,但是現在只能訪問,是不能列出目錄的,
因為selinux的限制,所以我們可以設置allow_ftpd_full_access開啟即可!
setsebool allow_ftpd_full_access on
而且此代碼重啟失效,所以對我來說是適用的!
----------------------------------------------------------------------------- mysql配置 ----------------------------------------------------------------------------------
現在可以配置mysql了
由於centos默認自己已經裝了,於是就先卸載已經自帶的mysql包
rpm -qa | grep mysql
mysql-lib***
yum remove mysql-lib***
這樣系統自帶的mysql就會被刪除掉了 沒有用rpm -e的強制,不知道那樣會不會刪除依賴,yum remove 貌似是刪除了依賴關系的!
然后就是安裝mysql了,安裝沒有什么問題,問題就是你選擇什么版本了,關於版本選擇,網上有很多解釋了!我選擇的是5.5.42 (PS:貌似大家都在吐槽mysql被oracle收購后出的那個什么版本...)
安裝就沒有什么了,rpm -ivh 就OK了

安裝完成后,首先就是開啟mysql服務 以及設置mysql開機啟動(開機啟動自己衡量就行了!)
service mysql start chkconfig mysql on
然后就是設置mysql root用戶密碼以及整理用戶什么之類的,mysql內部的語法,大家都懂,就不多說了!
有一個需要注意的地方就是rpm安裝mysql不會在etc下生成my.cnf配置文件,我們需要手動把合適的配置文件復制到etc下
rpm安裝mysql 配置目錄在 /usr/share/mysql 然后根據服務器不同的內存配置選擇不同的配置文件復制到etc就行了
我這里選擇的是huge
cp /usr/share/mysql/my_huge.cnf /etc/my.cnf
然后就是更改mysql的端口號和防火牆設置:
更改端口號,因為在selinux下,所以需要更改selinux設置,網上都說使用semanage,
這個鏈接是我寫的在selinux模式下更改mysql端口:
http://www.cnblogs.com/waitfate/p/4285859.html
內容如下:
默認情況下 mysql更改端口后是不能通過selinux的
提示啟動錯誤,那么首先就要看mysql的錯誤日志
可是我不知道mysql錯誤日志的位置
首先,更改selinux的模式為passive 然后啟動mysql(passive模式下是能夠啟動mysql的)
setenforce 0
然后是用ps命令查看日志位置:
ps ax|grep mysql 或者 ps ax|grep "[m]ysql"
從輸出中找到--log-error
然后打開錯誤日志
提示:
[ERROR] Can't start server: Bind on TCP/IP port: Permission denied 150210 19:57:52 [ERROR] Do you already have another mysqld server running on port: 3308 ?
明顯是綁定到3308端口的時候提示錯誤了!
那么就要更改selinux對mysql開啟3308端口
網上搜索后說是需要使用semanage
但是centos里面並沒有找到semanage命令
那么查看哪個包提供了semanage
yum provides /usr/sbin/semanage
發現是policycoreutils-python包
於是安裝policycoreutils-python包
yum install policycoreutils-python
安裝完成后,為mysql綁定3308端口
semanage port -a -t mysqld_port_t -p tcp 3308
然后設置selinux為強制模式然后重啟mysql就可以了
setenfoce Enforcing
service mysql restart
更改端口這點就說到這! 至於防火牆,因為默認防火牆是開啟的,我們不添加更改的端口到防火牆,外部是不能夠通過修改后的端口連接到數據庫的!
----------------------------------------------------------------------------- nginx配置 ----------------------------------------------------------------------------------
下面就開始配置nginx了,因為是服務端軟件,肯定要選擇穩定版了
首先去官網下載穩定版(Stable version)的rpm包
然后rpm -ivh 安裝 然后yum install nginx就可以了!(這里並沒有自己編譯安裝!需要自己編譯安裝的,網上一大把教程...)
然后檢查nginx是否成功:
service nginx start
使用外部瀏覽器訪問即可看到welcome了!
yum方式安裝后,nginx的目錄在/etc/nginx下,所以配置文件為/etc/nginx/nginx.conf,網站配置文件在/etc/nginx/conf.d下面
下面更改網站目錄:
nginx.conf會加載conf.d下面所有的conf文件
所以我們編輯default.conf文件更改網站目錄!
設置nginx開機啟動
chkconfig nginx on

檢查配置重啟nginx,然后重新訪問即可!
nginx -t
service nginx restart
因為我在配置ftp的時候已經配置了80端口能夠訪問,所以防火牆我這里就沒有說配置80端口的事!如果沒有開啟80端口,使用如下命令開啟即可!
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart
至此已經可以訪問網站的靜態頁面了!現在還不能解析PHP腳本,因為我們還沒有配置使用cgi模式解析PHP
因為我們還沒有安裝PHP,等下面安裝完PHP再接着寫配置nginx使用PHP
----------------------------------------------------------------------------- php配置 ----------------------------------------------------------------------------------
首先就是下載php目前最穩定的版本啦!直達鏈接:http://php.net/downloads.php 目前最穩定的版本是5.6.6!
我下載的是tar.gz包
解壓:
tar -xzvf php-5.6.6.tar.gz
進入加壓后的文件夾,查看配置參數:
cd php-5.6.6 ./configure --help
參數非常多,因為php功能實在太強大了。你熟悉php的話,就知道它有上百個模塊,我們常用大概有幾十個。通常離不開的模塊,是默認被配置進去的,不需要我們通過configure指定,我們在configure步驟主要做兩件事:
- 定義一些路徑,如php安裝路徑,配置文件路徑
- 選擇所需的非默認模塊
所以我們的配置項如下:
為了方便閱讀,折行了,這一部分配置我也是從網上找到的 直達鏈接:http://blog.path8.net/archives/6068.html ./configure --prefix=/usr/local/php53 --with-config-file-path=/usr/local/etc --with-config-file-scan-dir=/usr/local/etc/php.d --mandir=/usr/local/man --enable-fpm --enable-calendar --with-mcrypt --enable-ftp --with-zlib --with-bz2 --with-curl --with-gd --enable-exif --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-mysql --with-mysqli --with-pdo-mysql --enable-zip --enable-bcmath --with-bz2
但是現在運行configure肯定不能成功,因為我們還缺少下面的依賴關系,安裝就行了
yum -y install libxml2-devel yum -y install bzip2-devel yum -y install libcurl-devel yum -y install libjpeg-devel libpng-devel
還有mcrypt安裝,同php一樣configure make makeinstall就行了
然后就是php的configure了
這里需要注意的是不要用root去configure和make 用普通用戶來執行,執行make install的時候再切換到root
(我按照網上的配置configure的時候,提示freetype config錯誤,這個是因為沒有安裝freetype,如果不安裝這個,那么php生成驗證碼模塊
可能會出現問題,安裝freetype很簡單 yum install freetype-devel 就可以了!)
configure可能需要幾分鍾,make可能需要20分鍾,所以現在可以去干點別的了...
漫長的等待...
等make install完成,那么php就安裝完成了,下面就是配置php的fpm了!什么是fpm呢,就是FastCGI Process Manager FastCGI進程管理器。
其實就CGI了!
php安裝完畢后,fpm配置文件的位置就是我們配置的 /usr/local/php**/etc/php-fpm.conf
編輯這個文件更改下面三個參數:
(約第25行) pid = /var/run/php-fpm.pid (約第32行) error_log = /var/log/php-fpm.log (約第190行) pm = static
然后啟動php-fpm 位置:/usr/local/php**/sbin/php-fpm
執行應該沒有任何提示,如果有錯誤輸出,可以到我們設置的日志/var/log/php-fpm.log查看!
然后就是配置php-fpm為服務,並設置開機啟動!
將php壓縮包解壓后的sapi/fpm下的init.d.php-fpm 里面的php_fpm_PID的值改為我們設置的/var/run/php-fpm.pid
原來的值是${prefix}/var/run/php-fpm.pid(這一個是我自己發現的,因為前面修改了pid位置,所以現在這個文件也要修改,不然啟動的時候會一直等待...)
然后將這個文件復制到/etc/init.d/下面:
cp init.d.php-fpm /etc/init.d/php-fpm
然后將php-fpm配置加入chkconfig 並設置開機啟動
chkconfig --add php-fpm chkconfig php-fpm on reboot
到此就配置好了php和cgi了,那么現在配置nginx支持php腳本
打開默認網站的配置文件
將如下框框內的內容前的注釋去掉,並更改fastcgi_param參數腳本路徑為網站目錄路徑:

然后檢查配置,重啟nginx,根目錄下建立了phpinfo測試文件,然后訪問進行測試!
nginx -t
service nginx restart
訪問就能看到phpinfo函數的內容了,可以直觀的看一下php配置的具體內容了!
----------------------------------------------------------------------------- 完善環境、優化配置 ----------------------------------------------------------------------------------
我們從phpinfo里面可以看到,當前php並沒有加載php.ini配置文件:

所以我們需要把編譯后的php生產環境的配置文件復制到/usr/local/etc里面去
cp php.ini-production /usr/local/etc/php.ini
然后就可以修改php.ini文件,然后重啟php-fpm了!
比如設置默認的時區:
date.timezone=Asia/Shanghai
這樣重啟php-fpm后,所有使用的date函數的地方,默認時區就是我們中國的東八區了!
然后就是配置nginx開啟gzip壓縮
操作就是編輯nginx的配置文件nginx.conf 取消gzip前面的注釋:
gzip on
然后就是設置上傳目錄沒有php腳本執行權限
在網站配置文件里面的php配置代碼上方加入如下代碼:
location ~ ^/(uploads|images)/.*\.php {
deny all;
}
這樣上傳目錄下的php腳本就不會投遞到php-fpm執行了!
然后就是優化mysql,那么所有的配置基本上就完成了,上傳代碼吧!
