摘要:在使用更新系統(tǒng)后,需要檢查下目錄下是否會(huì)多出一個(gè),如果多出,將它重命名成別的。否則,將使用這個(gè)配置文件啟動(dòng),可能造成無法正常啟動(dòng)等問題。
參考 地址:
https://github.com/lmxdawn/PH...
https://segmentfault.com/a/11...
后面持續(xù)更新
Linux下php環(huán)境安裝,這里僅供自己參考
安裝Apache 使用yum安裝
yum install httpd -y
安裝iptables 防火墻 使用yum安裝
yum install iptables -y 客戶端
yum install iptables-service -y 服務(wù)器端
安裝php5.6 因?yàn)榭紤]到y(tǒng)um安裝版本太低 用源碼安裝
下載源碼編譯文件
* wget http://mirrors.sohu.com/php/php-5.6.9.tar.xz (這里用的是搜狐的鏡像文件)
解壓
* tar xf php-5.6.9.tar.xz
安裝c編譯庫(kù)
* yum install gcc gcc-c++ -y
安裝php依賴的包??
* cd php-5.6.9 * ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-pcntl --enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-zip --enable-ftp --enable-soap --enable-xml --enable-mbstring --disable-rpath --disable-debug --disable-fileinfo --with-mysql --with-mysqli --with-pdo-mysql --with-pcre-regex --with-iconv --with-zlib --with-mcrypt --with-gd --with-jpeg-dir --with-freetype-dir=/usr/local/freetype --with-openssl --with-mhash --with-xmlrpc --with-curl --with-imap-ssl 如果報(bào)錯(cuò) configure: error: xml2-config not found. Please check your libxml2 installation. 需要安裝 libxml2 * yum install libxml2 -y * yum install libxml2-devel -y 重新執(zhí)行 php依賴包 再次報(bào)錯(cuò) configure: error: Cannot find OpenSSL"s需要安裝 openssl * yum install openssl openssl-devel -y 重新執(zhí)行 php依賴包 再次報(bào)錯(cuò) configure: error: Please reinstall the libcurl distribution -easy.h should be in /include/curl/ curl的dev包沒有安裝 * yum install libcurl-devel -y 重新執(zhí)行 php依賴包 再次報(bào)錯(cuò) configure: error: png.h not found. * yum install libpng-devel -y 重新執(zhí)行 php依賴包 再次報(bào)錯(cuò)configure: error: mcrypt.h not found. Please reinstall libmcrypt. * yum install libmcrypt-devel -y 重新執(zhí)行 php依賴包 基本不報(bào)錯(cuò)了 但是還可以在安裝一些 * yum install libjpeg-devel freetype-devel -y 重新執(zhí)行 php依賴包 也可以一次性安裝全部需要的擴(kuò)展 (注意用這個(gè)將意味著上面的報(bào)錯(cuò)會(huì)不存在) * yum install libxml2 libxml2-devel openssl openssl-devel libcurl-devel libpng-devel libmcrypt-devel libjpeg-devel freetype-devel -y 重新執(zhí)行 php依賴包
直到出現(xiàn) Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: main/php_config.h is unchanged config.status: executing default commands 總算成功 開始安裝 * make 出現(xiàn)這個(gè) Don"t forget to run "make test". 沒什么問題 * make install 完成安裝 下一步 把php的配置文件修改到 安裝目錄下面 并且修改名稱為php.ini * cp php.ini-production /usr/local/php/etc/php.ini? 當(dāng)我們使用nginx還要把php-fpm.conf復(fù)制到/usr/local/php/etc/里頭 * cp /root/php-5.6.9/sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf 將php-fpm作為server服務(wù) (/root/php-5.6.9/是php的源碼編譯后的文件夾) * cp /root/php-5.6.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 設(shè)置權(quán)限,并添加服務(wù) * chmod +x /etc/init.d/php-fpm * chkconfig --add php-fpm 以后可以使用如下命令管理php-fpm了 * service php-fpm start * service php-fpm stop * service php-fpm restart * service php-fpm reload 后面有報(bào)錯(cuò)直接 killall php-fpm (killall 殺死進(jìn)程命令) 為了方便把php設(shè)置成為全局變量 方法: 全局的: cd / 到這個(gè)目錄編輯/etc/profile文件 * cd / * cd /etc * vim profile 加上 PATH=/usr/local/php/bin:$PATH export PATH 保存退出 執(zhí)行 * source /etc/profile 局部的: * cd / * cd /home/ * cd /lmx/ (這是例子 lmx 是你的用戶名) * ls -a 查看所有文件,包含隱藏的文件 * vim bash_profile (這個(gè)是局部的,) 加上 source /etc/profile 保存退出 執(zhí)行 * source .bash_profile 就OK了 對(duì)了還有一個(gè) 設(shè)置時(shí)區(qū): 修改php.ini 文件 中的 ;date.timezone = 為 date.timezone = PRC 中國(guó)時(shí)區(qū)
Nginx 安裝
安裝依賴
yum install pcre-devel -y
yum install zlib-devel -y
下載源碼包
cd /usr/local/src
wget http://nginx.org/download/ngi...
tar zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
./configure --prefix=/usr/local/nginx
make && make install
啟動(dòng)nginx
/usr/local/nginx/sbin/nginx
然后訪問這個(gè)IP可以看到nginx的歡迎界面
配置nginx支持php
cd /usr/local/nginx/conf
vim nginx.conf
set nu (顯示行號(hào))
大約 64行
因?yàn)橛胻hinkPHP5.0 所有用文檔上面提供的nginx配置
注意:
fastcgi_param SCRIPT_FILENAME 這里后面的去掉 加上: * $document_root$fastcgi_script_name
保存后
查看進(jìn)程
* ps -A | grep nginx
殺死進(jìn)程
* killall nginx
啟動(dòng)nginx
* /usr/local/nginx/sbin/nginx
Nginx 配置虛擬主機(jī)
cd /usr/local/nginx/conf
vim nginx.conf
添加對(duì)應(yīng)的:
server { listen 80; server_name xxx.com; root "/var/www/xxx.com/xxx/public"; location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } index index.html index.htm index.php l.php; autoindex off; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } location ~.(jpg|jpeg|png|js|css) { expires 30d; } }
MySQL 的安裝
使用下面的命令檢查是否安裝有MySQL Server
* rpm -qa | grep mysql
有的話通過下面的命令來卸載掉
* rpm -e mysql //普通刪除模式 * rpm -e --nodeps mysql // 強(qiáng)力刪除模式,如果使用上面命令刪除時(shí),提示有依賴的其它文件,則用該命令可以對(duì)其進(jìn)行強(qiáng)力刪除
安裝編譯源碼所需的工具和庫(kù)
* yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
添加用戶
* groupadd mysql * useradd -r -g mysql mysql
編譯安裝
* cd /usr/local/src * wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.34.tar.gz * tar -zxvf mysql-5.6.34.tar.gz * cd mysql-5.6.34
編譯參數(shù):
* 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=/tmp/mysqld.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 配置的注釋: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql #安裝路徑 -DMYSQL_DATADIR=/usr/local/mysql/data #數(shù)據(jù)文件存放位置 -DSYSCONFDIR=/etc #my.cnf路徑 -DWITH_MYISAM_STORAGE_ENGINE=1 #支持MyIASM引擎 -DWITH_INNOBASE_STORAGE_ENGINE=1 #支持InnoDB引擎 -DWITH_MEMORY_STORAGE_ENGINE=1 #支持Memory引擎 -DWITH_READLINE=1 #快捷鍵功能(我沒用過) -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock #連接數(shù)據(jù)庫(kù)socket路徑 -DMYSQL_TCP_PORT=3306 #端口 -DENABLED_LOCAL_INFILE=1 #允許從本地導(dǎo)入數(shù)據(jù) -DWITH_PARTITION_STORAGE_ENGINE=1 #安裝支持?jǐn)?shù)據(jù)庫(kù)分區(qū) -DEXTRA_CHARSETS=all #安裝所有的字符集 -DDEFAULT_CHARSET=utf8 #默認(rèn)字符 -DDEFAULT_COLLATION=utf8_general_ci 編譯的參數(shù)可以參考http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html * make && make install
改變目錄所有者
* chown -R mysql:mysql /usr/local/mysql
注:在啟動(dòng)MySQL服務(wù)時(shí),會(huì)按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會(huì)搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認(rèn)位置!
注意:在CentOS 6.4版操作系統(tǒng)的最小安裝完成后,在/etc目錄下會(huì)存在一個(gè)my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會(huì)干擾源碼安裝的MySQL的正確配置,造成無法啟動(dòng)。
在使用"yum update"更新系統(tǒng)后,需要檢查下/etc目錄下是否會(huì)多出一個(gè)my.cnf,如果多出,將它重命名成別的。否則,MySQL將使用這個(gè)配置文件啟動(dòng),可能造成無法正常啟動(dòng)等問題。
進(jìn)入安裝路徑
* cd /usr/local/mysql
注冊(cè)為服務(wù)
* cd /usr/local/mysql/support-files #注冊(cè)服務(wù) * cp mysql.server /etc/rc.d/init.d/mysql #使用默認(rèn)配置文件 * cp my-default.cnf /etc/my.cnf #讓chkconfig管理mysql服務(wù) * chkconfig --add mysql #開機(jī)啟動(dòng) * chkconfig mysql on
初始化數(shù)據(jù)庫(kù)
* cd /usr/local/mysql/scripts * ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
啟動(dòng)MySQL服務(wù)
* service mysql start
配置用戶
MySQL啟動(dòng)成功后,root默認(rèn)沒有密碼,我們需要設(shè)置root密碼。 設(shè)置之前,我們需要先設(shè)置PATH,要不不能直接調(diào)用mysql 修改/etc/profile文件,在文件末尾添加 PATH=/usr/local/mysql/bin:$PATH export PATH 關(guān)閉文件,運(yùn)行下面的命令,讓配置立即生效 * source /etc/profile 現(xiàn)在,我們可以在終端內(nèi)直接輸入mysql進(jìn)入,mysql的環(huán)境了 執(zhí)行下面的命令修改root密碼 mysql -uroot mysql> SET PASSWORD = PASSWORD("123456"); 配置遠(yuǎn)程訪問權(quán)限 GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "123456" WITH GRANT OPTION;
改變編碼,防止亂碼 SHOW VARIABLES LIKE "character%" 修改mysql的my.cnf文件 [client] default-character-set=utf8 [mysqld] character-set-server=utf8 [mysql] default-character-set=utf8
下面來介紹 Docker 配置 php-fpm + nginx
簡(jiǎn)介 : 這個(gè)自行百度Docker 的安裝 (這里 介紹CentOS 7 )
參照 菜鳥教程 http://www.runoob.com/docker/...
uname -r 3.10.0-327.el7.x86_64 查看版本
yum -y install docker 這里 直接yum 安裝,
service docker start 啟動(dòng)
這一步很關(guān)鍵 (配置 Docker 加速器) 不配置基本下載不了,墻的厲害
進(jìn)入 https://dashboard.daocloud.io/ 先注冊(cè)一個(gè)賬號(hào),沒收費(fèi), 然后登陸后 進(jìn)入個(gè)人中心,里面有 加速器,點(diǎn)擊進(jìn)入就好,然后就自己看了
這里附上我的
* curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://2327ed6d.m.daocloud.io
每個(gè)人的都不一樣,
php-fpm 安裝
參照菜鳥教程 http://www.runoob.com/docker/...
先切換盤
* cd 切換到 root * mkdir -p ~/php-fpm/logs ~/php-fpm/conf 創(chuàng)建php-fpm文件夾,這隨自己意 * mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf 創(chuàng)建 nginx 文件夾
查找Docker Hub上的php鏡像
* docker search php
這里我用,標(biāo)簽為5.6-fpm 5.6版本的
* docker pull php:5.6-fpm
創(chuàng)建完成后,我們可以在本地的鏡像列表里查找到剛剛創(chuàng)建的鏡像
* docker images
運(yùn)行容器
* docker run -p 9000:9000 --name myphp-fpm -v ~/nginx/www:/www -v ~/php-fpm/conf:/usr/local/etc/php -v ~/php-fpm/logs:/phplogs -d php:5.6-fpm
命令說明:
-p 9000:9000 :將容器的9000端口映射到主機(jī)的9000端口 --name myphp-fpm :將容器命名為myphp-fpm -v ~/nginx/www:/www :將主機(jī)中~/nginx/www掛載到容器的/www (這里注意 等會(huì)配置nginx 的 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 要用這個(gè) /www 替換 $document_root) -v ~/php-fpm/conf:/usr/local/etc/php :將主機(jī)中~/php-fpm/conf目錄掛載到容器的/usr/local/etc/php -v ~/php-fpm/logs:/phplogs :將主機(jī)中~/php-fpm/logs目錄掛載到容器的/phplogs
查看 容器是否啟動(dòng)
* docker ps 如果這里沒有 證明啟動(dòng)有誤,使用 docker ps -a 查看所有 看運(yùn)行狀態(tài) 沒有 up 多少時(shí)間 就證明失敗
失敗就要先清除
* docker rm -f $(docker ps -a -q) 刪除所有容器 ($(docker ps -a -q) 這里可以用 id 或者 容器名稱)
成功 可以查看進(jìn)入容器查看 進(jìn)入后就跟Linux 操作一樣了
* docker exec -it myphp-fpm bash 進(jìn)入容器 myphp-fpm 這個(gè)是容器名
查看所有容器的IP (這個(gè)也很重要 因?yàn)榈葧?huì) 配置 nginx 的時(shí)候會(huì)用到 fastcgi_pass 172.17.0.3:9000;) 172.17.0.3 是我這里的IP 9000 是剛剛啟動(dòng)php-fpm時(shí)候的端口號(hào)
* docker inspect --format="{{.NetworkSettings.IPAddress}}" 容器id ($(docker ps -a -q) 代表所有)
接下來安裝 nginx
參照 菜鳥教程 http://www.runoob.com/docker/...
查找Docker Hub上的nginx鏡像
* docker search nginx
這里我拉取官方的鏡像
* docker pull nginx
創(chuàng)建完成后,我們可以在本地的鏡像列表里查找到剛剛創(chuàng)建的鏡像
* docker images
使用nginx鏡像 運(yùn)行容器 (運(yùn)行前 先配置好配置變量)
進(jìn)入 配置文件 * cd ~/nginx/conf * mkdir conf.d 創(chuàng)建配置文件夾 (這里 nginx 一般的配置文件是 /etc/nginx/nginx.conf 但是我們不用 直接配置虛擬機(jī) 所有在 conf 下面創(chuàng)建 conf.d) * cd conf.d 進(jìn)入配置文件 * vi default.conf (這里對(duì)應(yīng) nginx 容器里面的 /etc/nginx/conf.d 里面的 default.conf 文件) default.conf 內(nèi)容如下: server { listen 80; server_name www.yuxin.com; #這里是我自己的域名 location / { root /usr/share/nginx/html; #這個(gè)是nginx 默認(rèn)的靜態(tài)文件路徑 等會(huì)運(yùn)行的時(shí)候會(huì)掛載到 這個(gè)文件夾 如果你掛載到其它文件夾自行調(diào)整 index index.html index.htm; #框架路由設(shè)置 這里我是 tp 框架 誰說tp 不好, 之前一直用 YII2 框架 ,誰好誰壞 就不說了, if ( !-e $request_filename ) { rewrite ^(.*)$ /index.php?url=$1 last; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ .php$ { fastcgi_pass 172.17.0.3:9000; #這里的 172.17.0.3 就是 剛剛 myphp-fpm 容器的IP fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; #這里的 /www 就是剛剛運(yùn)行 myphp-fpm 的時(shí)候 掛載的 文件 include fastcgi_params; } }
運(yùn)行容器:
* docker run -p 80:80 --name mynginx -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/conf.d:/etc/nginx/conf.d -v ~/nginx/logs:/wwwlogs -d nginx 命令說明: -p 80:80:將容器的80端口映射到主機(jī)的80端口 --name mynginx:將容器命名為mynginx -v ~/nginx/www:/usr/share/nginx/html:將主機(jī)中~/nginx/www掛載到容器的/usr/share/nginx/html -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:將主機(jī)中~/nginx/conf.d掛載到容器的/etc/nginx/conf.d -v ~/nginx/logs:/wwwlogs:將主機(jī)中~/nginx/logs掛載到容器的/wwwlogs
這里再次說明一下 這個(gè)掛載是這么操作的 /usr/share/nginx/html 是容器 mynginx 的默認(rèn)靜態(tài)文件存放路徑,我在 配置文件中 配置了 root /usr/share/nginx/html 如果配置的其它目錄自行更改
上面 運(yùn)行 php-fpm 的時(shí)候 掛載的 /www 就是把 myphp-fpm 這個(gè)容器中的 /www 目錄掛載到 當(dāng)前主機(jī)的 ~/nginx/www 下,就是說兩個(gè)容器的 都掛載到 ~/nginx/www 下, 這里配置錯(cuò)了運(yùn)行php文件會(huì)直接 下載 或者 報(bào)錯(cuò) file not found 意思就是 fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; 這里有問題
查看 狀態(tài)
* docker ps
一切 OK 后
測(cè)試 結(jié)果
* cd ~/nginx/www * vi index.html 內(nèi)容 :Hello World
* vi phpinfo.php 內(nèi)容 :你會(huì)發(fā)現(xiàn) phpinfo 會(huì)有警告 date_default_timezone_set 沒有設(shè)置
這里因?yàn)?myphp-fpm 容器的配置文件 掛載到 當(dāng)前主機(jī)的 ~/php-fpm/conf 目錄了 直接加上配置文件 即可
cd ~/php-fpm/conf
vi php.ini
加入 : date.timezone = PRC # 設(shè)置時(shí)區(qū) PRC 就是中國(guó)但是注意 還是要重新運(yùn)行 myphp-fpm 容器
* docker restart myphp-fpm大功告成,有什么問題歡迎討論
后面會(huì)附上 redis MySQL 的基本安裝
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39417.html
摘要:在使用更新系統(tǒng)后,需要檢查下目錄下是否會(huì)多出一個(gè),如果多出,將它重命名成別的。否則,將使用這個(gè)配置文件啟動(dòng),可能造成無法正常啟動(dòng)等問題。 參考 地址:https://github.com/lmxdawn/PH...https://segmentfault.com/a/11... 后面持續(xù)更新 Linux下php環(huán)境安裝,這里僅供自己參考安裝Apache 使用yum安裝 yum inst...
摘要:在使用更新系統(tǒng)后,需要檢查下目錄下是否會(huì)多出一個(gè),如果多出,將它重命名成別的。否則,將使用這個(gè)配置文件啟動(dòng),可能造成無法正常啟動(dòng)等問題。 參考 地址:https://github.com/lmxdawn/PH...https://segmentfault.com/a/11... 后面持續(xù)更新 Linux下php環(huán)境安裝,這里僅供自己參考安裝Apache 使用yum安裝 yum inst...
摘要:用進(jìn)行操作為在的工作區(qū)域,項(xiàng)目也是掛載在里面,所有我們可以直接在容器里運(yùn)行。或者進(jìn)入宿主機(jī)目錄下用命令注意事項(xiàng)注意掛載路徑構(gòu)建失敗時(shí),注意容器內(nèi)是否報(bào)錯(cuò)加速鏡像。本文首發(fā)在我的博客徒手用構(gòu)建自己的開發(fā)環(huán)境 1. 前言 1.1 為什么要用 Docker ? 是否有這樣的場(chǎng)景,你搞了一個(gè)項(xiàng)目,在本地開發(fā)時(shí)需要搭建環(huán)境,放到線上時(shí)也需要搭建環(huán)境,到公司想暗戳戳玩一下要搭建環(huán)境,不搭還不行,因...
閱讀 2492·2021-09-28 09:36
閱讀 1486·2021-09-22 15:33
閱讀 3636·2019-08-30 15:44
閱讀 1743·2019-08-29 13:14
閱讀 3132·2019-08-29 11:17
閱讀 1441·2019-08-29 11:03
閱讀 2905·2019-08-26 17:10
閱讀 681·2019-08-26 12:13