Ubuntu 编译安装mysql

自编译安装APACHE2+PHP5+MYSQL5+OPENSSL
 
 
虽然现在有很多很方便的工具可以把整个安装过程傻瓜化,但是总有那么一些不尽人意的地方,比如 说安装之后的一些配置文件在哪,如果要加载一些组件怎么办,。。。等等问题 所以在ubuntu能apt安装环境,XAMPP等傻瓜化软件出来的情况下,我还是首选自己编译安装,虽然有些浪费时间,但是稳定性和易操作易配置性要好 的多。(首先声明 我也是个小菜,而且本贴也非原创,不过是因为自己找了些资料 成功搭建了这个平台,所以拿出来分享下 本人的ubuntu是7.10 apache php mysql openssl皆是目前稳定的最新版)

第一步:编译环境的配置(并不是都需要 不过有些朋友在编译的时候失败了就放弃了 我觉得很可惜)
我用的是官方源 如果有些包找不到请更换cn99源
代码:
sudo apt-get install build-essential flex automake autoconf make gcc g++ libgcc1 libg++ gdb kernel-package libncurses5-dev initramfs-tools module-init-tools binutils bison byacc m4 libxml2 libxml2-dev totem-xine

也 许上面的包有些已经过时了 不过如果你在官方源和cn99源中都找不到 就可以忽略了 不影响编译安装过程 :)

第二步:MYSQL5的 安装
到MYSQL的官方网站下载最新版本的源代码(我这里是mysql-5.0.45.tar.gz)
地 址:http://dev.mysql.com/downloads/mysql/5.0.html 注意是下载源代码 页面往下拉 看到 Source downloads 第一个就是了 Compressed GNU TAR archive (tar.gz) 放到~/MyDownloads
接 下来开始解压配置
代码:
cd ~/MyDownloads
sudo tar xzvf mysql-5.0.45.tar.gz -C /usr/local/src

## 解压出来之后的目录就是mysql-5.0.45
cd /usr/local/src/mysql-5.0.45

## 编译安装到/usr/local/mysql目录下 等待ing
sudo ./configure --prefix=/usr/local/mysql
sudo make
sudo make install

## 安装系统数据库
sudo ./scripts/mysql_install_db

## 以上的当前目录都应该是在/usr/local/src/mysql-5.0.45 接下来为了安全性需要设置 mysql目录的访问权限
## 创建一个名为mysql的用户 组别为mysql 并设置/usr/local/mysql的访问权限(当然你也可以不用mysql的用户名和组名)
groupadd mysql
useradd -g mysql mysql
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql

## 将mysql的配置文件放置在/etc目录 名为my.conf
sudo cp ./support-files/my-medium.cnf /etc/my.conf


至此 我们的mysql5已经安装成功 为了mysql能更好的工作 我们可以设置一些相关配置(视个人情况而定)
sudo gedit /etc/my.conf

# The MySQL server
[mysqld]
下添加
set-variable=max_connections=150 #设置最大连接数为150
query_cache_type=1 # 查询缓存

第一次启动mysql并设置root用户密码
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql&(开启mysql服务)
sudo /usr/local/mysql/bin/mysqladmin -uroot password XXXXXX(你的密码)
/usr/local/mysql/bin/mysql -uroot -pXXXXXX(刚设置的密码 该命令为登录mysql)
sudo /usr/local/mysql/bin/mysqladmin -uroot -pXXXXXX shutdown(关闭mysql服务)

mysql 服务开启后 会有mysqld进程运行 可以通过 ps -e | grep mysqld 查询

第三步:OpenSSL的安装
到 OpenSSL的官网下载最新版的源代码(我的是openssl-0.9.8g.tar.gz)
地 址:http://www.openssl.org/source/ 下载到~/MyDownloads
代码:
## 默认安装/usr/local/ssl
cd ~/MyDownloads
tar xzvf openssl-0.9.8g.tar.gz -C /usr/local/src
cd /usr/local/src/openssl-0.9.8g
sudo ./config
sudo make
sudo make install


第四步:Apache2的安装
到Apache2的官 网下载最新版的源代码(我这里是httpd-2.2.6.tar.bz2)
地址:http://httpd.apache.org /download.cgi 下载到~/MyDownloads (你也可以下载tar.gz的)

代码:
cd ~/MyDownloads
sudo tar xvfj httpd-2.2.6.tar.bz2 -C /usr/local/src
cd /usr/local/src/httpd-2.2.6
## apache2的配置比较麻烦
sudo ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all
## 以上配置的意思是将apache2预安装到/usr/local/apache2 安装之后的apache2能加载模块 将ssl静态编译进apache2 因为在配置过程中需要ssl的头文件 所以需要--with-ssl=/usr/local/ssl提供ssl的安装目录
sudo make
sudo make install


配置apache2
Ctrl+F 搜索 Include conf/extra/httpd-ssl.conf 并去掉前面的#
Ctrl+F 搜索 ServerName 找到一行ServerName XXX.XXX.XXX.XXX 80 的 修改为ServerName localhost:80
如果你80端口已经被占用 需要用其他端口 需要将 Listen 80 一并修改
Ctrl+F 搜索 DocumentRoot 找到一行Document .... /htdocs的 这里可以修改虚拟目录 不过要将下面不远处的
<Directory "XXXXXXX/htdocs">修改为你的虚拟目录路径 否则会出现权限问题

