之前用的最多的 web 框架是 LNMP,偶尔也会用到 LAMP。接下来简单说下 LAMP 环境的部署记录,这里选择
源码安装的方式:
1)Mysql 的安装
部署过程参考:http://www.cnblogs.com/kevingrace/p/6109679.html
2)Apache 的安装(下面各软件版本要对应,否则会因为版本不兼容而导致 Apache 编译失败)
LAMP 编译安装软件包下载地址:https://pan.baidu.com/s/1MPga1bL1sutGeubW-uXcpg
提取密码:qp2c
依赖软件安装
[root@jenkins-server ~]# yum install gcc gcc-c++ make wget
[root@jenkins-server ~]# yum install zlib-devel openssl-devel
[root@jenkins-server ~]# yum install -y perl perl-devel
apr 编译安装(下载地址:http://archive.apache.org/dist/apr/)
[root@jenkins-server ~]# cd /usr/local/src/
[root@jenkins-server src]# wget http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.gz
[root@jenkins-server src]# tar zxvf apr-1.5.2.tar.gz
[root@jenkins-server src]# cd apr-1.5.2
[root@jenkins-server apr-1.5.2]# ./configure --prefix=/usr/local/apache/apr && make && make
install
apr-util 编译安装(下载地址:http://apr.apache.org/download.cgi)
[root@jenkins-server src]# wget http://mirrors.cnnic.cn/apache//apr/apr-util-1.5.4.tar.gz
[root@jenkins-server src]# tar zxvf apr-util-1.5.4.tar.gz
[root@jenkins-server src]# cd apr-util-1.5.4
[root@jenkins-server apr-util-1.5.4]# ./configure --prefix=/usr/local/apache/apr-util --with-
apr=/usr/local/apache/apr
[root@jenkins-server apr-util-1.5.4]# make && make install
如果出现报错:
make[1]: *** [xml/apr_xml.lo] Error 1
make[1]: Leaving directory `/usr/local/src/apr-util-1.6.1'
make: *** [all-recursive] Error 1
解决办法:yum install expat-devel -y
pcre 编译安装
[root@jenkins-server src]# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-
8.37.tar.gz
[root@jenkins-server src]# tar zxvf pcre-8.37.tar.gz
[root@jenkins-server src]# cd pcre-8.37
[root@jenkins-server pcre-8.37]# ./configure && make && make install
apache 编译安装
[root@jenkins-server src]# wget http://www.apache.org/dist/httpd/httpd-2.4.25.tar.gz
[root@jenkins-server src]# tar zxvf httpd-2.4.25.tar.gz
[root@jenkins-server src]# cd httpd-2.4.25
[root@jenkins-server httpd-2.4.25]# ./configure --prefix=/usr/local/apache --with-
apr=/usr/local/apache/apr/bin/apr-1-config --with-apr-util=/usr/local/apache/apr-util/bin/apu-1-
config --enable-module=so --enable-mods-shared=all --enable-deflate --enable-expires --
enable-headers --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --
enable-mime-magic --enable-authn-dbm --enable-vhost-alias --enable-so --enable-rewrite --
enable-ssl --with-mpm=prefork
[root@jenkins-server httpd-2.4.25]# make && make install
配置 apache
[root@jenkins-server src]# cd /usr/local/apache/conf/
[root@jenkins-server conf]# vim httpd.conf
........
ServerName localhost:80
........
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
//这两行是默认就有的,在这两行下面添加下面两行
//使 apache 支持 php
//添加 php 模块,这个在后面 php 编译安装后就
//修改 apache 站点目录路径,默认是
//添加默认的首页面,index.html 和 index.php
//添加虚拟主机配置文件
modules/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php5
......
LoadModule php5_module
会自动加进来。最后一定要检查这里是否有 php 模块产生
......
DocumentRoot "/var/www/html"
/usr/local/apache/htdocs。注意这两行要修改一致。
.......
DirectoryIndex index.html index.php
......
Include conf/extra/mxwang.conf
[root@jenkins-server conf]# cd extra/
[root@jenkins-server extra]# vim mxwang.conf
ServerName www.mxwang.cn
DocumentRoot /var/www/html/
ErrorLog "/var/log/httpd/www.mxwang.cn-error_log"
CustomLog "/var/log/httpd/www.mxwang.cn-access_log" common
启动 apache
[root@jenkins-server extra]# /usr/local/apache/bin/httpd
[root@jenkins-server extra]# ps -ef|grep http
root 30145 1 2 19:53 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30146 30145 0 19:53 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30147 30145 0 19:53 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30148 30145 0 19:53 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30149 30145 0 19:53 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30150 30145 0 19:53 ? 00:00:00 /usr/local/apache/bin/httpd
root 30156 2090 0 19:53 pts/3 00:00:00 grep --color http
[root@jenkins-server extra]# cat /var/www/html/test.html
sdfasdfasdf
测试访问:http://www.mxwang.cn/test.html
3)PHP 编译安装
[root@jenkins-server ~]# yum install libxml2-devel curl-devel libjpeg libjpeg-devel libpng
libpng-devel freetype freetype-devel net-snmp net-snmp-devel
[root@jenkins-server ~]# cd /usr/local/src/
[root@jenkins-server src]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
[root@jenkins-server src]# tar zxvf libiconv-1.14.tar.gz
[root@jenkins-server src]# cd libiconv-1.14
[root@jenkins-server libiconv-1.14]# ./configure --prefix=/usr/local/php/libiconv && make &&
make install
[root@jenkins-server src]# wget
http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
[root@jenkins-server src]# tar zxvf libmcrypt-2.5.8.tar.gz
[root@jenkins-server src]# cd libmcrypt-2.5.8
[root@jenkins-server libmcrypt-2.5.8]# ./configure && make && make install
[root@jenkins-server libmcrypt-2.5.8]# /sbin/ldconfig && cd libltdl/
[root@jenkins-server libltdl]# ./configure --enable-ltdl-install && make && make install
[root@jenkins-server src]# wget
http://nchc.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
[root@jenkins-server src]# tar zxvf mhash-0.9.9.9.tar.gz
[root@jenkins-server src]# cd mhash-0.9.9.9
[root@jenkins-server mhash-0.9.9.9]# ./configure && make && make install
[root@jenkins-server src]# wget
http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
[root@jenkins-server src]# tar zxvf mcrypt-2.6.8.tar.gz
[root@jenkins-server src]# cd mcrypt-2.6.8
[root@jenkins-server mcrypt-2.6.8]# /sbin/ldconfig && export LD_LIBRARY_PATH=/usr/local/lib:
LD_LIBRARY_PATH
[root@jenkins-server mcrypt-2.6.8]# ./configure && make && make install
[root@jenkins-server src]# wget http://cn2.php.net/distributions/php-5.6.15.tar.gz
[root@jenkins-server src]# tar zxvf php-5.6.15.tar.gz
[root@jenkins-server src]# cd php-5.6.15
[root@jenkins-server php-5.6.15]# ./configure --prefix=/usr/local/php --with-config-file-
path=/usr/local/php/etc --with-iconv=/usr/local/php/libiconv --with-
apxs2=/usr/local/apache/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-
mysql=mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-pear --with-freetype-dir --with-
zlib --with-libxml-dir --with-iconv-dir --with-xmlrpc --with-mhash --with-mcrypt --with-curl --
with-openssl --with-snmp --with-gettext --enable-pdo --enable-mbstring --enable-ctype --
enable-simplexml --enable-ftp --enable-sockets --enable-gd-native-ttf --enable-sysvsem --
enable-exif --enable-sysvshm --enable-xml --enable-dom --enable-simplexml --enable-shmop --
enable-zip --enable-mbregex --enable-bcmath --enable-inline-optimization --enable-soap
[root@jenkins-server php-5.6.15]# make && make install
[root@jenkins-server php-5.6.15]# cp php.ini-production /usr/local/php/etc/php.ini
[root@jenkins-server php-5.6.15]# vim /etc/profile
......
export PATH=$PATH:/usr/local/php/bin
[root@jenkins-server php-5.6.15]# source /etc/profile
[root@jenkins-server src]# /usr/local/php/bin/php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
snmp
soap
sockets
SPL
sqlite3
standard
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
[Zend Modules]
一定要记得重启 aapche
[root@jenkins-server src]# pkill -9 http
[root@jenkins-server src]# ps -ef|grep http
root 31091 12736 0 20:06 pts/6 00:00:00 grep --color http
[root@jenkins-server src]# /usr/local/apache/bin/httpd
[root@jenkins-server src]# ps -ef|grep http
root 31098 1 7 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31099 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31100 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31101 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31102 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31103 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
root 31106 12736 0 20:06 pts/6 00:00:00 grep --color http
测试 php:
[root@jenkins-server src]# cat /var/www/html/test.php
访问:www.mxwang.cn/test.php
注意几点:
php.ini 文件中的设置时区
[root@jenkins-server src]# vim /usr/local/php/etc/php.ini
......
date.timezone = PRC
保证站点目录下的文件权限和 apache 启动用户一致:
[root@jenkins-server src]# ps -ef|grep http
root 31098 1 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31099 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31100 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31101 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31102 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31103 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 31151 31098 0 20:06 ? 00:00:00 /usr/local/apache/bin/httpd
root 31409 12736 0 20:10 pts/6 00:00:00 grep --color http
[root@jenkins-server src]# ll /var/www/html/
total 40232
drwxr-xr-x. 3 777 nobody 4096 Jan 5 12:47 addons
-rw-r--r--. 1 777 nobody 464 Jan 5 12:47 admin.php
drwxr-xr-x. 2 777 nobody 4096 Jan 5 12:47 api
-rw-r--r--. 1 777 nobody 216 Jan 5 12:47 api.php
......
可以将上面的安装过程归档在一个安装脚本里进行一键安装
=================apache 下 http 强制转 https 配置==================
1)在 httpd.conf 文件里使下面模块生效
[root@back ~]# cat /usr/local/apache/conf/httpd.conf|grep rewrite_module
.......
LoadModule rewrite_module modules/mod_rewrite.so
2)httpd.conf 配置文件或者是在 httpd-vhost.conf 文件里修改
[root@back ~]# cat /usr/local/apache/conf/httpd.conf
.......
DocumentRoot "/data/vhosts"
Options FollowSymLinks MultiViews Includes
AllowOverride All
Require all granted
3)在网站根目录下面添加该文件“.htaccess” 目录访问控制文件,并添加如下内容:
#---------------------------------
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
https
#----------------------------------
#开启重定向引擎
#可以不设置
#非 443 端口的数据全部进行重定向
#把需要重定向的内容重定向到
#如果是默认不是 443 端口,那么可以在最后一行写成这样
RewriteRule ^.*$ https://www.wang.com:8443
#当然如果默认是 443 的话,也可以这么写
RewriteRule ^.*$ https://www.wang.com
#该 .htaccess 需要放置在网站的根目录下面才可以生效
#----------------------------------
含义是这样的:为了让用户访问传统的 http://转到 https://上来,用了一下 rewrite 规则:
第一句:启动 rewrite 引擎
第二句:rewrite 的条件是访问的服务器端口不是 443 端口
第三句:这是正则表达式,^是开头,$是结束,/?表示有没有/都可以(0 或 1 个),(.*)是任何数量的任意字符
整句的意思是讲:启动 rewrite 模块,将所有访问非 443 端口的请求,url 地址内容不变,将 http://变成
https://。
========================================================
==
看看下面一例:
#这些模块功能的配置
[root@back ~]# cat /usr/local/apache/conf/httpd.conf|grep -v "#"|grep -v "^$"
ServerRoot "/usr/local/apache"
Listen 80
LoadModule authn_file_module modules/mod_authn_file.so
最好都开启了,打开所有 LoadModule 前面的注释,否则 apache 启动可能报错。
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule ssl_module modules/mod_ssl.so
块功能一定要打开!
#如果使用 https 证书,这个模