標籤:linux centos php
在2012年的時候,因為要照顧新人對Linux以及相關服務的瞭解和學習,我特地把當時我們創業項目的所有服務搭建過程寫成了一篇文檔,可以讓他們學習並且有所參照。下面就以這篇文檔為底稿,進行一些修改和敏感資訊的刪除,分享給大家,希望對大家有益。
說明,以下的Rafael是我的英文名,應用是當前已經改變方向的功夫信,英文直寫拼音gongfuxin。本文除了Linux帳號、部分安全的基本配置,還有php/php-fpm/mysql/redis/nginx的安裝和配置。
轉載請註明出處。
更新記錄:
顧笑群 2012年10月26日 通過虛擬機器安裝機器,開始描述安裝步驟
顧笑群 2012年12月04日 通過虛擬機器安裝機器,並且安裝自我裝載的全套服務,完善整個安裝步驟
顧笑群 2014年8月7日 處於網路分享目的,有所刪除和修正
第一部分 乾淨伺服器的安裝
========================
1. 下載CentOS 6.3(當前最新已經是6.5了) 64bit的CD1(不是liveDVD或者liveCD),然後按照嚮導設定,下面是設定的一些注意點:
1) 由光碟片啟動,安裝Centos 6.3
2) 選擇預設的英語安裝
3) 磁碟選擇整個硬碟
4) 時間選擇上海,不要選擇UTC
5) 設定root密碼的時候,要備份這個密碼
6) 選擇basic server的方式安裝
7) 自訂選擇包,在語言中選擇中文包
2. 網路和系統配置
1) 自我裝載機,可以使用靜態IP,也可以是動態IP。公網機器一定要使用靜態IP,使用setup命令進行設定,也可以直接更改對應的設定檔:
/etc/sysconfig/network-scripts/ifcfg-eth0,特別是要把ONBOOT的值改為yes,一般改好後最好重啟,就能使用網路了
2) 然後執行yum update,對系統進行全面的更新,完成之後最好重新啟動一次
3) 如果核心升級了,不要刪除所有的老核心,至少保留最近一次的老核心,以防新核心有問題
4) 關閉SELinux,通過修改/etc/selinux/config來實現。以後可以通過防火牆來保護伺服器
3. 賬戶的設定和維護
1) 建立系統管理使用者,如useradd rafael
2) 對新建立的使用者進行密碼設定,如passwd rafael,一般要備份這個密碼
4) 把rafael加入到wheel使用者組中,在/etc/group中進行配置
5) 把wheel使用者組設定為sudo的信任使用者組,在/etc/sudoers中進行修改,注意這個檔案要先改為可寫,修改完後再該回去
6) 禁止root使用者遠程ssh登入,到/etc/ssh/sshd_config中進行配置,設定PermitRootLogin no,然後重新啟動sshd
7) 以後盡量通過ssh遠程登入這個機器了
第二部分 安裝nginx, mysql, php, redis等
========================
1. 設定epel更新源(官方源太老了)
1) 主要參照http://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/,會有一些小的變動,以下面為準。首先完成下面兩步:
a. sudo rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm (最好到http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/看看epel的最新版本,應該不止6-8了)
b. sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm(最好到http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/看看最新版本)?
2) 然後找到nginx源,到http://nginx.org/en/download.html找到CentOS6一行,然後可以下載對應的rpm,也可以直接通過如下命令:sudo rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
2. 安裝需要的軟體
1) 安裝php和nginx,如:sudo yum --enablerepo=remi install nginx php php-fpm php-common
2) 安裝php的組件,如:sudo yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-devel
3) php-redis請根據https://github.com/nicolasff/phpredis上的說明用Git下載並編譯和安裝(安裝gcc和Git先:sudo yum --enablerepo=remi install gcc git),然後需要手動的在/etc/php.d/中增加redis.conf以及相關內容
4) 安裝mysql和redis,如:sudo yum --enablerepo=remi install mysql mysql-devel mysql-server redis
5) 然後分別配置php-fpm/nginx/mysql/redis在2/3/4/5層級自動啟動,可以通過chkconfig來設定
第三部分:配置mysql, redis, nignx, php等
========================
1. 配置mysql
1) 啟動mysql:sudo service mysqld start,會提示你第一次啟動的一些初始化注意事項
2) 設定root的本地密碼,備份密碼;可以看情況是否設定root的遠程帳號
3) 登入mysql,用命令列建立其他使用者和密碼,必須設定gongfuxin帳號以及密碼,備份密碼,此帳號用於網站登入
4) 建立基於utf8的資料庫gongfuxin,然後匯入gfx_recreate_all.sql,還有城市,省份和大學的對應表,把gongfuxin資料庫的所有許可權賦予gongfuxin帳號:grant all privileges on gongfuxin.* to [email protected];
5) 可以在遠程登入mysql進行設定,這樣更方便,但是之前要配置遠程帳號,並且要開啟防火牆的3306(tcp)連接埠,之前的帳號建立,資料庫建立都可以使用這種方式,但是安全欠妥
6) 對於mysql的設定檔,可以在/usr/share/mysql/中找到,然後根據具體記憶體大小選擇,覆蓋到/etc/my.cnf中就可以了,然後重新啟動:sudo service mysqld restart
2. 配置redis
1) 設定檔在/etc/redis.conf,暫時不需要配置
2) 啟動redis:sudo service redis start
3. 配置php
1) 編輯/etc/php.ini,修改如下(這裡的配置是針對上線伺服器的,不是針對開發環境的):
?implicit_flush = On
?expose_php = Off
?error_log = /var/log/php-fpm/php_error.log
2) 修改/var/lib/php/session的許可權,使之屬於nginx使用者組,而非apache使用者組(此時root應該為使用者,不需要改變)
3) 修改/var/log/php-fpm的許可權,使之屬於nginx使用者,而非apache使用者(此時root應該為使用者組,不需要改變)
4) 修改/etc/php-fpm.d/www.conf,使user和group都是nginx
5) 啟動php-fpm:sudo service php-fpm start
4. 配置nginx
1) /etc/nginx/nginx.conf根據實際情況配置,對於自我裝載環境不需要配置,注意,一般需要修改系統進程最大線程數以及控制代碼數,用ulimit -a可以查看;進程的線程堆棧大小在程式中自動修改
2) /etc/nginx/conf.d/default.conf,需要配置成我們的發布目錄,如果有多個發布目錄就需要多個類似的設定檔,並且配置成PHP解析,如下:
*********file start*********
listen 8050;
server_name localhost;
charset utf-8;
access_log /var/log/nginx/access.log main;
root /usr/share/nginx/gongfuxin;
location / {
index index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
client_max_body_size 8m;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
location ~ /\.ht {
deny all;
}
}
*********file end*********
3) 請根據配置分別修改php-cgi的監聽連接埠(下面會說道);然後開啟80(tcp,正規伺服器,必須是80連接埠)或者8050(tcp,自我裝載,也可以使用其他未被使用的連接埠)的防火牆設定
4) 需要建立/usr/share/nginx/gongfuxin檔案夾
5) 啟動nginx:sudo service nginx start
?