因为将ssl静态编译进了apache2所以在apache2启动之前配置ssl证书和密钥
用到一个配置证书 和密钥小工具 可以在附件中下载 ssl.ca-0.1.tar.gz
解压缩到/usr/local/apache2/conf中
代码:
cd ~/MyDownloads
sudo tar xzvf ssl.ca-0.1.tar.gz -C /usr/local/apache2/conf
cd /usr/local/apache2/conf/ssl.ca-0.1

# 生成根证书(执行成功将在当前目录生成ca.key和ca.crt两个文件)
sudo ./new-root-ca.sh
# 部分注解如下
. . . . . .
Enter pass phrase for ca.key:              (输入一个密码)
Verifying - Enter pass phrase for ca.key:  (再输入一次密码)
. . . . . .
Enter pass phrase for ca.key:              (输入刚刚设置的密码)
. . . . . .
Country Name (2 letter code) [MY]:CN(国家代码)
State or Province Name (full name) [Perak]:Chongqing(州名)
Locality Name (eg, city) [Sitiawan]:Chongqing(城市名)
Organization Name (eg, company) [My Directory Sdn Bhd]:Ostenia(公司或组织名)
Organizational Unit Name (eg, section) [Certification Services Division]:Tech(部门名)
Common Name (eg, MD Root CA) []:Ostenia CA(根证书名)
Email Address []:yiller@yahoo.cn(E-mail地址)

# 生成服务器证书(执行成功将在当前目录生成server.csr和server.key这两个文件)
sudo ./new-server-cert.sh server (server是服务器证书的名字)
. . . . . .
# 英文注释同上

# 签署服务器证书
sudo ./sign-server-cert.sh server (server要和你刚才输入的一样)
Enter pass phrase for ./ca.key:             (输入上面设置的根证书密码)
Sign the certificate? [y/n]:y(签署证书么?废话)
1 out of 1 certificate requests certified, commit? [y/n]y(有1个证书需要被签署 同意么?同上)
# ×××权限并部署
sudo chmod 400 server.key
sudo mv server.key ../
sudo mv server.crt ../

现 在可以运行apache2了
sudo /usr/local/apache2/bin/apachectl start(开启apache服务 2.0以后ssl是随之一起启动的 你可以用http:// 和 https://测试)
sudo /usr/local/apache2/bin/apachectl stop(关闭)
sudo /usr/local/apache2/bin/apachectl restart(重启)
在apache服务开启后 将有httpd进程运行 可以通过 ps -e | grep httpd 查看
但是现在只能浏览html网页 下一步安装php5

最后一步:php5 的安装
下载源代码(我这里是php-5.2.4.tar.gz)
地址:http://www.php.net /downloads.php(目前最新版为5.2.5 可以同样安装)
代码:
cd ~/MyDownloads
sudo tar xzvf php-5.2.4.tar.gz -C /usr/local/src
cd /usr/local/src/php-5.2.4
sudo ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-openssl=/usr/local/ssl --with-mysql=/usr/local/mysql
# 以上配置的意思是 采用apache2布局 支持openssl 支持mysql数据库 php的默认安装目录是/usr/local 如果你需要指定php的安装目录 可以加上 --prefix=/usr/local/php(后面改成你的路径)
sudo make
sudo make install
# 部署php.ini配置文件 当前目录仍是/usr/local/src/php-5.2.4
sudo cp ./php.ini-dist /usr/local/lib/php.ini

现在php也已经装好了 对php的配置在/usr/local/lib/php.ini中
配置apache2以支持.php文件
sudo gedit /usr/local/apache2/conf/httpd.conf
在文件最后添加
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
DirectoryIndex index.php
</IfModule>

OK 大功告成
写个phpinfo测试下
<?php
phpinfo();
?>

 

 

 

 

 

 

 

 

 

一,安装Mysql到sudo make install这一步的时候出现xxx is not in the sudoers file. This incident will be reported的错误,原来是mysql 用户默认没有开启sudo权限,解决方法:
#su -
 #chmod u+w /etc/sudoers
#visudo
在root ALL=(ALL) ALLZ下
添加xxx ALL=(ALL) ALL
 然后按esc键,再输入:wq!保存退出
#chmod u-w /etc/sudoers
问题解决!

 

-------------------

安装mysql-5.1.30时 mysql_install_db出现FATAL ERROR: Could not find mysqld错误解决

 

安装或者重新mysql-5.1.30时mysql_install_db出现FATAL ERROR: Could not find mysqld错误解决,上网搜寻了结果很多,却没有找到解决答案,最后发现安装时/etc/mysql文件夹下有个配置文件my.cnf,而我在安装时运 行了cp support-files/my-medium.cnf /etc/my.cnf,照成这个

解决方法:

mv  /etc/mysql/my.cnf   /etc/mysql/my.cnf.bak

cp  support-files/my-medium.cnf   /etc/cnf