Linux study
在centos5.5中编译LNMP环境
一.配置好ip, dns, 网关, 确保使用远程连接工具能够连接服务器
centos设置ip地址,网关, dns教程: http://www.osyumwei.com/archives/423.html
二.配置防火墙, 开启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端口这条规则的下面 添加好之后防火墙规则如下所示
#########################################################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*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 #最后重启防火墙使配置生效
三.关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq #保存退出
shutdown -r now #重启系统
四.系统约定
软件源代码码包存放位置: /root/src
源码包编译安装的位置: /usr/local/要安装的位置
五.所需的软件包
1.libxml2-2.6.30.tar.gz
2.libmcrypt-2.5.8.tar.gz
3.zlib-1.2.3.tar.gz
4.libpng-1.2.31.tar.gz
5.jpegsrc.v6b.tar.gz
7.freetype-2.3.5.tar.gz
8.autoconf-2.61.tar.gz
9.gd-2.0.35.tar.gz
10.ncurses-5.6.tar.gz
11.pcre-8.34.tar.gz
12.nginx-1.4.7.tar.gzx
13.mysql-5.0.41.tar.gz
14.php-5.2.6-fpm-0.5.9.diff.gz
15.php-5.2.6.tar.gz
16.ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
17.phpMyAdmin-3.0.0-rc1-all-languages.tar.gz
六.解压软件包
tar -zxvf 软件包名字
//为了方便, 可以编写shell脚本自动解压
##shell脚本: extract_soft.sh
SRC_DIR = '/root/src';
FILE_LIST = `ls $SRC_DIR`;
for file in $FILE_LIST
tar -zxvf $file $SRC_DIR -C
done
更改脚本执行限
chmod +x extract_soft.sh
./extract_soft.sh
七.安装软件
1.安装libxml2库文件
cd /root/src/libxml2-2.6.30
./configure --prefix=/usr/local/libxml2/
make
make install
2.安装libmcrypt 库文件
cd /root/src/libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt/
make
make install
3.安装libmcrypt库下的libltdl
cd /root/src/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make
make install
4.安装zlib 库文件
cd /root/src/zlib-1.2.3
./configure 不要指定安装路径,否则安装libpng时会出错。安装到默认位置。
make 可以定义下 安装日志。make install > /test/backup/zlib_20111218.install.log
make install
5.安装 libpng 库文件
cd /root/src/libpng-1.2.31
./configure --prefix=/usr/local/libpng/
make
make install
6.安装jpeg6 库文件
mkdir /usr/local/jpeg6 //jpeg6软件安装目录
mkdir /usr/local/jpeg6/bin //存放命令的目录
mkdir /usr/local/jpeg6/lib //jpeg6库文件所在目录
mkdir /usr/local/jpeg6/include //存放头文件目录
mkdir -p /usr/local/jpeg6/man/man1 //存放手册目录 -p是创建连续的目录
cd /root/src/jpeg-6b
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
make
make install
7.安装freetype 库文件
cd /root/src/freetype-2.3.5
./configure --prefix=/usr/local/freetype/
make
make install
8.安装autoconf 库文件
cd /root/src/autoconf-2.61
./configure //不要指定目录
make
make install
9.安装GD库文件
cd /root/src/gd-2.0.35 //zlib没有指定安装目录,所以安装GD2不需要指定zlib的位置
./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/
make
make install
10.安装pcre库
cd /root/src
mkdir /usr/local/pcre #创建安装目录
tar zxvf pcre-8.31.tar.gz
cd pcre-8.31
./configure --prefix=/usr/local/pcre #配置
make
make install
11.安装nginx软件
cd /root/src/nginx-1.4.7
groupadd www #添加www组
useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统
tar zxvf nginx-1.2.3.tar.gz
cd nginx-1.2.3
./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.31
注意:--with-pcre=/usr/local/src/pcre-8.31指向的是源码包解压的路径,而不是安装的路径,否则会报错
make
make install
/usr/local/nginx/sbin/nginx #启动nginx
12.安装mysql数据库的关联软件
cd /root/src/ncurses-5.6 //这个一定要先安装,否则安装mysql会出错
./configure --with-shared --without-debug --without-ada --enable-overwrite
make
make install
13.安装mysql数据库
groupadd mysql /添加一个mysql标准组
useradd -g mysql mysql //添加mysql用户并加到mysql组中
cd /root/src/mysql-5.0.41
./configure --prefix=/usr/local/mysql/ --with-extra-charsets=all
make
make install
设置mysql
cp support-files/my-medium.cnf /etc/my.cnf //拷贝配置文件
/usr/local/mysql/bin/mysql_install_db --user=mysql //以mysql用户的身份建立数据表(多一个var目录)
chown -R root /usr/local/mysql //将mysql的主目录(即/usr/local/mysql)的属主设为root用户
chown -R mysql /usr/local/mysql/var //将var目录的属主设为mysql用户
chgrp -R mysql /usr/local/mysql //将mysql的主目录的属主设为mysql用户组
/usr/local/mysql/bin/mysqld_safe --user=mysql & //启动mysql
cp /lamp/mysql-5.0.41/support-files/mysql.server /etc/rc.d/init.d/mysqld //将mysql.server这个文件copy到/etc/init.d/目录下,并更名为mysqld
chown root.root /etc/rc.d/init.d/mysqld //将mysqld的属主设置为root
chmod 755 /etc/rc.d/init.d/mysqld //给/etc/init.d/mysqld这个文件赋予“执行”权限
chkconfig --add mysqld //加入到开机自动运行
chkconfig --list mysqld
chkconfig --levels 245 mysqld off //运行级别为2 4 5
2、为nginx脚本添加权限
chmod a+x /etc/init.d/nginx
3、添加nginx服务
chkconfig --add nginx
chkconfig nginx on
4、测试
service nginx start
service nginx stop
service nginx reload
14.安装php
首先解压php-5.2.6.tar.gz
tar –zxvf php-5.2.17.tar.gz
gzip -cd hp-5.2.6-fpm-0.5.9.diff.gz | patch -d php-5.2.6 -p1 //给php2.6打补丁
cd
cd /root/src/php-5.2.6
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --enable-fastcgi --enable-fpm
make
make install
cp php.ini-dist /usr/local/php/etc/php.ini // 拷贝php配置文件到/usr/local/php/etc/下 并命名为php.ini
echo "Addtype application/x-httpd-php .php .phtml" >> /etc/httpd/httpd.conf //作用是 让apache解析php
/usr/local/apache2/bin/apachectl restart //重启apache
安装时出现的错误:
libltdl.so.3: cannot open shared object file: No such file or directory
libltdl其实已经安装了,后来我又重新安装一次,还是出现这个问题,后来在网是找到这个方法
网上找到的解决方法:
ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3
14.配置Nginx支持php
-配置php-fpm
Nginx+PHP需要 PHP生成可执行文件才可以,所以要利用fastcgi技术来实现Nginx与PHP的整合,这个只要我们安装是启用FastCGI即可.这里,我们用php-fpm来管理FastCGI(php-fpm已以补丁的形式加入到PHP中).
编辑配置文件:
vim php-fpm.conf
找到如下代码:
Unix user of processes
<value name="user">nobody</value>
Unix group of processes
<value name="group">nobody</value>
为FastCGI指定用户,可使用默认的nobody,也可另行指定.
启动php-cgi进程
/usr/local/php5/sbin/php-fpm start
-配置nginx
#配置nginx支持PHP(在其中一个虚拟主机下面如下配置)
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
重启Nginx进程
/usr/local/nginx/sbin/nginx -s reload
15.配置mysql
cd /usr/local/mysql
bin/mysqladmin version //简单的测试
bin/mysqladmin varibles //查看所有mysql参数
bin/mysql -u root //没有密码可以直接登录本机服务器
#查看授权表的所有用户
#mysql> select * from mysql.user \G;
#删除除localhost之外的所有用户(提高安全性)
#mysql>delete from mysql.user where host!='localhost';
#修改root用户的密码,这里的root用户指的是mysql的root用户,与Linux的root用户无关
#mysql>set password for 'root'@'localhost'=password('123456');
#刷新权限
#mysql> FLUSH PRIVILEGES;
16.安装zend加速器
这个软件不是源代码,是二进制的bin文件 只需执行./install.sh即可
然后根据提示安装
如果./install.sh不能安装就用 ./install-tty安装
这里需要填写配置文件的地址
php:/usr/local/php/etc/
Nginx:自动锁定
17.安装phpadmin
将解压的源码包拷贝到存放网站的目录下,并重命名为phpmyadmin
[root@feng soft]# cp -a phpMyAdmin-3.0.0-rc1-all-languages /web/phpmyadmin
建立配置文件
[root@feng phpmyadmin]# cp config.sample.inc.php config.inc.php
打开配置文件
[root@feng phpmyadmin]# vi ./config.inc.php
编辑配置文件,将cookie改为http
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
重启nginx
/usr/local/nginx/sbin/nginx -s reload
Linux study的更多相关文章
- 我的Linux书架
原文地址www.cnblogs.com/wwang/archive/2011/01/27/1944406.html 工作几年来,一直从事Linux内核驱动方面的开发.从接触Linux到现在,读过不少L ...
- linux学习过程中所需要看的一些书籍
入门类 一直认为,在一个系统上学习开发之前,首先需要熟悉这个系统的使用.鉴于天朝的国情,绝大部分人第一个接触的操作系统就是Windows,因此对于这绝大部分人来说,如果要学习Linux开发,学会使用这 ...
- Linux命令(十五) 打包或解压文件 tar
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 tar 命令用于将文件打包或解压,扩展名一般为 ".tar" ,指定特定的参数可以调用 gzip 或 bzi ...
- Linux 生产实习01
Linux 生产实习01 标签(空格分隔): Linux 2018.07.02 相关软件下载地址:Linux Study 0x01. 安装 VMware Workstation VMware Work ...
- Linux入门进阶第四天(下)——程序管理(补充内容)
1.PID 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置. 同一个程序 ...
- Linux学习-以最新核心版本编译 CentOS 7.x 的核心
为了某些缘故需要最新的 4.x.y 的核心版本来实作某些特定的功能时,那该 如何是好?没办法,只好使用最新的核心版本来编译你可以依照上面的程序来一个一个处理, 没有问题~不过,你也可以根据 ELRep ...
- Linux学习-核心的编译与安装
编译核心与核心模块 核心与核心模块需要先编译起来,而编译的过程其实非常简单,你可以先使用『 make help 』去查 阅一下所有可用编译参数, 就会知道有底下这些基本功能: [root@study ...
- Linux学习-X Server 配置文件解析与设定
X server 的配置 文件都是预设放置在 /etc/X11 目录下,而相关的显示模块或上面提到的总总模块,则主要放置在/usr/lib64/xorg/modules . 比较重要的是字型文件与芯片 ...
- Linux学习-进程管理
为什么进程管理这么重要呢? 这是因为: 首先,我们在操作系统时的各项工作其实都是经过某个 PID 来达成的 (包括你的 bash 环境), 因此,能不能进行某项工作,就与该进程的权限有关了. 再来,如 ...
随机推荐
- 集成一体化的移动POS开单扫描解决方案--"移动开单掌上POS"。它集后台管理软件
针对商贸企业的批发.零售管理设计的软硬件集成一体化的移动POS开单扫描解决方案--"移动开单掌上POS".它集后台管理软件.商品价格.库存等信息查询,店铺.展销会开单,移动捡货配送 ...
- [bzoj4726]Sabota
做的题太少,什么都要看题解.. 题意只给出一个叛徒,则他一定是叶子结点(最坏情况下),那么"带头反叛"的点一定构成了一条链. 令f[u]表示u不带头反叛的最小值,则考虑它的每一支儿 ...
- 使用Android Butterknife
我之前浏览过android butterknife 的使用 在android studio 中,很惊喜,已经成为一个插件来使用 这个android butterknife 最大的用处,就是直接生成la ...
- Codeforces CF#628 Education 8 E. Zbazi in Zeydabad
E. Zbazi in Zeydabad time limit per test 5 seconds memory limit per test 512 megabytes input standar ...
- bzoj4491奇技淫巧线段树
20行的归并+10行的线段树(现在线段树真是越写越短了)+10行主程序(连主程序都缩过行) = =丧心病狂 struct里连开10个,用大括号直接初始化真是爽翻了 #include <cstd ...
- C#输出文本树形层次,前或者后自定义空格位数
Indent String with Spaces This example shows how to indent strings using method for padding in C#. T ...
- sql 存储过程 output参数的使用
/*嵌套存储过程中需要输出来的参数*/output 就是这个存储过程返回的值 也可以说输出的值--创建存储过程 求最大值CREATE PROCEDURE [dbo].[P_Max]@a int, -- ...
- Flask 重新认识
总是觉的学习东西有点猴子掰玉米的感觉.今天就重新再掰一次吧. Installation: 安装之前建议先安装virtualenv,这个东东是帮助你在多个python版本之间保持同步,不至于python ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- initWithCoder与initWithFrame的区别
1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方 ...